Compare commits
26 Commits
1.1.0
...
781431f633
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
781431f633 | ||
|
|
e02f98e6c5 | ||
|
|
7898e2149f | ||
|
|
3c41d7ff39 | ||
|
|
ab0f37b7ba | ||
|
|
343d61a976 | ||
|
|
804e72395b | ||
|
|
e8e6120a9e | ||
|
|
b0dfcdcae6 | ||
|
|
920212d1b8 | ||
|
|
b7e123a7cf | ||
|
|
ce7f35ac7b | ||
|
|
a090f95659 | ||
|
|
9cbc202b62 | ||
|
|
2ee7be56fc | ||
|
|
fe5c936c7c | ||
|
|
afa0f95072 | ||
|
|
ead6a30aa5 | ||
|
|
d532ac2f4a | ||
|
|
71ebc09270 | ||
|
|
0fef82981a | ||
|
|
7d45a5cf66 | ||
|
|
5af2fdc51e | ||
|
|
bff1da4330 | ||
|
|
0dba4601fc | ||
|
|
e30e5107c6 |
@@ -50,7 +50,6 @@ dw !ROM_VERSION_HIGH
|
|||||||
function hexto555(h) = ((((h&$FF)/8)<<10)|(((h>>8&$FF)/8)<<5)|(((h>>16&$FF)/8)<<0))
|
function hexto555(h) = ((((h&$FF)/8)<<10)|(((h>>8&$FF)/8)<<5)|(((h>>16&$FF)/8)<<0))
|
||||||
|
|
||||||
; Feature flags, run asar with -DFEATURE_X=1 to enable
|
; Feature flags, run asar with -DFEATURE_X=1 to enable
|
||||||
!FEATURE_FIX_BASEROM ?= 0
|
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|
||||||
@@ -74,6 +73,8 @@ function hexto555(h) = ((((h&$FF)/8)<<10)|(((h>>8&$FF)/8)<<5)|(((h>>16&$FF)/8)<<
|
|||||||
!FLAG_OW_MIXED = $04
|
!FLAG_OW_MIXED = $04
|
||||||
!FLAG_OW_CROSSED = $02
|
!FLAG_OW_CROSSED = $02
|
||||||
!FLAG_OW_BONKDROP = $02
|
!FLAG_OW_BONKDROP = $02
|
||||||
|
!FLAG_OW_CUSTOM_MAP = $02
|
||||||
|
!FLAG_OW_ADJUST_DYNAMIC_MAP_SPRITE_POSITION = $04
|
||||||
|
|
||||||
incsrc hooks.asm
|
incsrc hooks.asm
|
||||||
incsrc spriteswap.asm
|
incsrc spriteswap.asm
|
||||||
@@ -179,7 +180,7 @@ incsrc toast.asm
|
|||||||
incsrc fastcredits.asm
|
incsrc fastcredits.asm
|
||||||
incsrc msu.asm
|
incsrc msu.asm
|
||||||
incsrc menu/overworldmap.asm ; Overwrites some code in bank $8A
|
incsrc menu/overworldmap.asm ; Overwrites some code in bank $8A
|
||||||
incsrc bossicons.asm
|
incsrc dungeonmap.asm
|
||||||
incsrc hextodec.asm
|
incsrc hextodec.asm
|
||||||
incsrc multiworld.asm
|
incsrc multiworld.asm
|
||||||
incsrc textrenderer.asm
|
incsrc textrenderer.asm
|
||||||
@@ -202,24 +203,6 @@ incsrc inventory.asm
|
|||||||
incsrc menu/hudalpha.asm
|
incsrc menu/hudalpha.asm
|
||||||
warnpc $A38000
|
warnpc $A38000
|
||||||
|
|
||||||
org $B98000
|
|
||||||
incsrc gk/crystalswitchbook.asm
|
|
||||||
incsrc gk/mimicdash.asm
|
|
||||||
incsrc gk/gloom.asm
|
|
||||||
incsrc gk/special_weapons.asm
|
|
||||||
incsrc gk/variable_ganon_vulnerability.asm
|
|
||||||
incsrc gk/pseudoflute.asm
|
|
||||||
incsrc gk/fast_junk.asm
|
|
||||||
incsrc gk/dungeon_maps.asm
|
|
||||||
print "End of B9: ", pc
|
|
||||||
|
|
||||||
warnpc $B9EE00
|
|
||||||
org $B9EE00
|
|
||||||
incsrc gk_meta.asm
|
|
||||||
|
|
||||||
org $B9F000
|
|
||||||
incsrc gk/settings.asm
|
|
||||||
|
|
||||||
org $A38000
|
org $A38000
|
||||||
incsrc stats/credits.asm ; Statically mapped
|
incsrc stats/credits.asm ; Statically mapped
|
||||||
incsrc stats/main.asm
|
incsrc stats/main.asm
|
||||||
@@ -262,7 +245,7 @@ warnpc $B1A000
|
|||||||
|
|
||||||
org $B1A000
|
org $B1A000
|
||||||
GFX_HUD_Items:
|
GFX_HUD_Items:
|
||||||
incbin "menu/dr_sheet_dc.2bppc"
|
incbin "menu/drsheetdc.2bppc"
|
||||||
warnpc $B1A800
|
warnpc $B1A800
|
||||||
|
|
||||||
org $B1A800
|
org $B1A800
|
||||||
@@ -315,24 +298,6 @@ NewFontInverted:
|
|||||||
incbin "data/newfont_inverted.bin"
|
incbin "data/newfont_inverted.bin"
|
||||||
SmallCharacters:
|
SmallCharacters:
|
||||||
incbin "data/smallchars.2bpp"
|
incbin "data/smallchars.2bpp"
|
||||||
|
|
||||||
DungeonMapIcons1:
|
|
||||||
incbin "menu/map_icons_1.3bppc"
|
|
||||||
DungeonMapIcons2:
|
|
||||||
incbin "menu/map_icons_2.3bppc"
|
|
||||||
DungeonMapIcons3:
|
|
||||||
incbin "menu/map_icons_3.3bppc"
|
|
||||||
DungeonMapIcons4:
|
|
||||||
incbin "menu/map_icons_4.3bppc"
|
|
||||||
DungeonMapIcons5:
|
|
||||||
incbin "menu/map_icons_5.3bppc"
|
|
||||||
DungeonMapIcons6:
|
|
||||||
incbin "menu/map_icons_6.3bppc"
|
|
||||||
DungeonMapDoorConnectors:
|
|
||||||
incbin "menu/door_connectors.3bppc"
|
|
||||||
MapSheetD4:
|
|
||||||
incbin "menu/map_sheet_d4.3bppc"
|
|
||||||
|
|
||||||
org $8CD7DF
|
org $8CD7DF
|
||||||
incsrc data/playernamecharmap.asm
|
incsrc data/playernamecharmap.asm
|
||||||
org $8CE73D
|
org $8CE73D
|
||||||
@@ -390,7 +355,6 @@ warnpc $B08000
|
|||||||
;$33 Graphics Bank
|
;$33 Graphics Bank
|
||||||
;$36 reserved for Enemizer
|
;$36 reserved for Enemizer
|
||||||
;$37 Room data if needed for DR/Pottery/Enemizer
|
;$37 Room data if needed for DR/Pottery/Enemizer
|
||||||
;$39 GwaaKiwi Code Bank
|
|
||||||
;$3A reserved for downstream use
|
;$3A reserved for downstream use
|
||||||
;$3B reserved for downstream use
|
;$3B reserved for downstream use
|
||||||
;$3F reserved for internal debugging
|
;$3F reserved for internal debugging
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -1,249 +0,0 @@
|
|||||||
#include <stdio.h>
|
|
||||||
#include <stddef.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
|
|
||||||
const int MAXLENGTH = 0x300;
|
|
||||||
|
|
||||||
struct section {
|
|
||||||
int mode;
|
|
||||||
int length;
|
|
||||||
unsigned char data[2];
|
|
||||||
int datalength;
|
|
||||||
};
|
|
||||||
|
|
||||||
int find_duplicate(off_t loc, off_t size, unsigned char buf[], struct section *out) {
|
|
||||||
int i, j;
|
|
||||||
struct section result;
|
|
||||||
result.mode = 4;
|
|
||||||
result.length = 0;
|
|
||||||
for (i = 0; i < loc && i < 0x10000; i++) {
|
|
||||||
if (buf[i] != buf[loc]) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
for (j = 0; j < MAXLENGTH; j++) {
|
|
||||||
if (buf[i + j] != buf[loc + j]) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (j > result.length) {
|
|
||||||
result.length = j;
|
|
||||||
result.data[0] = i & 0xFF;
|
|
||||||
result.data[1] = (i >> 8) & 0xFF;
|
|
||||||
result.datalength = 2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (result.length < 4) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
*out = result;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int find_repeat_byte(off_t loc, off_t size, unsigned char buf[], struct section *out) {
|
|
||||||
int i;
|
|
||||||
for (i = 0; i < MAXLENGTH && loc + i < size; i++) {
|
|
||||||
if (buf[loc + i] != buf[loc]) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (i > 2) {
|
|
||||||
struct section result;
|
|
||||||
result.mode = 1;
|
|
||||||
result.length = i;
|
|
||||||
result.data[0] = buf[loc];
|
|
||||||
result.datalength = 1;
|
|
||||||
*out = result;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int find_repeat_word(off_t loc, off_t size, unsigned char buf[], struct section *out) {
|
|
||||||
int i;
|
|
||||||
for (i = 0; i < MAXLENGTH && loc + i + 1 < size; i += 1) {
|
|
||||||
if (buf[loc + i] != buf[loc + (i & 1)]) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (i > 3) {
|
|
||||||
struct section result;
|
|
||||||
result.mode = 2;
|
|
||||||
result.length = i;
|
|
||||||
result.data[0] = buf[loc];
|
|
||||||
result.data[1] = buf[loc + 1];
|
|
||||||
result.datalength = 2;
|
|
||||||
*out = result;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int find_incrementing_byte(off_t loc, off_t size, unsigned char buf[], struct section *out) {
|
|
||||||
int i;
|
|
||||||
for (i = 0; i < MAXLENGTH && loc + i < size; i++) {
|
|
||||||
if (buf[loc] + i < i) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (buf[loc + i] != buf[loc] + i) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (i > 2) {
|
|
||||||
struct section result;
|
|
||||||
result.mode = 3;
|
|
||||||
result.length = i;
|
|
||||||
result.data[0] = buf[loc];
|
|
||||||
result.datalength = 1;
|
|
||||||
*out = result;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int get_section(off_t loc, off_t size, unsigned char buf[], struct section *out) {
|
|
||||||
struct section best, current;
|
|
||||||
best.length = 0;
|
|
||||||
if (!find_repeat_byte(loc, size, buf, ¤t)) {
|
|
||||||
if (current.length > best.length) {
|
|
||||||
best = current;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!find_repeat_word(loc, size, buf, ¤t)) {
|
|
||||||
if (current.length > best.length) {
|
|
||||||
best = current;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!find_incrementing_byte(loc, size, buf, ¤t)) {
|
|
||||||
if (current.length > best.length) {
|
|
||||||
best = current;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!find_duplicate(loc, size, buf, ¤t)) {
|
|
||||||
if (current.length > best.length) {
|
|
||||||
best = current;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (best.length > 0) {
|
|
||||||
// printf("byte %06X: mode %d length %02X\n", loc, best.mode, best.length);
|
|
||||||
*out = best;
|
|
||||||
return 0;
|
|
||||||
} else {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int write_section(struct section section, unsigned char data[], unsigned char buf[], int loc) {
|
|
||||||
int nloc = loc;
|
|
||||||
int len = section.length - 1;
|
|
||||||
if (len > 0x1F) {
|
|
||||||
buf[nloc++] = 0xE0 | (section.mode << 2) | (len >> 8);
|
|
||||||
buf[nloc++] = len & 0xFF;
|
|
||||||
} else {
|
|
||||||
buf[nloc++] = (section.mode << 5) | len;
|
|
||||||
}
|
|
||||||
for (int i = 0; i < section.datalength; i++) {
|
|
||||||
buf[nloc++] = data[i];
|
|
||||||
}
|
|
||||||
return nloc;
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
|
||||||
if (argc < 3) {
|
|
||||||
printf("Usage: %s infile outfile [start [length]]\n", argv[0]);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
off_t seek = 0;
|
|
||||||
if (argc > 3) {
|
|
||||||
seek = strtol(argv[3], NULL, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
FILE *inptr;
|
|
||||||
if ((inptr = fopen(argv[1], "rb")) == NULL) {
|
|
||||||
printf("%s does not exist.\n", argv[1]);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int fd = fileno(inptr);
|
|
||||||
if (fd < 0) {
|
|
||||||
printf("Error stating file: %s\n", argv[1]);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct stat buf;
|
|
||||||
if (fstat(fd, &buf) != 0) {
|
|
||||||
printf("Error stating file: %s\n", argv[1]);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
off_t size = buf.st_size - seek;
|
|
||||||
|
|
||||||
if (argc > 4) {
|
|
||||||
size = strtol(argv[4], NULL, 0);
|
|
||||||
}
|
|
||||||
unsigned char inbuf[size];
|
|
||||||
|
|
||||||
fseek(inptr, seek, SEEK_SET);
|
|
||||||
|
|
||||||
if (fread(inbuf, 1, size, inptr) < size) {
|
|
||||||
printf("Error reading file: %s\n", argv[1]);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
fclose(inptr);
|
|
||||||
|
|
||||||
unsigned char outbuf[size * 2];
|
|
||||||
unsigned char m0data[MAXLENGTH];
|
|
||||||
|
|
||||||
int oloc = 0;
|
|
||||||
struct section m0;
|
|
||||||
m0.mode = 0;
|
|
||||||
m0.length = 0;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
off_t loc = 0;
|
|
||||||
while (loc < size) {
|
|
||||||
struct section section;
|
|
||||||
if (!get_section(loc, size, inbuf, §ion)) {
|
|
||||||
if (m0.length > 0) {
|
|
||||||
m0.datalength = m0.length;
|
|
||||||
oloc = write_section(m0, m0data, outbuf, oloc);
|
|
||||||
m0.length = 0;
|
|
||||||
}
|
|
||||||
oloc = write_section(section, section.data, outbuf, oloc);
|
|
||||||
loc += section.length;
|
|
||||||
} else {
|
|
||||||
if (m0.length == MAXLENGTH) {
|
|
||||||
m0.datalength = m0.length;
|
|
||||||
oloc = write_section(m0, m0data, outbuf, oloc);
|
|
||||||
m0.length = 0;
|
|
||||||
}
|
|
||||||
m0data[m0.length++] = inbuf[loc];
|
|
||||||
loc += 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (m0.length > 0) {
|
|
||||||
m0.datalength = m0.length;
|
|
||||||
oloc = write_section(m0, m0data, outbuf, oloc);
|
|
||||||
m0.length = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
outbuf[oloc++] = 0xFF;
|
|
||||||
|
|
||||||
FILE *outptr;
|
|
||||||
if ((outptr = fopen(argv[2], "wb")) == NULL) {
|
|
||||||
printf("Error opening file: %s\n", argv[2]);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fwrite(outbuf, 1, oloc, outptr) < oloc) {
|
|
||||||
printf("Error writing to file: %s\n", argv[2]);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
fclose(outptr);
|
|
||||||
printf("Input file: %lX bytes. Compressed: %X bytes.\n", size, oloc);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
@@ -1,155 +0,0 @@
|
|||||||
#include <stdio.h>
|
|
||||||
#include <stddef.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
|
|
||||||
struct section {
|
|
||||||
int mode;
|
|
||||||
int length;
|
|
||||||
unsigned char data[2];
|
|
||||||
int datalength;
|
|
||||||
};
|
|
||||||
|
|
||||||
int read_section(unsigned char buf[], int loc, struct section *out) {
|
|
||||||
int nloc = loc;
|
|
||||||
unsigned char header = buf[nloc++];
|
|
||||||
|
|
||||||
if (header == 0xFF) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct section result;
|
|
||||||
result.data[0] = buf[loc];
|
|
||||||
result.datalength = 1;
|
|
||||||
|
|
||||||
if ((header & 0xE0) == 0xE0) {
|
|
||||||
result.mode = (header & 0x1C) >> 2;
|
|
||||||
result.length = (((header & 0x03) << 8) | buf[nloc++]) + 1;
|
|
||||||
} else {
|
|
||||||
result.mode = (header & 0xE0) >> 5;
|
|
||||||
result.length = (header & 0x1F) + 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (result.mode) {
|
|
||||||
case 0:
|
|
||||||
result.datalength = 0;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
result.datalength = 1;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
result.datalength = 2;
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
result.datalength = 1;
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
result.datalength = 2;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i < result.datalength; i++) {
|
|
||||||
result.data[i] = buf[nloc++];
|
|
||||||
}
|
|
||||||
|
|
||||||
*out = result;
|
|
||||||
return nloc;
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
|
||||||
if (argc < 3) {
|
|
||||||
printf("Usage: %s infile outfile [start [length]]\n", argv[0]);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
off_t seek = 0;
|
|
||||||
if (argc > 3) {
|
|
||||||
seek = strtol(argv[3], NULL, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
FILE *inptr;
|
|
||||||
if ((inptr = fopen(argv[1], "rb")) == NULL) {
|
|
||||||
printf("%s does not exist.\n", argv[1]);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int fd = fileno(inptr);
|
|
||||||
if (fd < 0) {
|
|
||||||
printf("Error stating file: %s\n", argv[1]);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct stat buf;
|
|
||||||
if (fstat(fd, &buf) != 0) {
|
|
||||||
printf("Error stating file: %s\n", argv[1]);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
off_t size = buf.st_size - seek;
|
|
||||||
|
|
||||||
if (argc > 4) {
|
|
||||||
size = strtol(argv[4], NULL, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
fseek(inptr, seek, SEEK_SET);
|
|
||||||
unsigned char inbuf[size];
|
|
||||||
|
|
||||||
if (fread(inbuf, 1, size, inptr) < size) {
|
|
||||||
printf("Error reading file: %s\n", argv[1]);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
fclose(inptr);
|
|
||||||
|
|
||||||
unsigned char outbuf[size * 256];
|
|
||||||
|
|
||||||
int oloc = 0;
|
|
||||||
struct section section;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
off_t loc = 0;
|
|
||||||
|
|
||||||
while ((loc = read_section(inbuf, loc, §ion)) >= 0) {
|
|
||||||
if (section.mode == 0) {
|
|
||||||
for (i = 0; i < section.length; i++) {
|
|
||||||
outbuf[oloc++] = inbuf[loc++];
|
|
||||||
}
|
|
||||||
} else if (section.mode == 1) {
|
|
||||||
for (i = 0; i < section.length; i++) {
|
|
||||||
outbuf[oloc++] = section.data[0];
|
|
||||||
}
|
|
||||||
} else if (section.mode == 2) {
|
|
||||||
for (i = 0; i < section.length; i++) {
|
|
||||||
outbuf[oloc++] = section.data[0];
|
|
||||||
if (++i < section.length) {
|
|
||||||
outbuf[oloc++] = section.data[1];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (section.mode == 3) {
|
|
||||||
for (i = 0; i < section.length; i++) {
|
|
||||||
outbuf[oloc++] = (section.data[0] + i) & 0xff;
|
|
||||||
}
|
|
||||||
} else if (section.mode == 4) {
|
|
||||||
int offset = section.data[0] | (section.data[1] << 8);
|
|
||||||
for (i = 0; i < section.length; i++) {
|
|
||||||
outbuf[oloc++] = outbuf[offset + i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
FILE *outptr;
|
|
||||||
if ((outptr = fopen(argv[2], "wb")) == NULL) {
|
|
||||||
printf("Error opening file: %s\n", argv[2]);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fwrite(outbuf, 1, oloc, outptr) < oloc) {
|
|
||||||
printf("Error writing to file: %s\n", argv[2]);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
fclose(outptr);
|
|
||||||
printf("Input file: %lX bytes. Decompressed: %X bytes.\n", size, oloc);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
Binary file not shown.
Binary file not shown.
26
boots.asm
26
boots.asm
@@ -28,16 +28,19 @@ AddBonkTremors:
|
|||||||
JSL AddDashTremor : JSL Player_ApplyRumbleToSprites ; things we wrote over
|
JSL AddDashTremor : JSL Player_ApplyRumbleToSprites ; things we wrote over
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
BonkBreakableWall:
|
ValidDashCheck:
|
||||||
PHX : PHP
|
PHP
|
||||||
SEP #$30 ; set 8-bit accumulator and index registers
|
SEP #$20
|
||||||
LDA.l BootsModifier : CMP.b #$01 : BEQ +
|
LDA.l BootsModifier : CMP.b #$01 : BEQ +
|
||||||
LDA.l BootsEquipment : BNE + ; Check for Boots
|
LDA.l BootsEquipment : BEQ .exit
|
||||||
PLP : PLX : LDA.w #$0000 : RTL
|
+ LDA.w LinkDashing
|
||||||
+
|
.exit
|
||||||
PLP : PLX
|
BEQ +
|
||||||
LDA.w LinkDashing : AND.w #$00FF ; things we wrote over
|
PLP : REP #$02
|
||||||
RTL
|
RTL
|
||||||
|
+
|
||||||
|
PLP : SEP #$02
|
||||||
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
BonkRockPile:
|
BonkRockPile:
|
||||||
LDA.l BootsModifier : CMP.b #$01 : BEQ +
|
LDA.l BootsModifier : CMP.b #$01 : BEQ +
|
||||||
@@ -48,10 +51,7 @@ BonkRockPile:
|
|||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
GravestoneHook:
|
GravestoneHook:
|
||||||
LDA.l BootsModifier : CMP.b #$01 : BEQ +
|
JSL ValidDashCheck : BEQ .done ; things we wrote over
|
||||||
LDA.l BootsEquipment : BEQ .done ; Check for Boots
|
|
||||||
+
|
|
||||||
LDA.w LinkDashing : BEQ .done ; things we wrote over
|
|
||||||
JML moveGravestone
|
JML moveGravestone
|
||||||
.done
|
.done
|
||||||
JML GravestoneHook_continue
|
JML GravestoneHook_continue
|
||||||
|
|||||||
19
bugfixes.asm
19
bugfixes.asm
@@ -238,6 +238,18 @@ FixJingleGlitch:
|
|||||||
.exit
|
.exit
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
FixSwimBump:
|
||||||
|
LDA.b LinkIncapacitatedTimer : BEQ .normal
|
||||||
|
LDA.b LinkJumping : BNE .normal
|
||||||
|
INC.b LinkJumping
|
||||||
|
BRA .not_diving
|
||||||
|
.normal
|
||||||
|
LDA.b LinkJumping : BNE .continue ; what we wrote over
|
||||||
|
.not_diving
|
||||||
|
PLA : PLA : PEA.w $87964E ; skip ahead, not diving
|
||||||
|
.continue
|
||||||
|
RTL
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
; Fix spawning with more hearts than capacity when less than 3 heart containers
|
; Fix spawning with more hearts than capacity when less than 3 heart containers
|
||||||
pushpc
|
pushpc
|
||||||
org $09F4AC ; <- module_death.asm:331
|
org $09F4AC ; <- module_death.asm:331
|
||||||
@@ -278,3 +290,10 @@ ParadoxCaveGfxFix:
|
|||||||
LDX.w #$00C0 : STX.w DAS0L
|
LDX.w #$00C0 : STX.w DAS0L
|
||||||
BRA .uploadLine
|
BRA .uploadLine
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
SetItemRiseTimer:
|
||||||
|
LDA.w ItemReceiptMethod : CMP.b #$01 : BNE .not_from_chest
|
||||||
|
LDA.b #$38 : STA.w AncillaTimer, X
|
||||||
|
RTL
|
||||||
|
.not_from_chest
|
||||||
|
TYA : STA.w AncillaTimer, X ; What we wrote over
|
||||||
|
RTL
|
||||||
|
|||||||
BIN
data/c2e3e.bin
BIN
data/c2e3e.bin
Binary file not shown.
BIN
data/c2e3e.gfx
BIN
data/c2e3e.gfx
Binary file not shown.
BIN
data/skull.bin
BIN
data/skull.bin
Binary file not shown.
80
dialog.asm
80
dialog.asm
@@ -284,68 +284,28 @@ RTL
|
|||||||
; s = silver arrow bow
|
; s = silver arrow bow
|
||||||
; p = 2nd progressive bow
|
; p = 2nd progressive bow
|
||||||
DialogGanon2:
|
DialogGanon2:
|
||||||
LDA.b #$01 : JSL CheckConditionPass
|
LDA.b #$01 : JSL CheckConditionPass
|
||||||
|
|
||||||
REP #$20
|
REP #$20
|
||||||
BCS +
|
BCS +
|
||||||
LDA.w #$018D : JMP .done
|
LDA.w #$018D : BRA ++
|
||||||
+
|
+
|
||||||
LDA.l GanonVulnerabilityItem : AND.w #$00FF
|
LDA.l BowTracking
|
||||||
BEQ .silver_arrows
|
|
||||||
CMP.w #$0001 : BEQ .silver_arrows
|
|
||||||
CMP.w #$0004 : BEQ .bombs
|
|
||||||
CMP.w #$0005 : BEQ .powder
|
|
||||||
CMP.w #$0010 : BEQ .bee
|
|
||||||
|
|
||||||
PHX : TAX
|
BIT.w #$0080 : BNE + ; branch if bow
|
||||||
LDA.l EquipmentWRAM-1, X
|
LDA.w #$0192 : BRA ++
|
||||||
PLX
|
+
|
||||||
AND.w #$00FF : BNE .have
|
BIT.w #$0040 : BEQ + ; branch if no silvers
|
||||||
BRA .dont_have
|
LDA.w #$0195 : BRA ++
|
||||||
|
+
|
||||||
.silver_arrows
|
BIT.w #$0020 : BNE + ; branch if p bow
|
||||||
LDA.l BowTracking
|
LDA.w #$0194 : BRA ++
|
||||||
|
+
|
||||||
BIT.w #$0080 : BEQ .dont_have ; no bow
|
LDA.w #$0193 : BRA ++
|
||||||
BIT.w #$0040 : BNE .have ; have silvers
|
++
|
||||||
|
STA.w TextID
|
||||||
BIT.w #$0020 : BNE +
|
SEP #$20
|
||||||
LDA.w #$0194 : BRA .done ; have p bow
|
JSL Sprite_ShowMessageMinimal_Alt
|
||||||
+ LDA.w #$0193 : BRA .done ; don't have p bow
|
|
||||||
|
|
||||||
.dont_have
|
|
||||||
LDA.w #$0192 : BRA .done
|
|
||||||
.have
|
|
||||||
LDA.w #$0195 : BRA .done
|
|
||||||
|
|
||||||
.bombs
|
|
||||||
LDA.l BombsEquipment : AND.w #$00FF : BNE .have
|
|
||||||
LDA.l InfiniteBombs : AND.w #$00FF : BNE .have
|
|
||||||
BRA .dont_have
|
|
||||||
|
|
||||||
.powder
|
|
||||||
LDA.l InventoryTracking : BIT.w #$0010 : BNE .have
|
|
||||||
BRA .dont_have
|
|
||||||
|
|
||||||
.bee
|
|
||||||
LDA.l BottleContentsOne : AND.w #$00FF
|
|
||||||
CMP.w #$0007 : BEQ .have
|
|
||||||
CMP.w #$0008 : BEQ .have
|
|
||||||
LDA.l BottleContentsTwo : AND.w #$00FF
|
|
||||||
CMP.w #$0007 : BEQ .have
|
|
||||||
CMP.w #$0008 : BEQ .have
|
|
||||||
LDA.l BottleContentsThree : AND.w #$00FF
|
|
||||||
CMP.w #$0007 : BEQ .have
|
|
||||||
CMP.w #$0008 : BEQ .have
|
|
||||||
LDA.l BottleContentsFour : AND.w #$00FF
|
|
||||||
CMP.w #$0007 : BEQ .have
|
|
||||||
CMP.w #$0008 : BEQ .have
|
|
||||||
BRA .dont_have
|
|
||||||
|
|
||||||
.done
|
|
||||||
STA.w TextID
|
|
||||||
SEP #$20
|
|
||||||
JSL Sprite_ShowMessageMinimal_Alt
|
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
DialogEtherTablet:
|
DialogEtherTablet:
|
||||||
|
|||||||
@@ -45,10 +45,10 @@ DRHUD_BossIndicator:
|
|||||||
LDA.w CompassField : AND.l DungeonMask, x
|
LDA.w CompassField : AND.l DungeonMask, x
|
||||||
SEP #$20
|
SEP #$20
|
||||||
BEQ .draw_indicator
|
BEQ .draw_indicator
|
||||||
LDA.l CompassBossIndicator, x : CMP.b RoomIndex : BNE .draw_indicator
|
LDA.l CompassBossIndicator, x : CMP.b RoomIndex : BNE .draw_indicator
|
||||||
LDY.w #!RedSquare
|
LDY.w #!RedSquare
|
||||||
.draw_indicator
|
.draw_indicator
|
||||||
STY.w HUDMultiIndicator
|
STY.w HUDMultiIndicator
|
||||||
BRA DRHUD_DrawCurrentDungeonIndicator
|
BRA DRHUD_DrawCurrentDungeonIndicator
|
||||||
|
|
||||||
DRHUD_EnemyDropIndicator:
|
DRHUD_EnemyDropIndicator:
|
||||||
@@ -59,20 +59,12 @@ DRHUD_EnemyDropIndicator:
|
|||||||
SEP #$10 : TAX : REP #$10
|
SEP #$10 : TAX : REP #$10
|
||||||
|
|
||||||
DRHUD_DrawCurrentDungeonIndicator: ; mX
|
DRHUD_DrawCurrentDungeonIndicator: ; mX
|
||||||
LDA.l DRMode : BIT.b #$02 : BNE + : JMP DRHUD_Finished : +
|
LDA.l DRMode : BIT.b #$02 : BEQ DRHUD_Finished
|
||||||
LDY.w #!BlankTile
|
LDY.w #!BlankTile
|
||||||
LDA.w CurrentHealth : BEQ .draw_indicator
|
LDA.w CurrentHealth : BEQ .draw_indicator
|
||||||
|
|
||||||
LDA.b GameMode
|
REP #$20 : LDA.l DungeonReminderTable,X : TAY
|
||||||
CMP.b #$0E : BNE .get_indicator
|
SEP #$20
|
||||||
LDA.b GameSubMode
|
|
||||||
CMP.b #$03 : BNE .get_indicator
|
|
||||||
LDA.w SubModuleInterface
|
|
||||||
CMP.b #$06 : BEQ .draw_indicator
|
|
||||||
|
|
||||||
.get_indicator
|
|
||||||
REP #$20 : LDA.l DungeonReminderTable,X : TAY
|
|
||||||
SEP #$20
|
|
||||||
.draw_indicator
|
.draw_indicator
|
||||||
STY.w HUDCurrentDungeonWorld
|
STY.w HUDCurrentDungeonWorld
|
||||||
|
|
||||||
@@ -125,102 +117,99 @@ dw $0000, $0000, $0000, $0000, $000a, $000a, $000a, $0014, $000a, $0014, $0000,
|
|||||||
|
|
||||||
DrHudDungeonItemsAdditions:
|
DrHudDungeonItemsAdditions:
|
||||||
{
|
{
|
||||||
jsl DrawHUDDungeonItems
|
jsl DrawHUDDungeonItems
|
||||||
lda.l DRMode : cmp.b #$02 : beq + : rtl : +
|
lda.l DRMode : cmp.b #$02 : beq + : rtl : +
|
||||||
|
|
||||||
phx : phy : php
|
phx : phy : php
|
||||||
rep #$30
|
rep #$30
|
||||||
|
|
||||||
lda.w #$24f5 : sta.w $1606 : sta.w $1610 : sta.w $161a : sta.w $1624
|
lda.w #$24f5 : sta.w $1606 : sta.w $1610 : sta.w $161a : sta.w $1624
|
||||||
sta.w $1644 : sta.w $164a : sta.w $1652 : sta.w $1662 : sta.w $1684 : sta.w $16c4
|
sta.w $1644 : sta.w $164a : sta.w $1652 : sta.w $1662 : sta.w $1684 : sta.w $16c4
|
||||||
ldx.w #$0000
|
ldx.w #$0000
|
||||||
- sta.w $1704, x : sta.w $170e, x : sta.w $1718, x
|
- sta.w $1704, x : sta.w $170e, x : sta.w $1718, x
|
||||||
inx #2 : cpx.w #$0008 : !BLT -
|
inx #2 : cpx.w #$0008 : !BLT -
|
||||||
|
|
||||||
lda.l HudFlag : and.w #$0020 : beq + : JMP ++ : +
|
lda.l HudFlag : and.w #$0020 : beq + : JMP ++ : +
|
||||||
lda.l HUDDungeonItems : and.w #$001F : bne + : JMP ++ : +
|
lda.l HUDDungeonItems : and.w #$0007 : bne + : JMP ++ : +
|
||||||
; bk symbols
|
; bk symbols
|
||||||
lda.w #$2811 : sta.w $1606 : sta.w $1610 : sta.w $161a : sta.w $1624
|
lda.w #$2811 : sta.w $1606 : sta.w $1610 : sta.w $161a : sta.w $1624
|
||||||
; sm symbols
|
; sm symbols
|
||||||
lda.w #$2810 : sta.w $160a : sta.w $1614 : sta.w $161e : sta.w $16e4
|
lda.w #$2810 : sta.w $160a : sta.w $1614 : sta.w $161e : sta.w $16e4
|
||||||
; blank out stuff
|
; blank out stuff
|
||||||
lda.w #$24f5 : sta.w $1724
|
lda.w #$24f5 : sta.w $1724
|
||||||
|
|
||||||
ldx.w #$0002
|
ldx.w #$0002
|
||||||
- lda.w #$0000 : !ADD.l RowOffsets,x : !ADD.l ColumnOffsets, x : tay
|
- lda.w #$0000 : !ADD.l RowOffsets,x : !ADD.l ColumnOffsets, x : tay
|
||||||
JSR BossStatus : STA.w $1644, Y
|
lda.l DungeonReminderTable, x : sta.w $1644, y : iny #2
|
||||||
INY #2
|
lda.w #$24f5 : sta.w $1644, y
|
||||||
lda.w #$24f5 : sta.w $1644, y
|
lda.l MapField : and.l DungeonMask, x : beq + ; must have map
|
||||||
lda.l MapField : and.l DungeonMask, x : beq + ; must have map
|
jsr BkStatus : sta.w $1644, y : bra .smallKey ; big key status
|
||||||
jsr BkStatus : sta.w $1644, y : bra .smallKey ; big key status
|
+ lda.l BigKeyField : and.l DungeonMask, x : beq .smallKey
|
||||||
+ lda.l BigKeyField : and.l DungeonMask, x : beq .smallKey
|
lda.w #$2826 : sta.w $1644, y
|
||||||
lda.w #$2826 : sta.w $1644, y
|
.smallKey
|
||||||
.smallKey
|
+ iny #2
|
||||||
+ iny #2
|
|
||||||
cpx.w #$001a : bne +
|
cpx.w #$001a : bne +
|
||||||
tya : !ADD.w #$003c : tay
|
tya : !ADD.w #$003c : tay
|
||||||
+ stx.b Scrap00
|
+ stx.b Scrap00
|
||||||
txa : lsr : tax
|
txa : lsr : tax
|
||||||
lda.w #$24f5 : sta.w $1644, y
|
lda.w #$24f5 : sta.w $1644, y
|
||||||
lda.l GenericKeys : and.w #$00FF : bne +
|
lda.l GenericKeys : and.w #$00FF : bne +
|
||||||
lda.l DungeonKeys, x : and.w #$00FF : beq +
|
lda.l DungeonKeys, x : and.w #$00FF : beq +
|
||||||
jsr ConvertToDisplay2 : sta.w $1644, y
|
jsr ConvertToDisplay2 : sta.w $1644, y
|
||||||
+ iny #2 : lda.w #$24f5 : sta.w $1644, y
|
+ iny #2 : lda.w #$24f5 : sta.w $1644, y
|
||||||
phx : ldx.b Scrap00
|
phx : ldx.b Scrap00
|
||||||
LDA.l CompassMode : BIT.w #$0002 : BNE .skip_map_check
|
LDA.l MapField : ORA.l MapCountDisplay : AND.l DungeonMask, x : BEQ .key_info_done ; must have map
|
||||||
LDA.l MapField : AND.l DungeonMask, x : BEQ .key_info_done ; must have map
|
plx : sep #$30 : lda.l ChestKeys, x : sta.b Scrap02
|
||||||
.skip_map_check
|
lda.l GenericKeys : bne +++
|
||||||
plx : sep #$30 : lda.l ChestKeys, x : sta.b Scrap02
|
lda.b Scrap02 : !SUB.l DungeonCollectedKeys, x : sta.b Scrap02
|
||||||
lda.l GenericKeys : bne +++
|
+++ lda.b Scrap02
|
||||||
lda.b Scrap02 : !SUB.l DungeonCollectedKeys, x : sta.b Scrap02
|
rep #$30
|
||||||
+++ lda.b Scrap02
|
jsr ConvertToDisplay2 : sta.w $1644, y ; small key totals
|
||||||
rep #$30
|
bra .skipStack
|
||||||
jsr ConvertToDisplay2 : sta.w $1644, y ; small key totals
|
|
||||||
bra .skipStack
|
|
||||||
.key_info_done
|
.key_info_done
|
||||||
plx
|
plx
|
||||||
.skipStack iny #2
|
.skipStack iny #2
|
||||||
cpx.w #$000d : beq +
|
cpx.w #$000d : beq +
|
||||||
lda.w #$24f5 : sta.w $1644, y
|
lda.w #$24f5 : sta.w $1644, y
|
||||||
+
|
+
|
||||||
ldx.b Scrap00
|
ldx.b Scrap00
|
||||||
+ inx #2 : cpx.w #$001b : bcs ++ : JMP -
|
+ inx #2 : cpx.w #$001b : bcs ++ : JMP -
|
||||||
++
|
++
|
||||||
lda.l HudFlag : and.w #$0020 : bne + : JMP ++ : +
|
lda.l HudFlag : and.w #$0020 : bne + : JMP ++ : +
|
||||||
; map symbols
|
; map symbols
|
||||||
lda.w #$2821 : sta.w $1606 : sta.w $1610 : sta.w $161a
|
lda.w #$2821 : sta.w $1606 : sta.w $1610 : sta.w $161a
|
||||||
; compass symbols
|
; compass symbols
|
||||||
lda.w #$2c20 : sta.w $160a : sta.w $1614 : sta.w $161e : sta.w $16e4
|
lda.w #$2c20 : sta.w $160a : sta.w $1614 : sta.w $161e : sta.w $16e4
|
||||||
; blank out a couple thing from old hud
|
; blank out a couple thing from old hud
|
||||||
lda.w #$24f5 : sta.w $1624 : sta.w $1724
|
lda.w #$24f5 : sta.w $1624 : sta.w $1724
|
||||||
ldx.w #$0002
|
ldx.w #$0002
|
||||||
- lda.w #$0000 ; start of hud area
|
- lda.w #$0000 ; start of hud area
|
||||||
!ADD.l RowOffsets, x : !ADD.l ColumnOffsets, x : tay
|
!ADD.l RowOffsets, x : !ADD.l ColumnOffsets, x : tay
|
||||||
JSR BossStatus : STA.w $1644, Y
|
lda.l DungeonReminderTable, x : sta.w $1644, y
|
||||||
INY #2
|
iny #2
|
||||||
lda.w #$24f5 : sta.w $1644, y ; blank out map spot
|
lda.w #$24f5 : sta.w $1644, y ; blank out map spot
|
||||||
lda.l MapField : ora.l MapCountDisplay : ora.l MapOverlay
|
lda.l MapField : ora.l MapCountDisplay : ora.l MapOverlay
|
||||||
and.l DungeonMask, x : beq + ; must have map
|
and.l DungeonMask, x : beq + ; must have map
|
||||||
JSR MapIndicatorShort : STA.w $1644, Y
|
JSR MapIndicatorShort : STA.w $1644, Y
|
||||||
+ iny #2
|
+ iny #2
|
||||||
cpx.w #$001a : bne +
|
cpx.w #$001a : bne +
|
||||||
tya : !ADD.w #$003c : tay
|
tya : !ADD.w #$003c : tay
|
||||||
+ lda.l CompassField : ora.l CompassCountDisplay
|
+ lda.l CompassField : ora.l CompassCountDisplay
|
||||||
and.l DungeonMask, x : beq + ; must have compass
|
and.l DungeonMask, x : beq + ; must have compass
|
||||||
phx ; total chest counts
|
phx ; total chest counts
|
||||||
LDA.l CompassTotalsWRAM, x : !SUB.l DungeonLocationsChecked, x
|
LDA.l CompassTotalsWRAM, x : !SUB.l DungeonLocationsChecked, x
|
||||||
SEP #$30 : JSR HudHexToDec2DigitCopy : REP #$30
|
SEP #$30 : JSR HudHexToDec2DigitCopy : REP #$30
|
||||||
lda.b Scrap06 : jsr ConvertToDisplay2 : sta.w $1644, y : iny #2
|
lda.b Scrap06 : jsr ConvertToDisplay2 : sta.w $1644, y : iny #2
|
||||||
lda.b Scrap07 : jsr ConvertToDisplay2 : sta.w $1644, y
|
lda.b Scrap07 : jsr ConvertToDisplay2 : sta.w $1644, y
|
||||||
plx
|
plx
|
||||||
bra .skipBlanks
|
bra .skipBlanks
|
||||||
+ lda.w #$24f5 : sta.w $1644, y : iny #2 : sta.w $1644, y
|
+ lda.w #$24f5 : sta.w $1644, y : iny #2 : sta.w $1644, y
|
||||||
.skipBlanks iny #2
|
.skipBlanks iny #2
|
||||||
cpx.w #$001a : beq +
|
cpx.w #$001a : beq +
|
||||||
lda.w #$24f5 : sta.w $1644, y ; blank out spot
|
lda.w #$24f5 : sta.w $1644, y ; blank out spot
|
||||||
+ inx #2 : cpx.w #$001b : !BGE ++ : JMP -
|
+ inx #2 : cpx.w #$001b : !BGE ++ : JMP -
|
||||||
++
|
++
|
||||||
plp : ply : plx : rtl
|
plp : ply : plx : rtl
|
||||||
}
|
}
|
||||||
|
|
||||||
MapIndicatorLong:
|
MapIndicatorLong:
|
||||||
@@ -260,40 +249,6 @@ BkStatus:
|
|||||||
+ lda.w #$24f5 : rts ; black otherwise
|
+ lda.w #$24f5 : rts ; black otherwise
|
||||||
+++ lda.w #$2826 : rts ; check mark
|
+++ lda.w #$2826 : rts ; check mark
|
||||||
|
|
||||||
BossStatus:
|
|
||||||
LDA.l HUDDungeonItems : BIT.w #$0010 : BEQ .normal
|
|
||||||
PHX
|
|
||||||
LDA.l DungeonMapBossRooms, X
|
|
||||||
CMP.w #$000F
|
|
||||||
BEQ .no_boss
|
|
||||||
ASL A
|
|
||||||
TAX
|
|
||||||
LDA.l SaveDataWRAM, X
|
|
||||||
PLX
|
|
||||||
BIT.w #$0800
|
|
||||||
BEQ .boss_alive
|
|
||||||
|
|
||||||
.boss_dead
|
|
||||||
LDA.l HudFlag : BIT.w #$0020 : BNE .skull
|
|
||||||
; palette 3 - white
|
|
||||||
LDA.l DungeonReminderTable, X : AND.w #$E3FF : ORA.w #$0C00 : RTS
|
|
||||||
|
|
||||||
.skull
|
|
||||||
LDA.w #$280F : RTS
|
|
||||||
|
|
||||||
.no_boss
|
|
||||||
PLX
|
|
||||||
; palette 0 - light gray
|
|
||||||
LDA.l DungeonReminderTable, X : AND.w #$E3FF : RTS
|
|
||||||
|
|
||||||
.boss_alive
|
|
||||||
; palette 4 - gray
|
|
||||||
LDA.l DungeonReminderTable, X : AND.w #$E3FF : ORA.w #$1000 : RTS
|
|
||||||
|
|
||||||
.normal
|
|
||||||
; default palette 3 - white
|
|
||||||
LDA.l DungeonReminderTable, X : RTS
|
|
||||||
|
|
||||||
ConvertToDisplay:
|
ConvertToDisplay:
|
||||||
and.w #$00ff : cmp.w #$000a : !BLT +
|
and.w #$00ff : cmp.w #$000a : !BLT +
|
||||||
!ADD.w #$2519 : rts
|
!ADD.w #$2519 : rts
|
||||||
|
|||||||
@@ -17,15 +17,14 @@ DoDungeonMapBossIcon:
|
|||||||
ASL
|
ASL
|
||||||
TAX
|
TAX
|
||||||
|
|
||||||
|
; get sprite pointer table
|
||||||
|
LDA.l $89C298 : STA.b Scrap00
|
||||||
|
LDA.w #$0089 : STA.b Scrap02
|
||||||
|
TXY
|
||||||
; get sprite pointer for room
|
; get sprite pointer for room
|
||||||
LDA.l UWSpritesPointers,X
|
LDA.b [Scrap00], Y
|
||||||
STA.b Scrap00 ; pointer in $00
|
STA.b Scrap00 ; pointer in $00
|
||||||
if !FEATURE_FIX_BASEROM
|
LDA.w #UWSpritesData>>16 : STA.b Scrap02 ; set the bank to 28 for now
|
||||||
LDA.w #$0089
|
|
||||||
else
|
|
||||||
LDA.w #$0028 ; set the bank to 28 for now
|
|
||||||
endif
|
|
||||||
STA.b Scrap02
|
|
||||||
LDY.w #$0001 ; to skip the "sort"
|
LDY.w #$0001 ; to skip the "sort"
|
||||||
|
|
||||||
; get first byte to make sure it isn't an empty room
|
; get first byte to make sure it isn't an empty room
|
||||||
@@ -11,16 +11,14 @@ Sprite_ResetAll: ; Bank09.asm(1344)
|
|||||||
;================================================================================
|
;================================================================================
|
||||||
; On Room Transition -> Move Sprite depending on the room loaded
|
; On Room Transition -> Move Sprite depending on the room loaded
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
if not(!FEATURE_FIX_BASEROM)
|
org $828979 ; JSL Dungeon_ResetSprites ; REPLACE THAT (Sprite initialization) original jsl : $09C114
|
||||||
org $828979 ; JSL Dungeon_ResetSprites ; REPLACE THAT (Sprite initialization) original jsl : $09C114
|
JSL boss_move
|
||||||
JSL boss_move
|
org $828C16 ; JSL Dungeon_ResetSprites ; REPLACE THAT (Sprite initialization) original jsl : $09C114
|
||||||
org $828C16 ; JSL Dungeon_ResetSprites ; REPLACE THAT (Sprite initialization) original jsl : $09C114
|
JSL boss_move
|
||||||
JSL boss_move
|
org $829338 ; JSL Dungeon_ResetSprites ; REPLACE THAT (Sprite initialization) original jsl : $09C114
|
||||||
org $829338 ; JSL Dungeon_ResetSprites ; REPLACE THAT (Sprite initialization) original jsl : $09C114
|
JSL boss_move
|
||||||
JSL boss_move
|
org $828256 ; JSL Dungeon_ResetSprites ; REPLACE THAT (Sprite initialization) original jsl : $09C114
|
||||||
org $828256 ; JSL Dungeon_ResetSprites ; REPLACE THAT (Sprite initialization) original jsl : $09C114
|
JSL boss_move
|
||||||
JSL boss_move
|
|
||||||
endif
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -61,3 +61,7 @@ LDA.b [Scrap00],Y
|
|||||||
|
|
||||||
org $89C416
|
org $89C416
|
||||||
LDA.b [Scrap00],Y
|
LDA.b [Scrap00],Y
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
LoadUnderworldSprites:
|
LoadUnderworldSprites:
|
||||||
STA.b Scrap00 ; part one of what we replaced
|
STA.b Scrap00 ; part one of what we replaced
|
||||||
LDA.w #UWSpritesData>>16 ; set the bank to 28 for now
|
LDA.w #UWSpritesData>>16 : STA.b Scrap02 ; set the bank to 28 for now
|
||||||
STA.b Scrap02
|
LDA.w $048E
|
||||||
LDA.w $048E
|
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
GetSpriteSlot16Bit:
|
GetSpriteSlot16Bit:
|
||||||
@@ -12,37 +11,37 @@ GetSpriteSlot16Bit:
|
|||||||
RTL
|
RTL
|
||||||
|
|
||||||
GeldmanDrawOverride:
|
GeldmanDrawOverride:
|
||||||
PLA : PLA : PLA ; fix the call stack
|
PLA : PLA : PLA ; fix the call stack
|
||||||
LDA.l DRFlags+1 : AND.b #$08 : BEQ .vanilla
|
LDA.l DRFlags+1 : AND.b #$08 : BEQ .vanilla
|
||||||
|
|
||||||
LDA.b #$01
|
LDA.b #$01
|
||||||
STA.w $0DC0,X
|
STA.w $0DC0,X
|
||||||
JML Sprite_4C_Geldman_do_indeed_draw
|
JML Sprite_4C_Geldman_do_indeed_draw
|
||||||
|
|
||||||
.vanilla
|
.vanilla
|
||||||
JSL Sprite_PrepOAMCoordLong
|
JSL Sprite_PrepOAMCoordLong
|
||||||
JML Sprite_4C_Geldman_continue
|
JML Sprite_4C_Geldman_continue
|
||||||
|
|
||||||
StalfosKnightDrawOverride:
|
StalfosKnightDrawOverride:
|
||||||
LDA.l DRFlags+1 : AND.b #$08 : BEQ .vanilla
|
LDA.l DRFlags+1 : AND.b #$08 : BEQ .vanilla
|
||||||
|
|
||||||
JSL Sprite_PrepOAMCoordLong
|
JSL Sprite_PrepOAMCoordLong
|
||||||
LDA.b #$12
|
LDA.b #$12
|
||||||
JML Sprite_DrawShadowLong
|
JML Sprite_DrawShadowLong
|
||||||
|
|
||||||
.vanilla
|
.vanilla
|
||||||
JSL Sprite_PrepOAMCoordLong
|
JSL Sprite_PrepOAMCoordLong
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
BlobDrawOverride:
|
BlobDrawOverride:
|
||||||
PLA : PLA : PLA ; fix the call stack
|
PLA : PLA : PLA ; fix the call stack
|
||||||
LDA.l DRFlags+1 : AND.b #$08 : BEQ .vanilla
|
LDA.l DRFlags+1 : AND.b #$08 : BEQ .vanilla
|
||||||
|
|
||||||
LDA.b #$05
|
LDA.b #$05
|
||||||
STA.w $0DC0,X
|
STA.w $0DC0,X
|
||||||
|
|
||||||
JML SpriteDraw_Blob_head_popping_out
|
JML SpriteDraw_Blob_head_popping_out
|
||||||
|
|
||||||
.vanilla
|
.vanilla
|
||||||
JSL Sprite_PrepOAMCoordLong
|
JSL Sprite_PrepOAMCoordLong
|
||||||
JML SpriteDraw_Blob_bad_gfx
|
JML SpriteDraw_Blob_bad_gfx
|
||||||
27
events.asm
27
events.asm
@@ -217,37 +217,18 @@ OnInitFileSelect:
|
|||||||
JSL EnableForceBlank
|
JSL EnableForceBlank
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
OnGloomDamage:
|
|
||||||
LDA.b #$01
|
|
||||||
STA.l UpdateHUDFlag
|
|
||||||
LDA.l MaximumHealth
|
|
||||||
SEC : SBC.b #$08
|
|
||||||
STA.l CurrentHealth
|
|
||||||
BEQ +
|
|
||||||
STA.l MaximumHealth
|
|
||||||
+ RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
OnLinkDamaged:
|
OnLinkDamaged:
|
||||||
JSL IncrementDamageTakenCounter_Arb
|
JSL IncrementDamageTakenCounter_Arb
|
||||||
LDA.l ChallengeModes : AND.b #$03 : CMP.b #$02 : BEQ .gloom
|
|
||||||
JML OHKOTimer
|
JML OHKOTimer
|
||||||
.gloom
|
|
||||||
STZ.b $00
|
|
||||||
JML OnGloomDamage
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;OnEnterWater:
|
;OnEnterWater:
|
||||||
; JSL UnequipCapeQuiet ; what we wrote over
|
; JSL UnequipCapeQuiet ; what we wrote over
|
||||||
;RTL
|
;RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
OnLinkDamagedFromPit:
|
OnLinkDamagedFromPit:
|
||||||
LDA.l ChallengeModes : AND.b #$03 : CMP.b #$02 : BEQ .gloom
|
|
||||||
JSL OHKOTimer
|
JSL OHKOTimer
|
||||||
BRA +
|
|
||||||
.gloom
|
|
||||||
JSL OnGloomDamage
|
|
||||||
CLC : ADC.b #$08 : STA.l CurrentHealth
|
|
||||||
|
|
||||||
+ LDA.l AllowAccidentalMajorGlitch
|
LDA.l AllowAccidentalMajorGlitch
|
||||||
BEQ ++
|
BEQ ++
|
||||||
-- LDA.b #$14 : STA.b GameSubMode ; thing we wrote over
|
-- LDA.b #$14 : STA.b GameSubMode ; thing we wrote over
|
||||||
|
|
||||||
@@ -259,12 +240,7 @@ OnLinkDamagedFromPit:
|
|||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
OnLinkDamagedFromPitOutdoors:
|
OnLinkDamagedFromPitOutdoors:
|
||||||
LDA.l ChallengeModes : AND.b #$03 : CMP.b #$02 : BEQ .gloom
|
|
||||||
JML OHKOTimer ; make sure this is last
|
JML OHKOTimer ; make sure this is last
|
||||||
.gloom
|
|
||||||
JSL OnGloomDamage
|
|
||||||
CLC : ADC.b #$08
|
|
||||||
RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
OnOWTransition:
|
OnOWTransition:
|
||||||
JSL FloodGateReset
|
JSL FloodGateReset
|
||||||
@@ -277,7 +253,6 @@ OnOWTransition:
|
|||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
OnLoadDuckMap:
|
OnLoadDuckMap:
|
||||||
JSL SelectFirstFluteSpot
|
|
||||||
LDA.l DuckMapFlag
|
LDA.l DuckMapFlag
|
||||||
BNE +
|
BNE +
|
||||||
INC : STA.l DuckMapFlag
|
INC : STA.l DuckMapFlag
|
||||||
|
|||||||
@@ -248,12 +248,8 @@ DrawPlayerFileShared:
|
|||||||
|
|
||||||
; Flute
|
; Flute
|
||||||
LDA.l InventoryTrackingSRAM : AND.w #$0003 : BEQ +
|
LDA.l InventoryTrackingSRAM : AND.w #$0003 : BEQ +
|
||||||
LDA.l $7003C2 : AND.w #$00FF : BNE .pseudo
|
|
||||||
%fs_drawItem(7,16,FileSelectItems_flute)
|
%fs_drawItem(7,16,FileSelectItems_flute)
|
||||||
BRA ++
|
BRA ++
|
||||||
.pseudo
|
|
||||||
%fs_drawItem(7,16,FileSelectItems_flute_green)
|
|
||||||
BRA ++
|
|
||||||
+
|
+
|
||||||
%fs_drawItemGray(7,16,FileSelectItems_flute)
|
%fs_drawItemGray(7,16,FileSelectItems_flute)
|
||||||
++
|
++
|
||||||
@@ -543,8 +539,6 @@ FileSelectItems:
|
|||||||
dw #$0264|!FS_COLOR_BROWN, #$0265|!FS_COLOR_BROWN, #$0274|!FS_COLOR_BROWN, #$0275|!FS_COLOR_BROWN
|
dw #$0264|!FS_COLOR_BROWN, #$0265|!FS_COLOR_BROWN, #$0274|!FS_COLOR_BROWN, #$0275|!FS_COLOR_BROWN
|
||||||
.flute
|
.flute
|
||||||
dw #$0266|!FS_COLOR_BLUE, #$0267|!FS_COLOR_BLUE, #$0276|!FS_COLOR_BLUE, #$0277|!FS_COLOR_BLUE
|
dw #$0266|!FS_COLOR_BLUE, #$0267|!FS_COLOR_BLUE, #$0276|!FS_COLOR_BLUE, #$0277|!FS_COLOR_BLUE
|
||||||
.flute_green
|
|
||||||
dw #$0266|!FS_COLOR_GREEN, #$0267|!FS_COLOR_GREEN, #$0276|!FS_COLOR_GREEN, #$0277|!FS_COLOR_GREEN
|
|
||||||
.book
|
.book
|
||||||
dw #$026A|!FS_COLOR_GREEN, #$026B|!FS_COLOR_GREEN, #$027A|!FS_COLOR_GREEN, #$027B|!FS_COLOR_GREEN
|
dw #$026A|!FS_COLOR_GREEN, #$026B|!FS_COLOR_GREEN, #$027A|!FS_COLOR_GREEN, #$027B|!FS_COLOR_GREEN
|
||||||
.redcane
|
.redcane
|
||||||
|
|||||||
11
follower.asm
11
follower.asm
@@ -23,7 +23,7 @@ JSL SpritePrep_OldManFollower : NOP #2 : db $F0 ; BEQ
|
|||||||
org $9DFF18
|
org $9DFF18
|
||||||
JSL SpriteDraw_OldManFollower
|
JSL SpriteDraw_OldManFollower
|
||||||
org $9EE9BC
|
org $9EE9BC
|
||||||
JSL Follower_CheckMessageCollision
|
JSL OldMan_WaitForCollision
|
||||||
org $9EE9CC
|
org $9EE9CC
|
||||||
JSL OldMan_BecomeFollower : NOP #2
|
JSL OldMan_BecomeFollower : NOP #2
|
||||||
|
|
||||||
@@ -631,6 +631,15 @@ SpriteDraw_OldManFollower:
|
|||||||
dw 0, 0 : db $AC, $00, $00, $02
|
dw 0, 0 : db $AC, $00, $00, $02
|
||||||
dw 0, 8 : db $AE, $00, $00, $02
|
dw 0, 8 : db $AE, $00, $00, $02
|
||||||
|
|
||||||
|
OldMan_WaitForCollision:
|
||||||
|
PHA
|
||||||
|
LDA.w LinkIFrames : BEQ +
|
||||||
|
PLA : CLC
|
||||||
|
RTL
|
||||||
|
+
|
||||||
|
PLA
|
||||||
|
JML Follower_CheckMessageCollision
|
||||||
|
|
||||||
OldMan_BecomeFollower:
|
OldMan_BecomeFollower:
|
||||||
LDA.l FollowerTravelAllowed : CMP.b #$02 : BCC .set_follower_and_despawn
|
LDA.l FollowerTravelAllowed : CMP.b #$02 : BCC .set_follower_and_despawn
|
||||||
PLA : PLA
|
PLA : PLA
|
||||||
|
|||||||
@@ -1,108 +0,0 @@
|
|||||||
; we want the icons indicating what is left in a room to blink
|
|
||||||
; but we don't want to redraw to BG1 every few frames
|
|
||||||
; so we duplicate the left side of BG1 to a lower portion and just toggle vertical scroll
|
|
||||||
|
|
||||||
BlinkLoot:
|
|
||||||
; do not show icons if we're scrolling
|
|
||||||
LDA.w $0210
|
|
||||||
BNE .hide
|
|
||||||
|
|
||||||
LDA.b FrameCounter
|
|
||||||
AND.b #$20
|
|
||||||
BEQ .show
|
|
||||||
.hide
|
|
||||||
LDA.b #$01
|
|
||||||
.show
|
|
||||||
STZ.b $E6
|
|
||||||
STA.w $E7
|
|
||||||
JSL $8AE96B
|
|
||||||
RTL
|
|
||||||
|
|
||||||
StartDoubleWrite:
|
|
||||||
; what we wrote over
|
|
||||||
LDA.l DRMode
|
|
||||||
BEQ .draw
|
|
||||||
|
|
||||||
INC.w $020D ; next subsubmode
|
|
||||||
PLA : PLA : PLA ; pull our jump to here off the stack
|
|
||||||
PLB
|
|
||||||
RTL
|
|
||||||
|
|
||||||
.draw
|
|
||||||
REP #$30
|
|
||||||
STZ.w GFXStripes
|
|
||||||
|
|
||||||
STZ.w $021B
|
|
||||||
RTL
|
|
||||||
|
|
||||||
CheckDoubleWrite:
|
|
||||||
LDA.w $021C
|
|
||||||
BNE .done
|
|
||||||
|
|
||||||
LDA.b #$08
|
|
||||||
STA.w $021C
|
|
||||||
REP #$30
|
|
||||||
JML $8AE20B
|
|
||||||
|
|
||||||
.done
|
|
||||||
; what we wrote over
|
|
||||||
REP #$10
|
|
||||||
LDY.w GFXStripes
|
|
||||||
LDA.b #$FF
|
|
||||||
JML $8AE2E7
|
|
||||||
|
|
||||||
DrawMountain:
|
|
||||||
LDX.w GFXStripes
|
|
||||||
PHX
|
|
||||||
LDY.w #$0000
|
|
||||||
.next_word
|
|
||||||
LDA.w $8AEFEF, Y
|
|
||||||
STA.w GFXStripes+2, X
|
|
||||||
INX : INX
|
|
||||||
INY : INY
|
|
||||||
CPY.w #$002A
|
|
||||||
BCC .next_word
|
|
||||||
|
|
||||||
PLY
|
|
||||||
LDA.w $021B
|
|
||||||
BEQ .done
|
|
||||||
|
|
||||||
; if second copy of mountain, adjust VRAM addresses
|
|
||||||
SEP #$20
|
|
||||||
LDA.w GFXStripes+$02, Y
|
|
||||||
ORA.w $021C
|
|
||||||
STA.w GFXStripes+$02, Y
|
|
||||||
|
|
||||||
LDA.w GFXStripes+$08, Y
|
|
||||||
ORA.w $021C
|
|
||||||
STA.w GFXStripes+$08, Y
|
|
||||||
|
|
||||||
LDA.w GFXStripes+$10, Y
|
|
||||||
ORA.w $021C
|
|
||||||
STA.w GFXStripes+$10, Y
|
|
||||||
|
|
||||||
LDA.w GFXStripes+$20, Y
|
|
||||||
ORA.w $021C
|
|
||||||
STA.w GFXStripes+$20, Y
|
|
||||||
|
|
||||||
LDA.w GFXStripes+$26, Y
|
|
||||||
ORA.w $021C
|
|
||||||
STA.w GFXStripes+$26, Y
|
|
||||||
REP #$20
|
|
||||||
|
|
||||||
.done
|
|
||||||
RTL
|
|
||||||
|
|
||||||
WriteBigEndianAddressX:
|
|
||||||
ORA.w $021B
|
|
||||||
XBA
|
|
||||||
STA.w GFXStripes+2, X
|
|
||||||
AND.w #$FFF7
|
|
||||||
RTL
|
|
||||||
|
|
||||||
WriteBigEndianAddressY:
|
|
||||||
ORA.w $021B
|
|
||||||
XBA
|
|
||||||
STA.w GFXStripes+2, Y
|
|
||||||
AND.w #$FFF7
|
|
||||||
RTL
|
|
||||||
@@ -1,645 +0,0 @@
|
|||||||
; A = room_id
|
|
||||||
; out A = level of loot
|
|
||||||
CheckLoot:
|
|
||||||
PHP
|
|
||||||
REP #$30
|
|
||||||
PHB : PHX : PHY
|
|
||||||
|
|
||||||
STA.b $CA
|
|
||||||
|
|
||||||
LDA.b $06 : PHA
|
|
||||||
LDA.b $0E : PHA
|
|
||||||
|
|
||||||
STZ.b $02 ; best item class found
|
|
||||||
|
|
||||||
LDA.l ShowItems_default
|
|
||||||
AND.w #$00FF
|
|
||||||
STA.b $0E
|
|
||||||
|
|
||||||
LDA.b $CA
|
|
||||||
AND.w #$00FF
|
|
||||||
ASL A
|
|
||||||
TAX
|
|
||||||
|
|
||||||
LDA.l SaveDataWRAM, X
|
|
||||||
AND.w #$000F
|
|
||||||
BEQ +
|
|
||||||
LDA.l ShowItems_visited_tile
|
|
||||||
AND.w #$00FF
|
|
||||||
CMP.b $0E
|
|
||||||
BCC +
|
|
||||||
STA.b $0E
|
|
||||||
|
|
||||||
+ LDA.w DungeonID
|
|
||||||
TAX
|
|
||||||
|
|
||||||
LDA.l MapField
|
|
||||||
AND.l DungeonMask, X
|
|
||||||
BEQ +
|
|
||||||
LDA.l ShowItems_have_map
|
|
||||||
AND.w #$00FF
|
|
||||||
CMP.b $0E
|
|
||||||
BCC +
|
|
||||||
STA.b $0E
|
|
||||||
|
|
||||||
+ LDA.l CompassField
|
|
||||||
AND.l DungeonMask, X
|
|
||||||
BEQ +
|
|
||||||
LDA.l ShowItems_have_compass
|
|
||||||
AND.w #$00FF
|
|
||||||
CMP.b $0E
|
|
||||||
BCC +
|
|
||||||
STA.b $0E
|
|
||||||
+
|
|
||||||
|
|
||||||
LDA.l ItemSources : BIT.w #$0001 : BEQ +
|
|
||||||
JSR CheckChests
|
|
||||||
+
|
|
||||||
|
|
||||||
LDA.l ItemSources : BIT.w #$0002 : BEQ +
|
|
||||||
JSR CheckPots
|
|
||||||
+
|
|
||||||
|
|
||||||
LDA.l ItemSources : BIT.w #$0004 : BEQ +
|
|
||||||
JSR CheckEnemies
|
|
||||||
+
|
|
||||||
|
|
||||||
LDA.l ItemSources : BIT.w #$0008 : BEQ +
|
|
||||||
JSR CheckBoss
|
|
||||||
+
|
|
||||||
|
|
||||||
LDA.l ItemSources : BIT.w #$0010 : BEQ +
|
|
||||||
JSR CheckPrize
|
|
||||||
+
|
|
||||||
|
|
||||||
.done
|
|
||||||
PLA : STA.b $0E
|
|
||||||
PLA : STA.b $06
|
|
||||||
PLY : PLX : PLB
|
|
||||||
PLP
|
|
||||||
LDA.b $02
|
|
||||||
RTL
|
|
||||||
|
|
||||||
CheckChests:
|
|
||||||
LDA.b $CA
|
|
||||||
AND.w #$00FF
|
|
||||||
STA.b $00
|
|
||||||
ASL A
|
|
||||||
TAX
|
|
||||||
|
|
||||||
LDA.w #($81<<8)
|
|
||||||
PHA
|
|
||||||
PLB : PLB
|
|
||||||
|
|
||||||
LDA.w #$0008
|
|
||||||
STA.b $04
|
|
||||||
STZ.b $06
|
|
||||||
|
|
||||||
LDY.w #$FFFD
|
|
||||||
.increment_mask
|
|
||||||
LDA.b $04
|
|
||||||
ASL A
|
|
||||||
STA.b $04
|
|
||||||
.next_chest
|
|
||||||
INY #3
|
|
||||||
CPY.w #$01F8
|
|
||||||
BCS .done
|
|
||||||
|
|
||||||
LDA.w RoomData_ChestItems, Y
|
|
||||||
AND.w #$7FFF
|
|
||||||
CMP.b $00
|
|
||||||
BNE .next_chest
|
|
||||||
|
|
||||||
LDA.b $06
|
|
||||||
JSR CheckChestSection
|
|
||||||
INC.b $06
|
|
||||||
BCC .increment_mask
|
|
||||||
|
|
||||||
LDA.l SaveDataWRAM, X
|
|
||||||
AND.b $04
|
|
||||||
BNE .increment_mask ; already got item
|
|
||||||
|
|
||||||
LDA.w RoomData_ChestItems+2, Y
|
|
||||||
AND.w #$00FF
|
|
||||||
JSR GetLootClass
|
|
||||||
BRA .increment_mask
|
|
||||||
|
|
||||||
.done
|
|
||||||
RTS
|
|
||||||
|
|
||||||
CheckBoss:
|
|
||||||
; we assume all bosses are in section 1 of split sections
|
|
||||||
; mainly to simplify hera cage key and GT torch
|
|
||||||
; which use the same flow
|
|
||||||
; and bosses are always in their own section anyway
|
|
||||||
LDA.b $CA
|
|
||||||
AND.w #$F000
|
|
||||||
XBA
|
|
||||||
CMP.w #$0020
|
|
||||||
BCC +
|
|
||||||
RTS
|
|
||||||
|
|
||||||
+
|
|
||||||
LDA.b $CA
|
|
||||||
AND.w #$00FF
|
|
||||||
STA.b $04
|
|
||||||
|
|
||||||
LDX.w #$FFFA
|
|
||||||
.next_boss
|
|
||||||
INX #6
|
|
||||||
LDA.l MiscLocations, X
|
|
||||||
BPL .check
|
|
||||||
RTS
|
|
||||||
|
|
||||||
.check
|
|
||||||
CMP.b $04
|
|
||||||
BNE .next_boss
|
|
||||||
|
|
||||||
TXY
|
|
||||||
CMP.b RoomIndex
|
|
||||||
BEQ .current_room
|
|
||||||
|
|
||||||
ASL A
|
|
||||||
TAX
|
|
||||||
LDA.l SaveDataWRAM, X
|
|
||||||
BRA .continue
|
|
||||||
|
|
||||||
.current_room
|
|
||||||
LDA.w RoomItemsTaken ; if checking our current room, $0403 has fresher flags
|
|
||||||
ASL #4
|
|
||||||
|
|
||||||
.continue
|
|
||||||
STA.b $04
|
|
||||||
|
|
||||||
TYX
|
|
||||||
LDA.l MiscLocations+2, X ; get bit of room data to check
|
|
||||||
AND.w #$00FF
|
|
||||||
ASL A
|
|
||||||
TAX
|
|
||||||
LDA.l DungeonMask, X
|
|
||||||
|
|
||||||
TYX
|
|
||||||
BIT.b $04
|
|
||||||
BNE .next_boss ; continue checking if we already got the item
|
|
||||||
|
|
||||||
LDA.l MiscLocations+4, X
|
|
||||||
STA.b $05
|
|
||||||
|
|
||||||
LDA.l MiscLocations+3, X
|
|
||||||
STA.b $04
|
|
||||||
|
|
||||||
LDA.b [$04]
|
|
||||||
AND.w #$00FF
|
|
||||||
JSR GetLootClass
|
|
||||||
|
|
||||||
BRA .next_boss
|
|
||||||
|
|
||||||
CheckPrize:
|
|
||||||
LDA.b $CA
|
|
||||||
AND.w #$00FF
|
|
||||||
STA.b $04
|
|
||||||
|
|
||||||
LDX.w #$FFFD
|
|
||||||
.next_prize
|
|
||||||
INX #3
|
|
||||||
LDA.l PrizeLocations, X
|
|
||||||
BPL .check
|
|
||||||
RTS
|
|
||||||
|
|
||||||
.check
|
|
||||||
CMP.b $04
|
|
||||||
BNE .next_prize
|
|
||||||
|
|
||||||
TXY
|
|
||||||
|
|
||||||
ASL A
|
|
||||||
TAX
|
|
||||||
LDA.l SaveDataWRAM, X
|
|
||||||
TYX
|
|
||||||
BIT.w #$0800
|
|
||||||
BNE .next_prize
|
|
||||||
|
|
||||||
LDA.l PrizeLocations+2, X ; get which prize to look at
|
|
||||||
AND.w #$00FF
|
|
||||||
TAX
|
|
||||||
LDA.l DungeonPrizeReceiptID, X
|
|
||||||
TYX
|
|
||||||
|
|
||||||
AND.w #$00FF
|
|
||||||
JSR GetLootClass
|
|
||||||
|
|
||||||
BRA .next_prize
|
|
||||||
|
|
||||||
CheckPots:
|
|
||||||
LDA.b $CA
|
|
||||||
AND.w #$00FF
|
|
||||||
ASL A
|
|
||||||
TAX
|
|
||||||
|
|
||||||
LDA.l UWPotsPointers, X
|
|
||||||
STA.b $04
|
|
||||||
LDA.w #bank(UWPotsData)
|
|
||||||
STA.b $06
|
|
||||||
|
|
||||||
LDY.w #$0000
|
|
||||||
LDX.w #$FFFF
|
|
||||||
.next_pot
|
|
||||||
LDA.b [$04], Y
|
|
||||||
CMP.w #$FFFF : BEQ .done
|
|
||||||
INX : INY : INY
|
|
||||||
BIT.w #$4000 : BNE .multi_item ; marked as multi item
|
|
||||||
BIT.w #$8000 : BNE .major_item ; marked as major item
|
|
||||||
LDA.b [$04], Y
|
|
||||||
AND.w #$00FF
|
|
||||||
CMP.w #$0008 : BEQ .small_key
|
|
||||||
LDA.l PotCountMode
|
|
||||||
BEQ +
|
|
||||||
JSR CheckJunkPot
|
|
||||||
+
|
|
||||||
INY
|
|
||||||
BRA .next_pot
|
|
||||||
|
|
||||||
.small_key
|
|
||||||
LDA.w #$8000 : STA.b $08
|
|
||||||
LDA.w #$0024
|
|
||||||
PHA
|
|
||||||
PHX
|
|
||||||
INY
|
|
||||||
BRA .mask_set
|
|
||||||
|
|
||||||
.multi_item
|
|
||||||
LDA.b [$04], Y
|
|
||||||
PHX
|
|
||||||
AND.w #$00FF
|
|
||||||
ASL A
|
|
||||||
TAX
|
|
||||||
LDA.l PotMultiWorldTable, X
|
|
||||||
PLX
|
|
||||||
BRA .item_id_set
|
|
||||||
|
|
||||||
.major_item
|
|
||||||
LDA.b [$04], Y
|
|
||||||
.item_id_set
|
|
||||||
PHA
|
|
||||||
PHX
|
|
||||||
INY
|
|
||||||
TXA : ASL A
|
|
||||||
TAX
|
|
||||||
LDA.l DungeonMask, X : STA.b $08
|
|
||||||
TXA : LSR A : TAX
|
|
||||||
|
|
||||||
.mask_set
|
|
||||||
TXA
|
|
||||||
JSR CheckPotSection
|
|
||||||
BCS +
|
|
||||||
PLX
|
|
||||||
PLA
|
|
||||||
BRA .next_pot
|
|
||||||
+
|
|
||||||
|
|
||||||
LDA.b $CA
|
|
||||||
AND.w #$00FF
|
|
||||||
ASL A
|
|
||||||
TAX
|
|
||||||
if !FEATURE_FIX_BASEROM
|
|
||||||
LDA.l SpriteDropData, X
|
|
||||||
else
|
|
||||||
LDA.l RoomPotData, X
|
|
||||||
endif
|
|
||||||
PLX
|
|
||||||
AND.b $08
|
|
||||||
BEQ .not_obtained
|
|
||||||
PLA
|
|
||||||
BRA .next_pot
|
|
||||||
|
|
||||||
.not_obtained
|
|
||||||
PLA
|
|
||||||
AND.w #$00FF
|
|
||||||
JSR GetLootClass
|
|
||||||
BRA .next_pot
|
|
||||||
|
|
||||||
.done
|
|
||||||
RTS
|
|
||||||
|
|
||||||
CheckJunkPot:
|
|
||||||
LDA.b [$04], Y
|
|
||||||
PHA
|
|
||||||
PHX
|
|
||||||
TXA : ASL A : TAX
|
|
||||||
LDA.l DungeonMask, X : STA.b $08
|
|
||||||
TXA : LSR A
|
|
||||||
JSR CheckPotSection
|
|
||||||
BCS +
|
|
||||||
PLX
|
|
||||||
PLA
|
|
||||||
RTS
|
|
||||||
+
|
|
||||||
|
|
||||||
LDA.b $CA
|
|
||||||
AND.w #$00FF
|
|
||||||
ASL A
|
|
||||||
TAX
|
|
||||||
LDA.l PotCollectionRateTable, X
|
|
||||||
AND.b $08
|
|
||||||
BEQ .not_important
|
|
||||||
|
|
||||||
if !FEATURE_FIX_BASEROM
|
|
||||||
LDA.l SpriteDropData, X
|
|
||||||
else
|
|
||||||
LDA.l RoomPotData, X
|
|
||||||
endif
|
|
||||||
AND.b $08
|
|
||||||
BNE .not_important
|
|
||||||
|
|
||||||
PLX
|
|
||||||
PLA
|
|
||||||
AND.w #$00FF
|
|
||||||
JSR GetPotJunkClass
|
|
||||||
RTS
|
|
||||||
|
|
||||||
.not_important
|
|
||||||
PLX
|
|
||||||
PLA
|
|
||||||
RTS
|
|
||||||
|
|
||||||
CheckEnemies:
|
|
||||||
LDA.b $CA
|
|
||||||
AND.w #$00FF
|
|
||||||
ASL A
|
|
||||||
TAX
|
|
||||||
|
|
||||||
LDA.l UWSpritesPointers, X
|
|
||||||
INC A ; skip the layered/unlayered indicator
|
|
||||||
STA.b $04
|
|
||||||
LDA.w #bank(UWSpritesData)
|
|
||||||
STA.b $06
|
|
||||||
|
|
||||||
LDY.w #$0000
|
|
||||||
LDX.w #$FFFF
|
|
||||||
.next_enemy
|
|
||||||
LDA.b [$04], Y
|
|
||||||
AND.w #$00FF
|
|
||||||
CMP.w #$00FF
|
|
||||||
BNE +
|
|
||||||
JMP .done
|
|
||||||
+
|
|
||||||
LDA.b [$04], Y
|
|
||||||
AND.w #$E000
|
|
||||||
CMP.w #$E000
|
|
||||||
BEQ .overlord
|
|
||||||
INY : INY
|
|
||||||
LDA.b [$04], Y
|
|
||||||
AND.w #$00FF
|
|
||||||
CMP.w #$00F8 : BEQ .major ; major item
|
|
||||||
CMP.w #$00F9 : BEQ .major ; major item in other world
|
|
||||||
CMP.w #$00E4 : BEQ .vanilla_key
|
|
||||||
INY
|
|
||||||
INX
|
|
||||||
BRA .next_enemy
|
|
||||||
|
|
||||||
.overlord
|
|
||||||
INY : INY : INY
|
|
||||||
BRA .next_enemy
|
|
||||||
|
|
||||||
.vanilla_key
|
|
||||||
DEY : DEY
|
|
||||||
LDA.w #$8000 : STA.b $08
|
|
||||||
LDA.b [$04], Y
|
|
||||||
INY #3
|
|
||||||
AND.w #$00FF
|
|
||||||
CMP.w #$00FD ; big key
|
|
||||||
BEQ .big_key
|
|
||||||
CMP.w #$00FE ; small key
|
|
||||||
BEQ .small_key
|
|
||||||
; false alarm -- probably hera basement key
|
|
||||||
INX ; since it's an actual sprite it advances the counter
|
|
||||||
BRA .next_enemy
|
|
||||||
.small_key
|
|
||||||
LDA.w #$0024
|
|
||||||
PHA : PHX
|
|
||||||
BRA .mask_set
|
|
||||||
.big_key
|
|
||||||
LDA.w #$0032
|
|
||||||
PHA : PHX
|
|
||||||
BRA .mask_set
|
|
||||||
|
|
||||||
.major
|
|
||||||
DEY : DEY
|
|
||||||
LDA.b [$04], Y
|
|
||||||
AND.w #$00FF
|
|
||||||
|
|
||||||
.proceed
|
|
||||||
INY : INY : INY
|
|
||||||
|
|
||||||
PHA
|
|
||||||
PHX
|
|
||||||
TXA : ASL A
|
|
||||||
TAX
|
|
||||||
LDA.l DungeonMask, X : STA.b $08
|
|
||||||
TXA : LSR A : TAX
|
|
||||||
|
|
||||||
.mask_set
|
|
||||||
TXA
|
|
||||||
JSR CheckEnemySection
|
|
||||||
BCS +
|
|
||||||
PLX
|
|
||||||
PLA
|
|
||||||
JMP .next_enemy
|
|
||||||
+
|
|
||||||
|
|
||||||
LDA.b $CA
|
|
||||||
AND.w #$00FF
|
|
||||||
ASL A
|
|
||||||
TAX
|
|
||||||
|
|
||||||
LDA.l SpriteDropData, X
|
|
||||||
PLX
|
|
||||||
AND.b $08
|
|
||||||
BEQ .not_obtained
|
|
||||||
PLA
|
|
||||||
JMP .next_enemy
|
|
||||||
|
|
||||||
.not_obtained
|
|
||||||
PLA
|
|
||||||
AND.w #$00FF
|
|
||||||
JSR GetLootClass
|
|
||||||
JMP .next_enemy
|
|
||||||
|
|
||||||
.done
|
|
||||||
RTS
|
|
||||||
|
|
||||||
; A = item id
|
|
||||||
; updates "best loot" value if better
|
|
||||||
GetLootClass:
|
|
||||||
PHX
|
|
||||||
TAX
|
|
||||||
CMP.w #$0025 : BEQ .compass
|
|
||||||
AND.w #$00F0
|
|
||||||
CMP.w #$0080 : BNE .not_compass
|
|
||||||
|
|
||||||
.compass
|
|
||||||
LDA.l AlwaysShowCompass : BNE .check_value
|
|
||||||
|
|
||||||
.not_compass
|
|
||||||
LDA.b $0E
|
|
||||||
BEQ .done
|
|
||||||
CMP.w #$0001
|
|
||||||
BEQ .value_set
|
|
||||||
|
|
||||||
.check_value
|
|
||||||
LDA.l LootTypeMapping, X
|
|
||||||
AND.w #$00FF
|
|
||||||
|
|
||||||
.value_set
|
|
||||||
CMP.b $02
|
|
||||||
BCC .done
|
|
||||||
STA.b $02
|
|
||||||
|
|
||||||
.done
|
|
||||||
PLX
|
|
||||||
RTS
|
|
||||||
|
|
||||||
; A = item id
|
|
||||||
; updates "best loot" value if better
|
|
||||||
GetPotJunkClass:
|
|
||||||
PHX
|
|
||||||
TAX
|
|
||||||
|
|
||||||
LDA.b $0E
|
|
||||||
BEQ .done
|
|
||||||
CMP.w #$0001
|
|
||||||
BEQ .value_set
|
|
||||||
|
|
||||||
; hardcode as junk for now
|
|
||||||
LDA.w #$0002
|
|
||||||
|
|
||||||
.value_set
|
|
||||||
CMP.b $02
|
|
||||||
BCC .done
|
|
||||||
STA.b $02
|
|
||||||
|
|
||||||
.done
|
|
||||||
PLX
|
|
||||||
RTS
|
|
||||||
|
|
||||||
macro DefineGetFooSection(type, offset)
|
|
||||||
Get<type>Section:
|
|
||||||
PHX
|
|
||||||
LDA.b $CA
|
|
||||||
AND.w #$00FF
|
|
||||||
ASL A
|
|
||||||
TAX
|
|
||||||
LDA.l SplitRooms, X
|
|
||||||
TAX
|
|
||||||
|
|
||||||
LDA.l SplitRooms, X
|
|
||||||
AND.w #$00FF
|
|
||||||
STA.b $CE
|
|
||||||
BEQ .found
|
|
||||||
|
|
||||||
INX
|
|
||||||
.check_next_section
|
|
||||||
PHX
|
|
||||||
LDA.l SplitRooms+<offset>, X
|
|
||||||
TAX
|
|
||||||
-
|
|
||||||
LDA.l SplitRooms, X
|
|
||||||
AND.w #$00FF
|
|
||||||
CMP.w #$00FF
|
|
||||||
BEQ .not_this_section
|
|
||||||
CMP.b $CC
|
|
||||||
BEQ .plx_found
|
|
||||||
|
|
||||||
INX
|
|
||||||
BRA -
|
|
||||||
|
|
||||||
.not_this_section
|
|
||||||
PLX
|
|
||||||
TXA : CLC : ADC.w #$000D : TAX
|
|
||||||
DEC.b $CE
|
|
||||||
BNE .check_next_section
|
|
||||||
BRA .found
|
|
||||||
|
|
||||||
.plx_found
|
|
||||||
PLX
|
|
||||||
|
|
||||||
.found
|
|
||||||
PLX
|
|
||||||
LDA.b $CE
|
|
||||||
RTS
|
|
||||||
endmacro
|
|
||||||
|
|
||||||
macro DefineCheckFooSection(type)
|
|
||||||
Check<type>Section:
|
|
||||||
STA.b $CC
|
|
||||||
|
|
||||||
LDA.b $CB
|
|
||||||
AND.w #$00FF
|
|
||||||
BEQ .yes
|
|
||||||
|
|
||||||
JSR Get<type>Section
|
|
||||||
|
|
||||||
LDA.b $CB
|
|
||||||
AND.w #$00FF
|
|
||||||
LSR A : LSR A : LSR A : LSR A
|
|
||||||
DEC A
|
|
||||||
CMP.b $CE
|
|
||||||
BEQ .yes
|
|
||||||
|
|
||||||
.no
|
|
||||||
CLC
|
|
||||||
RTS
|
|
||||||
|
|
||||||
.yes
|
|
||||||
SEC
|
|
||||||
RTS
|
|
||||||
endmacro
|
|
||||||
|
|
||||||
%DefineGetFooSection(Door, 3)
|
|
||||||
%DefineGetFooSection(Stair, 5)
|
|
||||||
%DefineGetFooSection(Chest, 7)
|
|
||||||
%DefineGetFooSection(Pot, 9)
|
|
||||||
%DefineGetFooSection(Enemy, 11)
|
|
||||||
|
|
||||||
%DefineCheckFooSection(Door)
|
|
||||||
%DefineCheckFooSection(Stair)
|
|
||||||
%DefineCheckFooSection(Chest)
|
|
||||||
%DefineCheckFooSection(Pot)
|
|
||||||
%DefineCheckFooSection(Enemy)
|
|
||||||
|
|
||||||
GetIncomingStairSection:
|
|
||||||
PHX
|
|
||||||
AND.w #$0300
|
|
||||||
XBA
|
|
||||||
ASL A
|
|
||||||
TAX
|
|
||||||
LDA.l $8098D8, X
|
|
||||||
STA.b $CC
|
|
||||||
|
|
||||||
LDA.b $CA
|
|
||||||
AND.w #$00FF
|
|
||||||
ASL A
|
|
||||||
TAX
|
|
||||||
LDA.l SplitRooms, X
|
|
||||||
TAX
|
|
||||||
|
|
||||||
LDA.l SplitRooms, X
|
|
||||||
AND.w #$00FF
|
|
||||||
STA.b $CE
|
|
||||||
BEQ .found
|
|
||||||
|
|
||||||
INX
|
|
||||||
.check_next_section
|
|
||||||
LDA.l SplitRooms+0, X
|
|
||||||
AND.w #$00FF
|
|
||||||
AND.b $CC
|
|
||||||
BNE .found
|
|
||||||
TXA : CLC : ADC.w #$000D : TAX
|
|
||||||
DEC.b $CE
|
|
||||||
BNE .check_next_section
|
|
||||||
BRA .found
|
|
||||||
|
|
||||||
.found
|
|
||||||
PLX
|
|
||||||
LDA.b $CE
|
|
||||||
RTS
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
pushpc
|
|
||||||
|
|
||||||
org $87A46E
|
|
||||||
JSL CheckBookTriggerSwitch
|
|
||||||
BCS +
|
|
||||||
skip 15
|
|
||||||
+
|
|
||||||
|
|
||||||
org $8296A8
|
|
||||||
JSL FinishPegChange
|
|
||||||
|
|
||||||
pullpc
|
|
||||||
|
|
||||||
FinishPegChange:
|
|
||||||
LDA.b #$20
|
|
||||||
TRB.w $037A
|
|
||||||
|
|
||||||
STZ.b $B0
|
|
||||||
STZ.b $11
|
|
||||||
RTL
|
|
||||||
|
|
||||||
CheckBookTriggerSwitch:
|
|
||||||
LDA.l CrystalSwitchBook
|
|
||||||
BEQ +
|
|
||||||
|
|
||||||
LDA.b $10
|
|
||||||
CMP.b #$07
|
|
||||||
BNE +
|
|
||||||
|
|
||||||
LDA.l $7EC172
|
|
||||||
EOR.b #$01
|
|
||||||
STA.l $7EC172
|
|
||||||
|
|
||||||
LDA.b #$16
|
|
||||||
STA.b $11
|
|
||||||
|
|
||||||
LDA.b #$20
|
|
||||||
TSB.w $037A
|
|
||||||
|
|
||||||
LDA.b #$25
|
|
||||||
JSL $8DBB8A
|
|
||||||
|
|
||||||
SEC
|
|
||||||
BRA .done
|
|
||||||
|
|
||||||
+ CLC
|
|
||||||
.done
|
|
||||||
; what we wrote over
|
|
||||||
LDA.b $3A
|
|
||||||
AND.b #$BF
|
|
||||||
STA.b $3A
|
|
||||||
RTL
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
DoorConnectionTiles:
|
|
||||||
.vertical
|
|
||||||
dw $0000, $0000 ; $00
|
|
||||||
dw $01C0, $0000 ; $01 left -> left
|
|
||||||
dw $01D0, $01D1 ; $02 left -> middle
|
|
||||||
dw $81C3, $41C3 ; $03 left -> right
|
|
||||||
dw $81D0, $81D1 ; $04 middle -> left
|
|
||||||
dw $01C1, $41C1 ; $05 middle -> middle
|
|
||||||
dw $C1D1, $C1D0 ; $06 middle -> right
|
|
||||||
dw $01C3, $C1C3 ; $07 right -> left
|
|
||||||
dw $41D1, $41D0 ; $08 right -> middle
|
|
||||||
dw $0000, $01C0 ; $09 right -> right
|
|
||||||
dw $41C2, $41C1 ; $0A left-middle -> left-middle
|
|
||||||
dw $81D2, $C1D0 ; $0B left-middle -> left-right
|
|
||||||
dw $41D3, $81D3 ; $0C left-middle -> middle-right
|
|
||||||
dw $01D2, $41D0 ; $0D left-right -> left-middle
|
|
||||||
dw $01C0, $01C0 ; $0E left-right -> left-right
|
|
||||||
dw $01D0, $41D2 ; $0F left-right -> middle-right
|
|
||||||
dw $C1D3, $01D3 ; $10 middle-right -> left-middle
|
|
||||||
dw $81D0, $C1D2 ; $11 middle-right -> left-right
|
|
||||||
dw $01C1, $01C2 ; $12 middle-right -> middle-right
|
|
||||||
dw $41C2, $01C2 ; $13 triple -> triple
|
|
||||||
.horizontal
|
|
||||||
dw $0300, $0300 ; $00
|
|
||||||
dw $01C4, $0300 ; $01 top -> top
|
|
||||||
dw $C1D4, $C1D5 ; $02 top -> middle
|
|
||||||
dw $81C7, $41C7 ; $03 top -> bottom
|
|
||||||
dw $81D4, $81D5 ; $04 middle -> top
|
|
||||||
dw $01C5, $81C5 ; $05 middle -> middle
|
|
||||||
dw $01D5, $01D4 ; $06 middle -> bottom
|
|
||||||
dw $C1C7, $01C7 ; $07 bottom -> top
|
|
||||||
dw $41D5, $41D4 ; $08 bottom -> middle
|
|
||||||
dw $0300, $01C4 ; $09 bottom -> bottom
|
|
||||||
dw $41C6, $41C5 ; $0A top-middle -> top-middle
|
|
||||||
dw $41D6, $01D4 ; $0B top-middle -> top-bottom
|
|
||||||
dw $41D7, $81D7 ; $0C top-middle -> middle-bottom
|
|
||||||
dw $01D6, $41D4 ; $0D top-bottom -> top-middle
|
|
||||||
dw $01C4, $01C4 ; $0E top-bottom -> top-bottom
|
|
||||||
dw $C1D4, $81D6 ; $0F top-bottom -> middle-bottom
|
|
||||||
dw $C1D7, $01D7 ; $10 middle-bottom -> top-middle
|
|
||||||
dw $81D4, $C1D6 ; $11 middle-bottom -> top-bottom
|
|
||||||
dw $01C5, $01C6 ; $12 middle-bottom -> middle-bottom
|
|
||||||
dw $81C6, $01C6 ; $13 triple -> triple
|
|
||||||
@@ -1,309 +0,0 @@
|
|||||||
DoorSlotsSprites:
|
|
||||||
; center
|
|
||||||
dw $48A8
|
|
||||||
; north
|
|
||||||
dw $2090, $20A8, $20C0
|
|
||||||
dw $2098, $20B8
|
|
||||||
; west
|
|
||||||
dw $3080, $4880, $6080
|
|
||||||
dw $3880, $5880
|
|
||||||
; south
|
|
||||||
dw $7090, $70A8, $70C0
|
|
||||||
dw $7098, $70B8
|
|
||||||
; east
|
|
||||||
dw $30D0, $48D0, $60D0
|
|
||||||
dw $38D0, $58D0
|
|
||||||
; stairs
|
|
||||||
dw $B080, $B098, $B0B0
|
|
||||||
; drop/warp
|
|
||||||
dw $B0D0
|
|
||||||
|
|
||||||
DoorSlotsBG1:
|
|
||||||
; center
|
|
||||||
dw $1135
|
|
||||||
; north
|
|
||||||
dw $1092, $1095, $1098
|
|
||||||
dw $1093, $1097
|
|
||||||
; west
|
|
||||||
dw $10D0, $1130, $1190
|
|
||||||
dw $10F0, $1170
|
|
||||||
; south
|
|
||||||
dw $11D2, $11D5, $11D8
|
|
||||||
dw $11D3, $11D7
|
|
||||||
; east
|
|
||||||
dw $10DA, $113A, $119A
|
|
||||||
dw $10FA, $117A
|
|
||||||
; stairs
|
|
||||||
dw $12D0, $12D3, $12D6
|
|
||||||
; drop/warp
|
|
||||||
dw $12DA
|
|
||||||
|
|
||||||
DoorSlotsBG2:
|
|
||||||
; center
|
|
||||||
dw $0000
|
|
||||||
; north
|
|
||||||
dw $FEBA, $FEC0, $FEC6
|
|
||||||
dw $FEBC, $FEC4
|
|
||||||
; west
|
|
||||||
dw $FF36, $FFF6, $00B6
|
|
||||||
dw $FF76, $0076
|
|
||||||
; south
|
|
||||||
dw $013A, $0140, $0146
|
|
||||||
dw $013C, $0144
|
|
||||||
; east
|
|
||||||
dw $FF4A, $000A, $00CA
|
|
||||||
dw $FF8A, $008A
|
|
||||||
; stairs
|
|
||||||
dw $0336, $033C, $0342
|
|
||||||
; drop/warp
|
|
||||||
dw $034A
|
|
||||||
|
|
||||||
DoorSlotSides:
|
|
||||||
db $02, $0C, $16, $20
|
|
||||||
|
|
||||||
DoorSlotOffsets:
|
|
||||||
db $02, $02, $06, $00
|
|
||||||
|
|
||||||
; up, left, down, right
|
|
||||||
NextCursorSlot:
|
|
||||||
db $80, $81, $82, $83
|
|
||||||
; top
|
|
||||||
db $FF, $C1, $00, $04
|
|
||||||
db $FF, $04, $00, $05
|
|
||||||
db $FF, $05, $00, $C3
|
|
||||||
db $FF, $01, $00, $02
|
|
||||||
db $FF, $02, $00, $03
|
|
||||||
; left
|
|
||||||
db $C0, $FF, $09, $00
|
|
||||||
db $09, $FF, $0A, $00
|
|
||||||
db $0A, $FF, $C2, $00
|
|
||||||
db $06, $FF, $07, $00
|
|
||||||
db $07, $FF, $08, $00
|
|
||||||
; bottom
|
|
||||||
db $00, $E1, $85, $0E
|
|
||||||
db $00, $0E, $85, $0F
|
|
||||||
db $00, $0F, $85, $E3
|
|
||||||
db $00, $0B, $85, $0C
|
|
||||||
db $00, $0C, $85, $0D
|
|
||||||
; right
|
|
||||||
db $E0, $00, $13, $FF
|
|
||||||
db $13, $00, $14, $FF
|
|
||||||
db $14, $00, $E2, $FF
|
|
||||||
db $10, $00, $11, $FF
|
|
||||||
db $11, $00, $12, $FF
|
|
||||||
; stairs
|
|
||||||
db $84, $18, $FF, $16
|
|
||||||
db $84, $15, $FF, $17
|
|
||||||
db $84, $16, $FF, $18
|
|
||||||
; drop/warp
|
|
||||||
db $84, $17, $FF, $15
|
|
||||||
|
|
||||||
NextCursorSpecial:
|
|
||||||
.center
|
|
||||||
db $02, $04, $05, $01, $03, $FF
|
|
||||||
db $07, $09, $0A, $06, $08, $FF
|
|
||||||
db $0C, $0E, $0F, $0B, $0D, $15, $16, $17, $18, $FF
|
|
||||||
db $11, $13, $14, $10, $12, $FF
|
|
||||||
db $0C, $0E, $0F, $0B, $0D, $00, $FF
|
|
||||||
db $17, $16, $15, $18, $FF
|
|
||||||
.center_offset
|
|
||||||
db $00, $06, $0C, $16, $1C, $23
|
|
||||||
.start_index
|
|
||||||
db $01, $06, $0B, $10, $15
|
|
||||||
.start_direction
|
|
||||||
db $03, $02, $03, $02, $03
|
|
||||||
.end_index
|
|
||||||
db $03, $08, $0D, $12, $18
|
|
||||||
.end_direction
|
|
||||||
db $01, $00, $01, $00, $01
|
|
||||||
|
|
||||||
SingleEdgeCurrentRoomConnectors:
|
|
||||||
.north
|
|
||||||
dw $01C0, $0300, $01C0, $0300, $01C0, $0300 ; left -> left
|
|
||||||
dw $01C1, $41C1, $81D0, $81D1, $01C0, $0300 ; left -> middle
|
|
||||||
dw $41D1, $41D0, $01C1, $41C1, $81D0, $81D1 ; left -> right
|
|
||||||
dw $01C0, $0300, $01D0, $01D1, $01C1, $41C1 ; middle -> left
|
|
||||||
dw $01C1, $41C1, $01C1, $41C1, $01C1, $41C1 ; middle -> middle
|
|
||||||
dw $0300, $01C0, $41D1, $41D0, $01C1, $41C1 ; middle -> right
|
|
||||||
dw $01D0, $01D1, $01C1, $41C1, $C1D1, $C1D0 ; right -> left
|
|
||||||
dw $01C1, $41C1, $C1D1, $C1D0, $0300, $01C0 ; right -> middle
|
|
||||||
dw $0300, $01C0, $0300, $01C0, $0300, $01C0 ; right -> right
|
|
||||||
.west
|
|
||||||
dw $01C4, $01C4, $01C4, $0300, $0300, $0300 ; top -> top
|
|
||||||
dw $01C5, $81D4, $01C4, $C1C5, $81D5, $0300 ; top -> middle
|
|
||||||
dw $41D5, $01C5, $81D4, $41D4, $C1C5, $81D5 ; top -> bottom
|
|
||||||
dw $01C4, $C1D4, $01C5, $0300, $C1D5, $C1C5 ; middle -> top
|
|
||||||
dw $01C5, $01C5, $01C5, $C1C5, $C1C5, $C1C5 ; middle -> middle
|
|
||||||
dw $0300, $41D5, $01C5, $01C4, $41D4, $C1C5 ; middle -> bottom
|
|
||||||
dw $C1D4, $01C5, $01D5, $C1D5, $C1C5, $01D4 ; bottom -> top
|
|
||||||
dw $01C5, $01D5, $0300, $C1C5, $01D4, $01C4 ; bottom -> middle
|
|
||||||
dw $0300, $0300, $0300, $01C4, $01C4, $01C4 ; bottom -> bottom
|
|
||||||
.south
|
|
||||||
dw $01C0, $0300, $01C0, $0300, $01C0, $0300 ; left -> left
|
|
||||||
dw $01C0, $0300, $01D0, $01D1, $01C1, $41C1 ; left -> middle
|
|
||||||
dw $01D0, $01D1, $01C1, $41C1, $C1D1, $C1D0 ; left -> right
|
|
||||||
dw $01C1, $41C1, $81D0, $81D1, $01C0, $0300 ; middle -> left
|
|
||||||
dw $01C1, $41C1, $01C1, $41C1, $01C1, $41C1 ; middle -> middle
|
|
||||||
dw $01C1, $41C1, $C1D1, $C1D0, $0300, $01C0 ; middle -> right
|
|
||||||
dw $41D1, $41D0, $01C1, $41C1, $81D0, $81D1 ; right -> left
|
|
||||||
dw $0300, $01C0, $41D1, $41D0, $01C1, $41C1 ; right -> middle
|
|
||||||
dw $0300, $01C0, $0300, $01C0, $0300, $01C0 ; right -> right
|
|
||||||
.east
|
|
||||||
dw $01C4, $01C4, $01C4, $0300, $0300, $0300 ; top -> top
|
|
||||||
dw $01C4, $C1D4, $01C5, $0300, $C1D5, $81C5 ; top -> middle
|
|
||||||
dw $C1D4, $01C5, $01D5, $C1D5, $81C5, $01D4 ; top -> bottom
|
|
||||||
dw $01C5, $81D4, $01C4, $81C5, $81D5, $0300 ; middle -> top
|
|
||||||
dw $01C5, $01C5, $01C5, $81C5, $81C5, $81C5 ; middle -> middle
|
|
||||||
dw $01C5, $01D5, $0300, $81C5, $01D4, $01C4 ; middle -> bottom
|
|
||||||
dw $41D5, $01C5, $81D4, $41D4, $81C5, $81D5 ; bottom -> top
|
|
||||||
dw $0300, $41D5, $01C5, $01C4, $41D4, $81C5 ; bottom -> middle
|
|
||||||
dw $0300, $0300, $0300, $01C4, $01C4, $01C4 ; bottom -> bottom
|
|
||||||
|
|
||||||
QuadrantMasks:
|
|
||||||
; north
|
|
||||||
dw $0008, $000C, $0004
|
|
||||||
; west
|
|
||||||
dw $0008, $000A, $0002
|
|
||||||
; south
|
|
||||||
dw $0002, $0003, $0001
|
|
||||||
; east
|
|
||||||
dw $0004, $0005, $0001
|
|
||||||
|
|
||||||
EntranceQuadrantMasks:
|
|
||||||
dw $0002
|
|
||||||
dw $0003
|
|
||||||
dw $0001
|
|
||||||
|
|
||||||
DropdownQuadrantMasks:
|
|
||||||
dw $0008
|
|
||||||
dw $000C
|
|
||||||
dw $0004
|
|
||||||
|
|
||||||
MultiConnectorMapping:
|
|
||||||
.two
|
|
||||||
db $02, $00
|
|
||||||
.three
|
|
||||||
db $02, $01, $00
|
|
||||||
|
|
||||||
MultiConnectorTiles:
|
|
||||||
.north
|
|
||||||
..two
|
|
||||||
dw $41C7, $81C7, $C1C7, $01C7
|
|
||||||
..three
|
|
||||||
dw $41C7, $01C4, $81F7, $C1F7, $01C4, $01C7
|
|
||||||
.west
|
|
||||||
..two
|
|
||||||
dw $81C7, $41C7, $C1C7, $01C7
|
|
||||||
..three
|
|
||||||
dw $81C7, $01C0, $41E7, $C1E7, $01C0, $01C7
|
|
||||||
.south
|
|
||||||
..two
|
|
||||||
dw $C1C7, $01C7, $41C7, $81C7
|
|
||||||
..three
|
|
||||||
dw $C1C7, $01C4, $01F7, $41F7, $01C4, $81C7
|
|
||||||
.east
|
|
||||||
..two
|
|
||||||
dw $C1C7, $01C7, $81C7, $41C7
|
|
||||||
..three
|
|
||||||
dw $C1C7, $01C0, $01E7, $81E7, $01C0, $41C7
|
|
||||||
.direction_index
|
|
||||||
db $00, $14, $28, $3C
|
|
||||||
.start_offset
|
|
||||||
..two
|
|
||||||
dw $FF7E, $FFBC, $00BE, $FFC6
|
|
||||||
..three
|
|
||||||
dw $FF7C, $FF7C, $00BC, $FF86
|
|
||||||
.increment
|
|
||||||
db $02, $40
|
|
||||||
|
|
||||||
EdgePositions:
|
|
||||||
.north
|
|
||||||
db $01, $00 ; HC Basement
|
|
||||||
db $02 ; Desert West Wing
|
|
||||||
db $00, $01, $02 ; Desert Lobby
|
|
||||||
db $00 ; Desert East Wing
|
|
||||||
db $01, $02 ; TT
|
|
||||||
db $00, $01 ; different TT
|
|
||||||
.west
|
|
||||||
db $02 ; TT Attic
|
|
||||||
db $02, $02 ; Desert North Hall
|
|
||||||
db $00, $02 ; HC Basement
|
|
||||||
db $00 ; Desert East Wing
|
|
||||||
db $02, $00 ; TT Triple
|
|
||||||
db $02 ; TT Big Key Chest
|
|
||||||
.south
|
|
||||||
db $01, $00 ; HC Basement
|
|
||||||
db $02 ; Desert West Wing
|
|
||||||
db $00, $01, $02 ; Desert Lobby
|
|
||||||
db $00 ; Desert East Wing
|
|
||||||
db $01, $02 ; TT
|
|
||||||
db $00, $01 ; different TT
|
|
||||||
.east
|
|
||||||
db $02 ; TT Attic
|
|
||||||
db $02, $02 ; Desert North Hall
|
|
||||||
db $02, $00 ; HC Basement
|
|
||||||
db $00 ; Desert East Wing
|
|
||||||
db $02, $00 ; TT Triple
|
|
||||||
db $02 ; TT Big Key Chest
|
|
||||||
|
|
||||||
EdgeConnectionIndices:
|
|
||||||
; North
|
|
||||||
dw $0182, $0000
|
|
||||||
dw $0082, $0003
|
|
||||||
dw $0283, $0006
|
|
||||||
dw $0084, $0009
|
|
||||||
dw $0184, $000C
|
|
||||||
dw $0284, $000F
|
|
||||||
dw $0085, $0012
|
|
||||||
dw $01DB, $0015
|
|
||||||
dw $02DB, $0018
|
|
||||||
dw $00DC, $001B
|
|
||||||
dw $01DC, $001E
|
|
||||||
|
|
||||||
; South
|
|
||||||
dw $0772, $0021
|
|
||||||
dw $0672, $0024
|
|
||||||
dw $0873, $0027
|
|
||||||
dw $0674, $002A
|
|
||||||
dw $0774, $002D
|
|
||||||
dw $0874, $0030
|
|
||||||
dw $0675, $0033
|
|
||||||
dw $07CB, $0036
|
|
||||||
dw $08CB, $0039
|
|
||||||
dw $06CC, $003C
|
|
||||||
dw $07CC, $003F
|
|
||||||
|
|
||||||
; West
|
|
||||||
dw $0565, $0042
|
|
||||||
dw $0574, $0045
|
|
||||||
dw $0575, $0048
|
|
||||||
dw $0582, $004B
|
|
||||||
dw $0382, $004E
|
|
||||||
dw $0385, $0051
|
|
||||||
dw $05CC, $0054
|
|
||||||
dw $03CC, $0057
|
|
||||||
dw $05DC, $005A
|
|
||||||
|
|
||||||
; East
|
|
||||||
dw $0B64, $005D
|
|
||||||
dw $0B73, $0060
|
|
||||||
dw $0B74, $0063
|
|
||||||
dw $0981, $0066
|
|
||||||
dw $0B81, $0069
|
|
||||||
dw $0984, $006C
|
|
||||||
dw $0BCB, $006F
|
|
||||||
dw $09CB, $0072
|
|
||||||
dw $0BDB, $0075
|
|
||||||
|
|
||||||
dw $FFFF
|
|
||||||
|
|
||||||
InRoomConnectionIndices:
|
|
||||||
dw $020B, $0000
|
|
||||||
dw $081B, $0002
|
|
||||||
dw $023F, $0004
|
|
||||||
dw $081F, $0006
|
|
||||||
dw $007E, $0008
|
|
||||||
dw $065E, $000A
|
|
||||||
dw $0296, $000C
|
|
||||||
dw $083D, $000E
|
|
||||||
dw $FFFF
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
dw $200C
|
|
||||||
dw $100E
|
|
||||||
dw $2012
|
|
||||||
dw $1023
|
|
||||||
dw $1024
|
|
||||||
dw $2028
|
|
||||||
dw $204A
|
|
||||||
dw $4056
|
|
||||||
dw $4057
|
|
||||||
dw $4058
|
|
||||||
dw $4059
|
|
||||||
dw $1060
|
|
||||||
dw $2061
|
|
||||||
dw $4062
|
|
||||||
dw $4063
|
|
||||||
dw $2077
|
|
||||||
dw $4083
|
|
||||||
dw $2084
|
|
||||||
dw $1085
|
|
||||||
dw $4098
|
|
||||||
dw $20C9
|
|
||||||
dw $40D5
|
|
||||||
dw $10D6
|
|
||||||
dw $20DB
|
|
||||||
dw $40E0
|
|
||||||
dw $FFFF
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
FallTable:
|
|
||||||
dw $1007, $1017 ; Moldorm Arena
|
|
||||||
dw $1017, $1027 ; Below Moldorm drop to Big Chest
|
|
||||||
dw $101E, $103E ; IP first drop
|
|
||||||
dw $1027, $1031 ; ToH Big Chest drop
|
|
||||||
dw $1031, $1077 ; Second Floor ToH
|
|
||||||
dw $1039, $1029 ; Mothula drop
|
|
||||||
dw $103A, $100A ; Pod front drop
|
|
||||||
dw $103D, $1096 ; GT Torches drop
|
|
||||||
dw $104D, $10A6 ; Moldorm 2 drop
|
|
||||||
dw $1054, $1034 ; Left side Swamp
|
|
||||||
dw $105E, $107E ; IP drop to tall icy room
|
|
||||||
dw $107E, $109E ; Freezors drop (to big chest)
|
|
||||||
dw $208C, $101C ; Ice Armos drop
|
|
||||||
dw $1097, $10D1 ; Mire Cutscene
|
|
||||||
dw $109E, $10BE ; IP Big Chest tile (push blocks)
|
|
||||||
dw $10CE, $10DE ; Kholdstare drop
|
|
||||||
; db $65, $AC ; TT Attic
|
|
||||||
; db $77, $A7 ; ToH drop to fairy room (Herapot)
|
|
||||||
; db $A9, $89 ; EP drop to fairy room
|
|
||||||
; db $BE, $4F ; IP drop to fairy room
|
|
||||||
dw $FFFF
|
|
||||||
|
|
||||||
WarpTable:
|
|
||||||
dw $2009, $104B ; PoD Basement (start)
|
|
||||||
dw $100A, $1009 ; PoD Stalfos Basement
|
|
||||||
dw $100B, $206A ; PoD Turtle Room to Boss
|
|
||||||
dw $104B, $2009 ; PoD Basement (mimics)
|
|
||||||
dw $207B, $209D ; GT post-compass island hardhat
|
|
||||||
dw $207D, $109B ; GT warp maze
|
|
||||||
dw $109D, $307B ; GT compass room
|
|
||||||
dw $109B, $207D ; GT warp maze
|
|
||||||
dw $10B1, $20B2 ; South of Fishbone warp
|
|
||||||
dw $10D1, $10B1 ; Mire Big Key Chest warp
|
|
||||||
; db $89, $A9 ; EP Fairy Room
|
|
||||||
; db $A7, $17 ; ToH Fairy Room
|
|
||||||
; db $4F, $BE ; IP Fairy Room
|
|
||||||
dw $FFFF
|
|
||||||
@@ -1,276 +0,0 @@
|
|||||||
!TIER_UNKNOWN = $01
|
|
||||||
!TIER_JUNK = $02
|
|
||||||
!TIER_LOW_KEY = $03
|
|
||||||
!TIER_HEALTH = $05
|
|
||||||
!TIER_MINOR = $06
|
|
||||||
!TIER_MAP = $07
|
|
||||||
!TIER_COMPASS = $08
|
|
||||||
!TIER_SM_KEY = $09
|
|
||||||
!TIER_BIG_KEY = $0A
|
|
||||||
!TIER_MAJOR = $0B
|
|
||||||
!TIER_PENDANT = $0C
|
|
||||||
!TIER_CRYSTAL = $0D
|
|
||||||
!TIER_TFP = $0E
|
|
||||||
!TIER_TFORCE = $0F
|
|
||||||
|
|
||||||
db !TIER_MAJOR ; 00 - Fighter Sword and Shield
|
|
||||||
db !TIER_MAJOR ; 01 - Master Sword
|
|
||||||
db !TIER_MAJOR ; 02 - Tempered Sword
|
|
||||||
db !TIER_MAJOR ; 03 - Butter Sword
|
|
||||||
db !TIER_JUNK ; 04 - Fighter Shield
|
|
||||||
db !TIER_MINOR ; 05 - Fire Shield
|
|
||||||
db !TIER_MINOR ; 06 - Mirror Shield
|
|
||||||
db !TIER_MAJOR ; 07 - Fire Rod
|
|
||||||
db !TIER_MAJOR ; 08 - Ice Rod
|
|
||||||
db !TIER_MAJOR ; 09 - Hammer
|
|
||||||
db !TIER_MAJOR ; 0A - Hookshot
|
|
||||||
db !TIER_MAJOR ; 0B - Bow
|
|
||||||
db !TIER_MINOR ; 0C - Boomerang
|
|
||||||
db !TIER_MINOR ; 0D - Powder
|
|
||||||
db !TIER_JUNK ; 0E - Bottle Refill (bee)
|
|
||||||
db !TIER_MAJOR ; 0F - Bombos
|
|
||||||
db !TIER_MAJOR ; 10 - Ether
|
|
||||||
db !TIER_MAJOR ; 11 - Quake
|
|
||||||
db !TIER_MAJOR ; 12 - Lamp
|
|
||||||
db !TIER_MINOR ; 13 - Shovel
|
|
||||||
db !TIER_MAJOR ; 14 - Flute
|
|
||||||
db !TIER_MAJOR ; 15 - Somaria
|
|
||||||
db !TIER_MINOR ; 16 - Bottle
|
|
||||||
db !TIER_HEALTH ; 17 - Heartpiece
|
|
||||||
db !TIER_MINOR ; 18 - Byrna
|
|
||||||
db !TIER_MINOR ; 19 - Cape
|
|
||||||
db !TIER_MAJOR ; 1A - Mirror
|
|
||||||
db !TIER_MAJOR ; 1B - Glove
|
|
||||||
db !TIER_MAJOR ; 1C - Mitts
|
|
||||||
db !TIER_MAJOR ; 1D - Book
|
|
||||||
db !TIER_MAJOR ; 1E - Flippers
|
|
||||||
db !TIER_MAJOR ; 1F - Pearl
|
|
||||||
db !TIER_CRYSTAL ; 20 - Crystal
|
|
||||||
db !TIER_MINOR ; 21 - Net
|
|
||||||
db !TIER_MINOR ; 22 - Blue Mail
|
|
||||||
db !TIER_MINOR ; 23 - Red Mail
|
|
||||||
db !TIER_LOW_KEY ; 24 - Small Key
|
|
||||||
db !TIER_COMPASS ; 25 - Compass
|
|
||||||
db !TIER_HEALTH ; 26 - Heart Container from 4/4
|
|
||||||
db !TIER_JUNK ; 27 - Bomb
|
|
||||||
db !TIER_JUNK ; 28 - 3 bombs
|
|
||||||
db !TIER_MINOR ; 29 - Mushroom
|
|
||||||
db !TIER_MINOR ; 2A - Red boomerang
|
|
||||||
db !TIER_MINOR ; 2B - Full bottle (red)
|
|
||||||
db !TIER_MINOR ; 2C - Full bottle (green)
|
|
||||||
db !TIER_MINOR ; 2D - Full bottle (blue)
|
|
||||||
db !TIER_HEALTH ; 2E - Potion refill (red)
|
|
||||||
db !TIER_HEALTH ; 2F - Potion refill (green)
|
|
||||||
db !TIER_HEALTH ; 30 - Potion refill (blue)
|
|
||||||
db !TIER_JUNK ; 31 - 10 bombs
|
|
||||||
db !TIER_BIG_KEY ; 32 - Big key
|
|
||||||
db !TIER_MAP ; 33 - Map
|
|
||||||
db !TIER_JUNK ; 34 - 1 rupee
|
|
||||||
db !TIER_JUNK ; 35 - 5 rupees
|
|
||||||
db !TIER_JUNK ; 36 - 20 rupees
|
|
||||||
db !TIER_PENDANT ; 37 - Green pendant
|
|
||||||
db !TIER_PENDANT ; 38 - Blue pendant
|
|
||||||
db !TIER_PENDANT ; 39 - Red pendant
|
|
||||||
db !TIER_MAJOR ; 3A - Tossed bow
|
|
||||||
db !TIER_MAJOR ; 3B - Silvers
|
|
||||||
db !TIER_MINOR ; 3C - Full bottle (bee)
|
|
||||||
db !TIER_MINOR ; 3D - Full bottle (fairy)
|
|
||||||
db !TIER_HEALTH ; 3E - Boss heart
|
|
||||||
db !TIER_HEALTH ; 3F - Sanc heart
|
|
||||||
db !TIER_JUNK ; 40 - 100 rupees
|
|
||||||
db !TIER_JUNK ; 41 - 50 rupees
|
|
||||||
db !TIER_JUNK ; 42 - Heart
|
|
||||||
db !TIER_JUNK ; 43 - Arrow
|
|
||||||
db !TIER_JUNK ; 44 - 10 arrows
|
|
||||||
db !TIER_JUNK ; 45 - Small magic
|
|
||||||
db !TIER_JUNK ; 46 - 300 rupees
|
|
||||||
db !TIER_JUNK ; 47 - 20 rupees green
|
|
||||||
db !TIER_MINOR ; 48 - Full bottle (good bee)
|
|
||||||
db !TIER_MAJOR ; 49 - Tossed fighter sword
|
|
||||||
db !TIER_MAJOR ; 4A - Active Flute
|
|
||||||
db !TIER_MAJOR ; 4B - Boots
|
|
||||||
|
|
||||||
db !TIER_MINOR ; 4C - Bomb capacity (50)
|
|
||||||
db !TIER_MINOR ; 4D - Arrow capacity (70)
|
|
||||||
db !TIER_MINOR ; 4E - 1/2 magic
|
|
||||||
db !TIER_MINOR ; 4F - 1/4 magic
|
|
||||||
db !TIER_MAJOR ; 50 - Safe master sword
|
|
||||||
db !TIER_MINOR ; 51 - Bomb capacity (+5)
|
|
||||||
db !TIER_MINOR ; 52 - Bomb capacity (+10)
|
|
||||||
db !TIER_MINOR ; 53 - Arrow capacity (+5)
|
|
||||||
db !TIER_MINOR ; 54 - Arrow capacity (+10)
|
|
||||||
db !TIER_JUNK ; 55 - Programmable item 1
|
|
||||||
db !TIER_JUNK ; 56 - Programmable item 2
|
|
||||||
db !TIER_JUNK ; 57 - Programmable item 3
|
|
||||||
db !TIER_MAJOR ; 58 - Upgrade-only silver arrows
|
|
||||||
db !TIER_JUNK ; 59 - Rupoor
|
|
||||||
db !TIER_JUNK ; 5A - Nothing
|
|
||||||
db !TIER_JUNK ; 5B - Red clock
|
|
||||||
db !TIER_JUNK ; 5C - Blue clock
|
|
||||||
db !TIER_JUNK ; 5D - Green clock
|
|
||||||
db !TIER_MAJOR ; 5E - Progressive sword
|
|
||||||
db !TIER_MINOR ; 5F - Progressive shield
|
|
||||||
db !TIER_MINOR ; 60 - Progressive armor
|
|
||||||
db !TIER_MAJOR ; 61 - Progressive glove
|
|
||||||
db !TIER_JUNK ; 62 - RNG pool item (single)
|
|
||||||
db !TIER_JUNK ; 63 - RNG pool item (multi)
|
|
||||||
db !TIER_MAJOR ; 64 - Progressive bow
|
|
||||||
db !TIER_MAJOR ; 65 - Progressive bow
|
|
||||||
db !TIER_JUNK ; 66 -
|
|
||||||
db !TIER_JUNK ; 67 -
|
|
||||||
db !TIER_JUNK ; 68 -
|
|
||||||
db !TIER_JUNK ; 69 -
|
|
||||||
db !TIER_TFORCE ; 6A - Triforce
|
|
||||||
db !TIER_TFP ; 6B - Power star
|
|
||||||
db !TIER_TFP ; 6C - Triforce Piece
|
|
||||||
db !TIER_JUNK ; 6D - Server request item
|
|
||||||
db !TIER_JUNK ; 6E - Server request item (dungeon drop)
|
|
||||||
db !TIER_JUNK ; 6F -
|
|
||||||
|
|
||||||
db !TIER_MAP ; 70 - Map of Light World
|
|
||||||
db !TIER_MAP ; 71 - Map of Dark World
|
|
||||||
db !TIER_MAP ; 72 - Map of Ganon's Tower
|
|
||||||
db !TIER_MAP ; 73 - Map of Turtle Rock
|
|
||||||
db !TIER_MAP ; 74 - Map of Thieves' Town
|
|
||||||
db !TIER_MAP ; 75 - Map of Tower of Hera
|
|
||||||
db !TIER_MAP ; 76 - Map of Ice Palace
|
|
||||||
db !TIER_MAP ; 77 - Map of Skull Woods
|
|
||||||
db !TIER_MAP ; 78 - Map of Misery Mire
|
|
||||||
db !TIER_MAP ; 79 - Map of Dark Palace
|
|
||||||
db !TIER_MAP ; 7A - Map of Swamp Palace
|
|
||||||
db !TIER_MAP ; 7B - Map of Agahnim's Tower
|
|
||||||
db !TIER_MAP ; 7C - Map of Desert Palace
|
|
||||||
db !TIER_MAP ; 7D - Map of Eastern Palace
|
|
||||||
db !TIER_MAP ; 7E - Map of Hyrule Castle
|
|
||||||
db !TIER_MAP ; 7F - Map of Sewers
|
|
||||||
|
|
||||||
db !TIER_COMPASS ; 80 - Compass of Light World
|
|
||||||
db !TIER_COMPASS ; 81 - Compass of Dark World
|
|
||||||
db !TIER_COMPASS ; 82 - Compass of Ganon's Tower
|
|
||||||
db !TIER_COMPASS ; 83 - Compass of Turtle Rock
|
|
||||||
db !TIER_COMPASS ; 84 - Compass of Thieves' Town
|
|
||||||
db !TIER_COMPASS ; 85 - Compass of Tower of Hera
|
|
||||||
db !TIER_COMPASS ; 86 - Compass of Ice Palace
|
|
||||||
db !TIER_COMPASS ; 87 - Compass of Skull Woods
|
|
||||||
db !TIER_COMPASS ; 88 - Compass of Misery Mire
|
|
||||||
db !TIER_COMPASS ; 89 - Compass of Dark Palace
|
|
||||||
db !TIER_COMPASS ; 8A - Compass of Swamp Palace
|
|
||||||
db !TIER_COMPASS ; 8B - Compass of Agahnim's Tower
|
|
||||||
db !TIER_COMPASS ; 8C - Compass of Desert Palace
|
|
||||||
db !TIER_COMPASS ; 8D - Compass of Eastern Palace
|
|
||||||
db !TIER_COMPASS ; 8E - Compass of Hyrule Castle
|
|
||||||
db !TIER_COMPASS ; 8F - Compass of Sewers
|
|
||||||
|
|
||||||
db !TIER_BIG_KEY ; 90 - Skull key
|
|
||||||
db !TIER_BIG_KEY ; 91 - Reserved
|
|
||||||
db !TIER_BIG_KEY ; 92 - Big key of Ganon's Tower
|
|
||||||
db !TIER_BIG_KEY ; 93 - Big key of Turtle Rock
|
|
||||||
db !TIER_BIG_KEY ; 94 - Big key of Thieves' Town
|
|
||||||
db !TIER_BIG_KEY ; 95 - Big key of Tower of Hera
|
|
||||||
db !TIER_BIG_KEY ; 96 - Big key of Ice Palace
|
|
||||||
db !TIER_BIG_KEY ; 97 - Big key of Skull Woods
|
|
||||||
db !TIER_BIG_KEY ; 98 - Big key of Misery Mire
|
|
||||||
db !TIER_BIG_KEY ; 99 - Big key of Dark Palace
|
|
||||||
db !TIER_BIG_KEY ; 9A - Big key of Swamp Palace
|
|
||||||
db !TIER_BIG_KEY ; 9B - Big key of Agahnim's Tower
|
|
||||||
db !TIER_BIG_KEY ; 9C - Big key of Desert Palace
|
|
||||||
db !TIER_BIG_KEY ; 9D - Big key of Eastern Palace
|
|
||||||
db !TIER_BIG_KEY ; 9E - Big key of Hyrule Castle
|
|
||||||
db !TIER_BIG_KEY ; 9F - Big key of Sewers
|
|
||||||
|
|
||||||
db !TIER_SM_KEY ; A0 - Small key of Sewers
|
|
||||||
db !TIER_SM_KEY ; A1 - Small key of Hyrule Castle
|
|
||||||
db !TIER_SM_KEY ; A2 - Small key of Eastern Palace
|
|
||||||
db !TIER_SM_KEY ; A3 - Small key of Desert Palace
|
|
||||||
db !TIER_SM_KEY ; A4 - Small key of Agahnim's Tower
|
|
||||||
db !TIER_SM_KEY ; A5 - Small key of Swamp Palace
|
|
||||||
db !TIER_SM_KEY ; A6 - Small key of Dark Palace
|
|
||||||
db !TIER_SM_KEY ; A7 - Small key of Misery Mire
|
|
||||||
db !TIER_SM_KEY ; A8 - Small key of Skull Woods
|
|
||||||
db !TIER_SM_KEY ; A9 - Small key of Ice Palace
|
|
||||||
db !TIER_SM_KEY ; AA - Small key of Tower of Hera
|
|
||||||
db !TIER_SM_KEY ; AB - Small key of Thieves' Town
|
|
||||||
db !TIER_SM_KEY ; AC - Small key of Turtle Rock
|
|
||||||
db !TIER_SM_KEY ; AD - Small key of Ganon's Tower
|
|
||||||
db !TIER_JUNK ; AE - Reserved
|
|
||||||
db !TIER_LOW_KEY ; AF - Generic small key
|
|
||||||
db !TIER_CRYSTAL ; B0 - Crystal 6
|
|
||||||
db !TIER_CRYSTAL ; B1 - Crystal 1
|
|
||||||
db !TIER_CRYSTAL ; B2 - Crystal 5
|
|
||||||
db !TIER_CRYSTAL ; B3 - Crystal 7
|
|
||||||
db !TIER_CRYSTAL ; B4 - Crystal 2
|
|
||||||
db !TIER_CRYSTAL ; B5 - Crystal 4
|
|
||||||
db !TIER_CRYSTAL ; B6 - Crystal 3
|
|
||||||
db !TIER_JUNK ; B7 - Reserved
|
|
||||||
db !TIER_JUNK ; B8 -
|
|
||||||
db !TIER_JUNK ; B9 -
|
|
||||||
db !TIER_JUNK ; BA -
|
|
||||||
db !TIER_JUNK ; BB -
|
|
||||||
db !TIER_JUNK ; BC -
|
|
||||||
db !TIER_JUNK ; BD -
|
|
||||||
db !TIER_JUNK ; BE -
|
|
||||||
db !TIER_JUNK ; BF -
|
|
||||||
db !TIER_JUNK ; C0 -
|
|
||||||
db !TIER_JUNK ; C1 -
|
|
||||||
db !TIER_JUNK ; C2 -
|
|
||||||
db !TIER_JUNK ; C3 -
|
|
||||||
db !TIER_JUNK ; C4 -
|
|
||||||
db !TIER_JUNK ; C5 -
|
|
||||||
db !TIER_JUNK ; C6 -
|
|
||||||
db !TIER_JUNK ; C7 -
|
|
||||||
db !TIER_JUNK ; C8 -
|
|
||||||
db !TIER_JUNK ; C9 -
|
|
||||||
db !TIER_JUNK ; CA -
|
|
||||||
db !TIER_JUNK ; CB -
|
|
||||||
db !TIER_JUNK ; CC -
|
|
||||||
db !TIER_JUNK ; CD -
|
|
||||||
db !TIER_JUNK ; CE -
|
|
||||||
db !TIER_JUNK ; CF -
|
|
||||||
db !TIER_JUNK ; D0 - Bee trap
|
|
||||||
db !TIER_JUNK ; D1 - Apples
|
|
||||||
db !TIER_JUNK ; D2 - Fairy
|
|
||||||
db !TIER_JUNK ; D3 - Chicken
|
|
||||||
db !TIER_JUNK ; D4 - Big Magic
|
|
||||||
db !TIER_JUNK ; D5 - 5 Arrows
|
|
||||||
db !TIER_JUNK ; D6 - Good Bee
|
|
||||||
db !TIER_JUNK ; D7 -
|
|
||||||
db !TIER_JUNK ; D8 -
|
|
||||||
db !TIER_JUNK ; D9 -
|
|
||||||
db !TIER_JUNK ; DA -
|
|
||||||
db !TIER_JUNK ; DB -
|
|
||||||
db !TIER_JUNK ; DC -
|
|
||||||
db !TIER_JUNK ; DD -
|
|
||||||
db !TIER_JUNK ; DE -
|
|
||||||
db !TIER_JUNK ; DF -
|
|
||||||
db !TIER_JUNK ; E0 -
|
|
||||||
db !TIER_JUNK ; E1 -
|
|
||||||
db !TIER_JUNK ; E2 -
|
|
||||||
db !TIER_JUNK ; E3 -
|
|
||||||
db !TIER_JUNK ; E4 -
|
|
||||||
db !TIER_JUNK ; E5 -
|
|
||||||
db !TIER_JUNK ; E6 -
|
|
||||||
db !TIER_JUNK ; E7 -
|
|
||||||
db !TIER_JUNK ; E8 -
|
|
||||||
db !TIER_JUNK ; E9 -
|
|
||||||
db !TIER_JUNK ; EA -
|
|
||||||
db !TIER_JUNK ; EB -
|
|
||||||
db !TIER_JUNK ; EC -
|
|
||||||
db !TIER_JUNK ; ED -
|
|
||||||
db !TIER_JUNK ; EE -
|
|
||||||
db !TIER_JUNK ; EF -
|
|
||||||
db !TIER_JUNK ; F0 -
|
|
||||||
db !TIER_JUNK ; F1 -
|
|
||||||
db !TIER_JUNK ; F2 -
|
|
||||||
db !TIER_JUNK ; F3 -
|
|
||||||
db !TIER_JUNK ; F4 -
|
|
||||||
db !TIER_JUNK ; F5 -
|
|
||||||
db !TIER_JUNK ; F6 -
|
|
||||||
db !TIER_JUNK ; F7 -
|
|
||||||
db !TIER_JUNK ; F8 -
|
|
||||||
db !TIER_JUNK ; F9 -
|
|
||||||
db !TIER_JUNK ; FA -
|
|
||||||
db !TIER_JUNK ; FB -
|
|
||||||
db !TIER_JUNK ; FC -
|
|
||||||
db !TIER_JUNK ; FD -
|
|
||||||
db !TIER_JUNK ; FE - Server request (async)
|
|
||||||
db !TIER_JUNK ; FF -
|
|
||||||
@@ -1,261 +0,0 @@
|
|||||||
db $00 ; 00 - Fighter Sword and Shield
|
|
||||||
db $00 ; 01 - Master Sword
|
|
||||||
db $00 ; 02 - Tempered Sword
|
|
||||||
db $00 ; 03 - Butter Sword
|
|
||||||
db $00 ; 04 - Fighter Shield
|
|
||||||
db $00 ; 05 - Fire Shield
|
|
||||||
db $00 ; 06 - Mirror Shield
|
|
||||||
db $00 ; 07 - Fire Rod
|
|
||||||
db $00 ; 08 - Ice Rod
|
|
||||||
db $00 ; 09 - Hammer
|
|
||||||
db $00 ; 0A - Hookshot
|
|
||||||
db $00 ; 0B - Bow
|
|
||||||
db $00 ; 0C - Boomerang
|
|
||||||
db $00 ; 0D - Powder
|
|
||||||
db $00 ; 0E - Bottle Refill (bee)
|
|
||||||
db $00 ; 0F - Bombos
|
|
||||||
db $00 ; 10 - Ether
|
|
||||||
db $00 ; 11 - Quake
|
|
||||||
db $00 ; 12 - Lamp
|
|
||||||
db $00 ; 13 - Shovel
|
|
||||||
db $00 ; 14 - Flute
|
|
||||||
db $00 ; 15 - Somaria
|
|
||||||
db $00 ; 16 - Bottle
|
|
||||||
db $00 ; 17 - Heartpiece
|
|
||||||
db $00 ; 18 - Byrna
|
|
||||||
db $00 ; 19 - Cape
|
|
||||||
db $00 ; 1A - Mirror
|
|
||||||
db $00 ; 1B - Glove
|
|
||||||
db $00 ; 1C - Mitts
|
|
||||||
db $00 ; 1D - Book
|
|
||||||
db $00 ; 1E - Flippers
|
|
||||||
db $00 ; 1F - Pearl
|
|
||||||
db $00 ; 20 - Crystal
|
|
||||||
db $00 ; 21 - Net
|
|
||||||
db $00 ; 22 - Blue Mail
|
|
||||||
db $00 ; 23 - Red Mail
|
|
||||||
db $00 ; 24 - Small Key
|
|
||||||
db $00 ; 25 - Compass
|
|
||||||
db $00 ; 26 - Heart Container from 4/4
|
|
||||||
db $01 ; 27 - Bomb
|
|
||||||
db $01 ; 28 - 3 bombs
|
|
||||||
db $00 ; 29 - Mushroom
|
|
||||||
db $00 ; 2A - Red boomerang
|
|
||||||
db $00 ; 2B - Full bottle (red)
|
|
||||||
db $00 ; 2C - Full bottle (green)
|
|
||||||
db $00 ; 2D - Full bottle (blue)
|
|
||||||
db $00 ; 2E - Potion refill (red)
|
|
||||||
db $00 ; 2F - Potion refill (green)
|
|
||||||
db $00 ; 30 - Potion refill (blue)
|
|
||||||
db $01 ; 31 - 10 bombs
|
|
||||||
db $00 ; 32 - Big key
|
|
||||||
db $00 ; 33 - Map
|
|
||||||
db $01 ; 34 - 1 rupee
|
|
||||||
db $01 ; 35 - 5 rupees
|
|
||||||
db $01 ; 36 - 20 rupees
|
|
||||||
db $00 ; 37 - Green pendant
|
|
||||||
db $00 ; 38 - Blue pendant
|
|
||||||
db $00 ; 39 - Red pendant
|
|
||||||
db $00 ; 3A - Tossed bow
|
|
||||||
db $00 ; 3B - Silvers
|
|
||||||
db $00 ; 3C - Full bottle (bee)
|
|
||||||
db $00 ; 3D - Full bottle (fairy)
|
|
||||||
db $00 ; 3E - Boss heart
|
|
||||||
db $00 ; 3F - Sanc heart
|
|
||||||
db $01 ; 40 - 100 rupees
|
|
||||||
db $01 ; 41 - 50 rupees
|
|
||||||
db $01 ; 42 - Heart
|
|
||||||
db $01 ; 43 - Arrow
|
|
||||||
db $01 ; 44 - 10 arrows
|
|
||||||
db $01 ; 45 - Small magic
|
|
||||||
db $01 ; 46 - 300 rupees
|
|
||||||
db $01 ; 47 - 20 rupees green
|
|
||||||
db $00 ; 48 - Full bottle (good bee)
|
|
||||||
db $00 ; 49 - Tossed fighter sword
|
|
||||||
db $00 ; 4A - Active Flute
|
|
||||||
db $00 ; 4B - Boots
|
|
||||||
|
|
||||||
db $00 ; 4C - Bomb capacity (50)
|
|
||||||
db $00 ; 4D - Arrow capacity (70)
|
|
||||||
db $00 ; 4E - 1/2 magic
|
|
||||||
db $00 ; 4F - 1/4 magic
|
|
||||||
db $00 ; 50 - Safe master sword
|
|
||||||
db $00 ; 51 - Bomb capacity (+5)
|
|
||||||
db $00 ; 52 - Bomb capacity (+10)
|
|
||||||
db $00 ; 53 - Arrow capacity (+5)
|
|
||||||
db $00 ; 54 - Arrow capacity (+10)
|
|
||||||
db $00 ; 55 - Programmable item 1
|
|
||||||
db $00 ; 56 - Programmable item 2
|
|
||||||
db $00 ; 57 - Programmable item 3
|
|
||||||
db $00 ; 58 - Upgrade-only silver arrows
|
|
||||||
db $01 ; 59 - Rupoor
|
|
||||||
db $01 ; 5A - Nothing
|
|
||||||
db $00 ; 5B - Red clock
|
|
||||||
db $00 ; 5C - Blue clock
|
|
||||||
db $00 ; 5D - Green clock
|
|
||||||
db $00 ; 5E - Progressive sword
|
|
||||||
db $00 ; 5F - Progressive shield
|
|
||||||
db $00 ; 60 - Progressive armor
|
|
||||||
db $00 ; 61 - Progressive glove
|
|
||||||
db $00 ; 62 - RNG pool item (single)
|
|
||||||
db $00 ; 63 - RNG pool item (multi)
|
|
||||||
db $00 ; 64 - Progressive bow
|
|
||||||
db $00 ; 65 - Progressive bow
|
|
||||||
db $00 ; 66 -
|
|
||||||
db $00 ; 67 -
|
|
||||||
db $00 ; 68 -
|
|
||||||
db $00 ; 69 -
|
|
||||||
db $00 ; 6A - Triforce
|
|
||||||
db $01 ; 6B - Power star
|
|
||||||
db $01 ; 6C - Triforce Piece
|
|
||||||
db $00 ; 6D - Server request item
|
|
||||||
db $00 ; 6E - Server request item (dungeon drop)
|
|
||||||
db $00 ; 6F -
|
|
||||||
|
|
||||||
db $00 ; 70 - Map of Light World
|
|
||||||
db $00 ; 71 - Map of Dark World
|
|
||||||
db $00 ; 72 - Map of Ganon's Tower
|
|
||||||
db $00 ; 73 - Map of Turtle Rock
|
|
||||||
db $00 ; 74 - Map of Thieves' Town
|
|
||||||
db $00 ; 75 - Map of Tower of Hera
|
|
||||||
db $00 ; 76 - Map of Ice Palace
|
|
||||||
db $00 ; 77 - Map of Skull Woods
|
|
||||||
db $00 ; 78 - Map of Misery Mire
|
|
||||||
db $00 ; 79 - Map of Dark Palace
|
|
||||||
db $00 ; 7A - Map of Swamp Palace
|
|
||||||
db $00 ; 7B - Map of Agahnim's Tower
|
|
||||||
db $00 ; 7C - Map of Desert Palace
|
|
||||||
db $00 ; 7D - Map of Eastern Palace
|
|
||||||
db $00 ; 7E - Map of Hyrule Castle
|
|
||||||
db $00 ; 7F - Map of Sewers
|
|
||||||
|
|
||||||
db $00 ; 80 - Compass of Light World
|
|
||||||
db $00 ; 81 - Compass of Dark World
|
|
||||||
db $00 ; 82 - Compass of Ganon's Tower
|
|
||||||
db $00 ; 83 - Compass of Turtle Rock
|
|
||||||
db $00 ; 84 - Compass of Thieves' Town
|
|
||||||
db $00 ; 85 - Compass of Tower of Hera
|
|
||||||
db $00 ; 86 - Compass of Ice Palace
|
|
||||||
db $00 ; 87 - Compass of Skull Woods
|
|
||||||
db $00 ; 88 - Compass of Misery Mire
|
|
||||||
db $00 ; 89 - Compass of Dark Palace
|
|
||||||
db $00 ; 8A - Compass of Swamp Palace
|
|
||||||
db $00 ; 8B - Compass of Agahnim's Tower
|
|
||||||
db $00 ; 8C - Compass of Desert Palace
|
|
||||||
db $00 ; 8D - Compass of Eastern Palace
|
|
||||||
db $00 ; 8E - Compass of Hyrule Castle
|
|
||||||
db $00 ; 8F - Compass of Sewers
|
|
||||||
|
|
||||||
db $00 ; 90 - Skull key
|
|
||||||
db $00 ; 91 - Reserved
|
|
||||||
db $00 ; 92 - Big key of Ganon's Tower
|
|
||||||
db $00 ; 93 - Big key of Turtle Rock
|
|
||||||
db $00 ; 94 - Big key of Thieves' Town
|
|
||||||
db $00 ; 95 - Big key of Tower of Hera
|
|
||||||
db $00 ; 96 - Big key of Ice Palace
|
|
||||||
db $00 ; 97 - Big key of Skull Woods
|
|
||||||
db $00 ; 98 - Big key of Misery Mire
|
|
||||||
db $00 ; 99 - Big key of Dark Palace
|
|
||||||
db $00 ; 9A - Big key of Swamp Palace
|
|
||||||
db $00 ; 9B - Big key of Agahnim's Tower
|
|
||||||
db $00 ; 9C - Big key of Desert Palace
|
|
||||||
db $00 ; 9D - Big key of Eastern Palace
|
|
||||||
db $00 ; 9E - Big key of Hyrule Castle
|
|
||||||
db $00 ; 9F - Big key of Sewers
|
|
||||||
|
|
||||||
db $00 ; A0 - Small key of Sewers
|
|
||||||
db $00 ; A1 - Small key of Hyrule Castle
|
|
||||||
db $00 ; A2 - Small key of Eastern Palace
|
|
||||||
db $00 ; A3 - Small key of Desert Palace
|
|
||||||
db $00 ; A4 - Small key of Agahnim's Tower
|
|
||||||
db $00 ; A5 - Small key of Swamp Palace
|
|
||||||
db $00 ; A6 - Small key of Dark Palace
|
|
||||||
db $00 ; A7 - Small key of Misery Mire
|
|
||||||
db $00 ; A8 - Small key of Skull Woods
|
|
||||||
db $00 ; A9 - Small key of Ice Palace
|
|
||||||
db $00 ; AA - Small key of Tower of Hera
|
|
||||||
db $00 ; AB - Small key of Thieves' Town
|
|
||||||
db $00 ; AC - Small key of Turtle Rock
|
|
||||||
db $00 ; AD - Small key of Ganon's Tower
|
|
||||||
db $00 ; AE - Reserved
|
|
||||||
db $00 ; AF - Generic small key
|
|
||||||
db $00 ; B0 - Crystal 6
|
|
||||||
db $00 ; B1 - Crystal 1
|
|
||||||
db $00 ; B2 - Crystal 5
|
|
||||||
db $00 ; B3 - Crystal 7
|
|
||||||
db $00 ; B4 - Crystal 2
|
|
||||||
db $00 ; B5 - Crystal 4
|
|
||||||
db $00 ; B6 - Crystal 3
|
|
||||||
db $00 ; B7 - Reserved
|
|
||||||
db $00 ; B8 -
|
|
||||||
db $00 ; B9 -
|
|
||||||
db $00 ; BA -
|
|
||||||
db $00 ; BB -
|
|
||||||
db $00 ; BC -
|
|
||||||
db $00 ; BD -
|
|
||||||
db $00 ; BE -
|
|
||||||
db $00 ; BF -
|
|
||||||
db $00 ; C0 -
|
|
||||||
db $00 ; C1 -
|
|
||||||
db $00 ; C2 -
|
|
||||||
db $00 ; C3 -
|
|
||||||
db $00 ; C4 -
|
|
||||||
db $00 ; C5 -
|
|
||||||
db $00 ; C6 -
|
|
||||||
db $00 ; C7 -
|
|
||||||
db $00 ; C8 -
|
|
||||||
db $00 ; C9 -
|
|
||||||
db $00 ; CA -
|
|
||||||
db $00 ; CB -
|
|
||||||
db $00 ; CC -
|
|
||||||
db $00 ; CD -
|
|
||||||
db $00 ; CE -
|
|
||||||
db $00 ; CF -
|
|
||||||
db $01 ; D0 - Bee trap
|
|
||||||
db $01 ; D1 - Apples
|
|
||||||
db $01 ; D2 - Fairy
|
|
||||||
db $01 ; D3 - Chicken
|
|
||||||
db $01 ; D4 - Big Magic
|
|
||||||
db $01 ; D5 - 5 Arrows
|
|
||||||
db $01 ; D6 - Good Bee
|
|
||||||
db $00 ; D7 -
|
|
||||||
db $00 ; D8 -
|
|
||||||
db $00 ; D9 -
|
|
||||||
db $00 ; DA -
|
|
||||||
db $00 ; DB -
|
|
||||||
db $00 ; DC -
|
|
||||||
db $00 ; DD -
|
|
||||||
db $00 ; DE -
|
|
||||||
db $00 ; DF -
|
|
||||||
db $00 ; E0 -
|
|
||||||
db $00 ; E1 -
|
|
||||||
db $00 ; E2 -
|
|
||||||
db $00 ; E3 -
|
|
||||||
db $00 ; E4 -
|
|
||||||
db $00 ; E5 -
|
|
||||||
db $00 ; E6 -
|
|
||||||
db $00 ; E7 -
|
|
||||||
db $00 ; E8 -
|
|
||||||
db $00 ; E9 -
|
|
||||||
db $00 ; EA -
|
|
||||||
db $00 ; EB -
|
|
||||||
db $00 ; EC -
|
|
||||||
db $00 ; ED -
|
|
||||||
db $00 ; EE -
|
|
||||||
db $00 ; EF -
|
|
||||||
db $00 ; F0 -
|
|
||||||
db $00 ; F1 -
|
|
||||||
db $00 ; F2 -
|
|
||||||
db $00 ; F3 -
|
|
||||||
db $00 ; F4 -
|
|
||||||
db $00 ; F5 -
|
|
||||||
db $00 ; F6 -
|
|
||||||
db $00 ; F7 -
|
|
||||||
db $00 ; F8 -
|
|
||||||
db $00 ; F9 -
|
|
||||||
db $00 ; FA -
|
|
||||||
db $00 ; FB -
|
|
||||||
db $00 ; FC -
|
|
||||||
db $00 ; FD -
|
|
||||||
db $00 ; FE - Server request (async)
|
|
||||||
db $00 ; FF -
|
|
||||||
@@ -1,87 +0,0 @@
|
|||||||
SpiralPropsIndex:
|
|
||||||
db $00, $04, $07, $00, $01, $00, $00, $0D, $00, $10, $04, $00, $15, $00, $0A, $00
|
|
||||||
db $00, $07, $00, $00, $00, $01, $07, $1C, $00, $00, $21, $00, $26, $07, $0A, $00
|
|
||||||
db $00, $00, $00, $00, $00, $00, $29, $30, $01, $00, $00, $00, $00, $00, $00, $00
|
|
||||||
db $00, $35, $00, $00, $3A, $00, $00, $00, $01, $00, $04, $00, $00, $00, $00, $3D
|
|
||||||
db $40, $07, $07, $00, $00, $01, $00, $00, $00, $00, $43, $00, $07, $07, $07, $00
|
|
||||||
db $00, $00, $00, $01, $48, $00, $00, $00, $00, $00, $00, $00, $07, $07, $00, $4B
|
|
||||||
db $00, $00, $00, $01, $50, $00, $07, $00, $00, $00, $53, $01, $01, $00, $58, $00
|
|
||||||
; 0 1 2 3 4 5 6 7 8 9 a b c d e f
|
|
||||||
db $5B, $01, $04, $00, $00, $00, $60, $67, $00, $00, $00, $00, $00, $00, $00, $6E
|
|
||||||
db $01, $00, $00, $00, $00, $00, $00, $71, $00, $00, $00, $00, $76, $00, $04, $00
|
|
||||||
db $00, $07, $00, $04, $00, $00, $00, $01, $7D, $0A, $00, $00, $00, $00, $04, $00
|
|
||||||
db $01, $00, $04, $00, $00, $01, $07, $00, $00, $00, $00, $0A, $00, $00, $07, $00
|
|
||||||
db $80, $00, $00, $00, $00, $01, $01, $00, $00, $00, $00, $00, $01, $00, $07, $00
|
|
||||||
db $85, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
|
||||||
db $8A, $92, $8F, $00, $00, $00, $00, $00, $00, $00, $0A, $00, $00, $00, $00, $00
|
|
||||||
db $04
|
|
||||||
|
|
||||||
SpiralProps:
|
|
||||||
db $00 ;null row
|
|
||||||
db $01, $00, $00 ; ($01) Single Top-Left Staircase
|
|
||||||
db $01, $00, $01 ; ($04) Single Top-Middle Staircase
|
|
||||||
db $01, $00, $02 ; ($07) Single Top-Right Staircase
|
|
||||||
db $01, $00, $05 ; ($0A) Single Staircase at Top of Bottom Left Quadrant
|
|
||||||
|
|
||||||
db $01, $00, $04 ; ($0D) Moldorm
|
|
||||||
db $02, $01, $00, $00, $02 ; ($10) Pod Basement
|
|
||||||
db $03, $01, $0A, $02, $01, $00, $0B ; ($15) GT Entrance
|
|
||||||
db $02, $01, $03, $00, $04 ; ($1C) Hera Below Moldorm
|
|
||||||
db $02, $00, $01, $01, $0B ; ($21) PoD Bridge
|
|
||||||
db $01, $00, $08 ; ($26) GT Ice Armos
|
|
||||||
db $03, $00, $01, $01, $0B, $02, $09 ; ($29) Swamp Statue
|
|
||||||
db $02, $01, $03, $00, $04 ; ($30) Hera Big Chest
|
|
||||||
db $02, $00, $04, $02, $09 ; ($35) Hera Startiles (middle value unused)
|
|
||||||
db $01, $00, $08 ; ($3A) West Swamp
|
|
||||||
db $01, $00, $05 ; ($3D) Ice Hamlift
|
|
||||||
db $01, $00, $07 ; ($40) Aga Guards
|
|
||||||
db $02, $01, $00, $00, $02 ; ($43) Pod Entrance
|
|
||||||
db $01, $00, $08 ; ($48) Swamp Attic
|
|
||||||
db $02, $03, $0C, $04, $06 ; ($4B) Ice U (1st three values unused)
|
|
||||||
db $01, $00, $05 ; ($50) TT Attic Left
|
|
||||||
db $02, $00, $01, $01, $0B ; ($53) Pod Rupees
|
|
||||||
db $01, $00, $04 ; ($58) Ice Gators
|
|
||||||
db $02, $01, $0A, $02, $01 ; ($5B) HC Tiny (first value placeholder)
|
|
||||||
db $03, $00, $01, $01, $0B, $02, $09 ; ($60) Swamp Sunken
|
|
||||||
db $03, $01, $00, $03, $08, $02, $09 ; ($67) Hera Entrance (first value unused)
|
|
||||||
db $01, $00, $08 ; ($6E) Ice Hookshot
|
|
||||||
db $02, $01, $00, $03, $08 ; ($71) Hera Basement (first and third values unused)
|
|
||||||
db $03, $01, $00, $00, $02, $03, $08 ; ($76) GT Circle (third value unused)
|
|
||||||
db $01, $00, $07 ; ($7D) Mire Entrance
|
|
||||||
db $02, $00, $02, $02, $09 ; ($80) Tower Usains (2nd value unused)
|
|
||||||
db $02, $00, $02, $02, $09 ; ($85) Tower Dark2 (2nd value unused)
|
|
||||||
db $02, $00, $02, $02, $09 ; ($8A) Tower Dark1 (2nd value unused)
|
|
||||||
db $01, $00, $09 ; ($8F) Mire2
|
|
||||||
db $01, $00, $0A ; ($92) Mire south of Torch Room
|
|
||||||
|
|
||||||
SpiralLabelOffsets:
|
|
||||||
db 1, -9
|
|
||||||
db 5, -9
|
|
||||||
db 9, -9
|
|
||||||
db -6, -1
|
|
||||||
db 15, -1
|
|
||||||
db 1, -1
|
|
||||||
db 5, -1
|
|
||||||
db 9, -1
|
|
||||||
db -6, 7
|
|
||||||
db 15, 7
|
|
||||||
db -3, -9
|
|
||||||
db 13, -9
|
|
||||||
db -3, -1
|
|
||||||
db 13, -1
|
|
||||||
|
|
||||||
SpiralLabelQuadrantMasks:
|
|
||||||
dw $0008
|
|
||||||
dw $000C
|
|
||||||
dw $0004
|
|
||||||
dw $0008
|
|
||||||
dw $0004
|
|
||||||
dw $0002
|
|
||||||
dw $0003
|
|
||||||
dw $0001
|
|
||||||
dw $0002
|
|
||||||
dw $0001
|
|
||||||
dw $0008
|
|
||||||
dw $0004
|
|
||||||
dw $0002
|
|
||||||
dw $0001
|
|
||||||
@@ -1,571 +0,0 @@
|
|||||||
IncomingDoorMap:
|
|
||||||
; north
|
|
||||||
db $06, $07, $08
|
|
||||||
; west
|
|
||||||
db $09, $0A, $0B
|
|
||||||
; south
|
|
||||||
db $00, $01, $02
|
|
||||||
; east
|
|
||||||
db $03, $04, $05
|
|
||||||
|
|
||||||
macro d(label)
|
|
||||||
dw <label>-SplitRooms
|
|
||||||
endmacro
|
|
||||||
|
|
||||||
macro sq(byte)
|
|
||||||
db <byte>
|
|
||||||
endmacro
|
|
||||||
|
|
||||||
SplitRooms:
|
|
||||||
; 0/8 1/9 2/A 3/B 4/C 5/D 6/E 7/F
|
|
||||||
%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no)
|
|
||||||
%d(.no) : %d(.09) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no)
|
|
||||||
|
|
||||||
%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.14) : %d(.no) : %d(.no) : %d(.no)
|
|
||||||
%d(.no) : %d(.no) : %d(.1a) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no)
|
|
||||||
|
|
||||||
%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no)
|
|
||||||
%d(.no) : %d(.no) : %d(.2a) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no)
|
|
||||||
|
|
||||||
%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.35) : %d(.36) : %d(.37)
|
|
||||||
%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no)
|
|
||||||
|
|
||||||
%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no)
|
|
||||||
%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no)
|
|
||||||
|
|
||||||
%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.57)
|
|
||||||
%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no)
|
|
||||||
|
|
||||||
%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no)
|
|
||||||
%d(.no) : %d(.no) : %d(.6a) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no)
|
|
||||||
|
|
||||||
%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.74) : %d(.75) : %d(.no) : %d(.no)
|
|
||||||
%d(.no) : %d(.no) : %d(.no) : %d(.7b) : %d(.7c) : %d(.7d) : %d(.no) : %d(.no)
|
|
||||||
|
|
||||||
; 0/8 1/9 2/A 3/B 4/C 5/D 6/E 7/F
|
|
||||||
%d(.no) : %d(.no) : %d(.82) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.87)
|
|
||||||
%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.8c) : %d(.no) : %d(.no) : %d(.no)
|
|
||||||
|
|
||||||
%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no)
|
|
||||||
%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.9d) : %d(.no) : %d(.no)
|
|
||||||
|
|
||||||
%d(.no) : %d(.no) : %d(.a2) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no)
|
|
||||||
%d(.no) : %d(.a9) : %d(.aa) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no)
|
|
||||||
|
|
||||||
%d(.no) : %d(.no) : %d(.b2) : %d(.no) : %d(.no) : %d(.no) : %d(.b6) : %d(.no)
|
|
||||||
%d(.no) : %d(.b9) : %d(.no) : %d(.no) : %d(.bc) : %d(.no) : %d(.no) : %d(.no)
|
|
||||||
|
|
||||||
%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.c7)
|
|
||||||
%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no)
|
|
||||||
|
|
||||||
%d(.no) : %d(.d1) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.d6) : %d(.no)
|
|
||||||
%d(.no) : %d(.no) : %d(.no) : %d(.db) : %d(.no) : %d(.no) : %d(.no) : %d(.no)
|
|
||||||
|
|
||||||
%d(.no)
|
|
||||||
|
|
||||||
.no
|
|
||||||
db $00
|
|
||||||
|
|
||||||
.no_items
|
|
||||||
db $FF
|
|
||||||
|
|
||||||
.09
|
|
||||||
db $01
|
|
||||||
%sq($04)
|
|
||||||
%d(..areas) : %d(.no_items) : %d(..stairs)
|
|
||||||
%d(.no_items) : %d(.no_items) : %d(..enemies)
|
|
||||||
..areas
|
|
||||||
db $03, $80, $FF, $00, $80
|
|
||||||
db $FF
|
|
||||||
..stairs
|
|
||||||
db $01
|
|
||||||
db $FF
|
|
||||||
..enemies
|
|
||||||
db $02
|
|
||||||
db $FF
|
|
||||||
|
|
||||||
.14
|
|
||||||
db $02
|
|
||||||
%sq($00)
|
|
||||||
%d(..areas3) : %d(..doors3) : %d(.no_items)
|
|
||||||
%d(.no_items) : %d(.no_items) : %d(.no_items)
|
|
||||||
%sq($00)
|
|
||||||
%d(..areas2) : %d(..doors2) : %d(.no_items)
|
|
||||||
%d(.no_items) : %d(.no_items) : %d(.no_items)
|
|
||||||
..areas3
|
|
||||||
db $03, $C0, $FF, $00, $50
|
|
||||||
db $03, $00, $28, $30, $50
|
|
||||||
db $03, $30, $50, $D0, $FF
|
|
||||||
db $FF
|
|
||||||
..doors3
|
|
||||||
db $03, $06, $09
|
|
||||||
db $FF
|
|
||||||
..areas2
|
|
||||||
db $03, $B0, $D0, $D0, $FF
|
|
||||||
db $03, $30, $50, $00, $28
|
|
||||||
db $FF
|
|
||||||
..doors2
|
|
||||||
db $00, $08
|
|
||||||
db $FF
|
|
||||||
|
|
||||||
.1a ; PoD Big Chest (2) // Falling bridge and such (1)
|
|
||||||
db $01
|
|
||||||
%sq($00)
|
|
||||||
%d(..areas) : %d(..doors) : %d(.no_items)
|
|
||||||
%d(..chests) : %d(.no_items) : %d(.no_items)
|
|
||||||
..areas
|
|
||||||
db $03, $00, $2C, $70, $98
|
|
||||||
db $FF
|
|
||||||
..doors
|
|
||||||
db $04
|
|
||||||
db $FF
|
|
||||||
..chests
|
|
||||||
db $00
|
|
||||||
db $FF
|
|
||||||
|
|
||||||
.2a ; PoD Arena Right-Side Chest (2) // Arena (1)
|
|
||||||
db $01
|
|
||||||
%sq($00)
|
|
||||||
%d(..areas) : %d(..doors) : %d(.no_items)
|
|
||||||
%d(..chests) : %d(.no_items) : %d(.no_items)
|
|
||||||
..areas
|
|
||||||
db $03, $D8, $FF, $A8, $C8
|
|
||||||
db $FF
|
|
||||||
..doors
|
|
||||||
db $0B
|
|
||||||
db $FF
|
|
||||||
..chests
|
|
||||||
db $00
|
|
||||||
db $FF
|
|
||||||
|
|
||||||
.35 ; Swamp BK Chest (2) // Swamp second trench (1)
|
|
||||||
db $01
|
|
||||||
%sq($00)
|
|
||||||
%d(..areas) : %d(..doors) : %d(.no_items)
|
|
||||||
%d(..chests) : %d(..pots) : %d(.no_items)
|
|
||||||
..areas
|
|
||||||
db $03, $00, $70, $00, $80
|
|
||||||
db $FF
|
|
||||||
..doors
|
|
||||||
db $03
|
|
||||||
db $FF
|
|
||||||
..chests
|
|
||||||
db $00
|
|
||||||
db $FF
|
|
||||||
..pots
|
|
||||||
db $01, $02, $03, $04, $05
|
|
||||||
db $FF
|
|
||||||
|
|
||||||
.36 ; Swamp Big Lobby (1) // Tiny Top-Right Blocked Corner (2)
|
|
||||||
db $01
|
|
||||||
%sq($00)
|
|
||||||
%d(..areas) : %d(..doors) : %d(.no_items)
|
|
||||||
%d(.no_items) : %d(..pots) : %d(.no_items)
|
|
||||||
..areas
|
|
||||||
db $03, $D4, $FF, $00, $48
|
|
||||||
db $FF
|
|
||||||
..doors
|
|
||||||
db $09
|
|
||||||
db $FF
|
|
||||||
..pots
|
|
||||||
db $00, $01
|
|
||||||
db $FF
|
|
||||||
|
|
||||||
.37 ; Swamp Second Chest (2) // Swamp first trench (1)
|
|
||||||
db $01
|
|
||||||
%sq($00)
|
|
||||||
%d(..areas) : %d(..doors) : %d(.no_items)
|
|
||||||
%d(..chests) : %d(.no_items) : %d(..enemies)
|
|
||||||
..areas
|
|
||||||
db $03, $90, $FF, $00, $80
|
|
||||||
db $FF
|
|
||||||
..doors
|
|
||||||
db $09
|
|
||||||
db $FF
|
|
||||||
..chests
|
|
||||||
db $00
|
|
||||||
db $FF
|
|
||||||
..enemies
|
|
||||||
db $02, $03
|
|
||||||
db $FF
|
|
||||||
|
|
||||||
.57 ; SW pot cage (2) // middle section (1)
|
|
||||||
db $01
|
|
||||||
%sq($00)
|
|
||||||
%d(..areas) : %d(..doors) : %d(.no_items)
|
|
||||||
%d(..chests) : %d(..pots) : %d(..enemies)
|
|
||||||
..areas
|
|
||||||
db $03, $80, $FF, $80, $FF
|
|
||||||
db $FF
|
|
||||||
..doors
|
|
||||||
db $08, $0B
|
|
||||||
db $FF
|
|
||||||
..chests
|
|
||||||
db $01
|
|
||||||
db $FF
|
|
||||||
..pots
|
|
||||||
db $02, $03, $04, $05
|
|
||||||
db $FF
|
|
||||||
..enemies
|
|
||||||
db $08, $09, $0A, $0B
|
|
||||||
db $FF
|
|
||||||
|
|
||||||
.6a ; pre-helmasaur-king (2) // PoD rupee basement (1)
|
|
||||||
db $01
|
|
||||||
%sq($00)
|
|
||||||
%d(..areas) : %d(..doors) : %d(.no_items)
|
|
||||||
%d(.no_items) : %d(.no_items) : %d(..enemies)
|
|
||||||
..areas
|
|
||||||
db $03, $B4, $C4, $00, $B4
|
|
||||||
db $03, $A8, $D0, $B0, $D0
|
|
||||||
db $FF
|
|
||||||
..doors
|
|
||||||
db $02
|
|
||||||
db $FF
|
|
||||||
..enemies
|
|
||||||
db $00, $01, $04, $05
|
|
||||||
db $FF
|
|
||||||
|
|
||||||
.74 ; desert north -- trapped area (2) // everything else (1)
|
|
||||||
db $01
|
|
||||||
%sq($00)
|
|
||||||
%d(..areas) : %d(..doors) : %d(.no_items)
|
|
||||||
%d(.no_items) : %d(.no_items) : %d(..enemies)
|
|
||||||
..areas
|
|
||||||
db $03, $4C, $C4, $CC, $FF
|
|
||||||
db $FF
|
|
||||||
..doors
|
|
||||||
db $07
|
|
||||||
db $FF
|
|
||||||
..enemies
|
|
||||||
db $06, $07
|
|
||||||
db $FF
|
|
||||||
|
|
||||||
.75 ; desert cannonball (2) // desert northeast + trap room (1)
|
|
||||||
db $01
|
|
||||||
%sq($00)
|
|
||||||
%d(..areas) : %d(..doors) : %d(.no_items) : %d(..chests) : %d(.no_items) : %d(..enemies)
|
|
||||||
..areas
|
|
||||||
db $03, $80, $FF, $00, $FF
|
|
||||||
db $FF
|
|
||||||
..doors
|
|
||||||
db $08
|
|
||||||
db $FF
|
|
||||||
..chests
|
|
||||||
db $00
|
|
||||||
db $FF
|
|
||||||
..enemies
|
|
||||||
db $06, $07
|
|
||||||
db $FF
|
|
||||||
|
|
||||||
.7b ; GT post-compass (3) // island hardhat (2) // DMs room (1)
|
|
||||||
db $02
|
|
||||||
%sq($00)
|
|
||||||
%d(..areas3) : %d(..doors3) : %d(.no_items)
|
|
||||||
%d(.no_items) : %d(..pots3) : %d(..enemies3)
|
|
||||||
%sq($00)
|
|
||||||
%d(..areas2) : %d(..doors2) : %d(.no_items)
|
|
||||||
%d(.no_items) : %d(.no_items) : %d(..enemies2)
|
|
||||||
|
|
||||||
..areas3
|
|
||||||
db $03, $00, $FF, $00, $80
|
|
||||||
db $FF
|
|
||||||
..doors3
|
|
||||||
db $09
|
|
||||||
db $FF
|
|
||||||
..pots3
|
|
||||||
db $00, $01, $02, $03, $04
|
|
||||||
db $FF
|
|
||||||
..enemies3
|
|
||||||
db $00, $01
|
|
||||||
db $FF
|
|
||||||
|
|
||||||
..areas2
|
|
||||||
db $03, $80, $FF, $80, $FF
|
|
||||||
db $FF
|
|
||||||
..doors2
|
|
||||||
db $0B
|
|
||||||
db $FF
|
|
||||||
..enemies2
|
|
||||||
db $06, $07
|
|
||||||
db $FF
|
|
||||||
|
|
||||||
.7c ; GT falling bridge // rando room
|
|
||||||
db $01
|
|
||||||
%sq($00)
|
|
||||||
%d(..areas) : %d(..doors) : %d(.no_items)
|
|
||||||
%d(.no_items) : %d(..pots) : %d(..enemies)
|
|
||||||
..areas
|
|
||||||
db $03, $00, $80, $00, $FF
|
|
||||||
db $FF
|
|
||||||
..doors
|
|
||||||
db $03, $05
|
|
||||||
db $FF
|
|
||||||
..pots
|
|
||||||
db $00, $01, $02, $03
|
|
||||||
db $FF
|
|
||||||
..enemies
|
|
||||||
db $01, $02, $03, $04
|
|
||||||
db $FF
|
|
||||||
|
|
||||||
.7d ; GT warp maze (section next to rando room)
|
|
||||||
db $01
|
|
||||||
%sq($00)
|
|
||||||
%d(..areas) : %d(..doors) : %d(.no_items)
|
|
||||||
%d(..chests) : %d(..pots) : %d(..enemies)
|
|
||||||
..areas
|
|
||||||
db $03, $00, $FF, $00, $80
|
|
||||||
db $03, $00, $80, $80, $FF
|
|
||||||
db $03, $CA, $DA, $9A, $A6
|
|
||||||
db $FF
|
|
||||||
..doors
|
|
||||||
db $05
|
|
||||||
db $FF
|
|
||||||
..chests
|
|
||||||
db $00
|
|
||||||
db $FF
|
|
||||||
..pots
|
|
||||||
db $00, $01, $02, $03
|
|
||||||
db $FF
|
|
||||||
..enemies
|
|
||||||
db $00, $01, $02, $03, $09
|
|
||||||
db $FF
|
|
||||||
|
|
||||||
.82 ; HC Basement (1) + catwalk (2)
|
|
||||||
db $01
|
|
||||||
%sq($00)
|
|
||||||
%d(..areas) : %d(..doors) : %d(.no_items)
|
|
||||||
%d(.no_items) : %d(.no_items) : %d(.no_items)
|
|
||||||
..areas
|
|
||||||
db $03, $00, $20, $00, $50
|
|
||||||
db $FF
|
|
||||||
..doors
|
|
||||||
db $00, $03
|
|
||||||
db $FF
|
|
||||||
|
|
||||||
.87 ; Hera basement: cage (0) // torches (1)
|
|
||||||
db $01
|
|
||||||
%sq($08)
|
|
||||||
%d(..areas) : %d(.no_items) : %d(..stairs)
|
|
||||||
%d(..chests) : %d(..pots) : %d(..enemies)
|
|
||||||
..areas
|
|
||||||
db $03, $00, $FF, $00, $80
|
|
||||||
db $03, $80, $FF, $80, $FF
|
|
||||||
db $FF
|
|
||||||
..stairs
|
|
||||||
db $00
|
|
||||||
db $FF
|
|
||||||
..chests
|
|
||||||
db $00
|
|
||||||
db $FF
|
|
||||||
..pots
|
|
||||||
db $00, $01, $02, $03, $04, $05, $06, $07
|
|
||||||
db $FF
|
|
||||||
..enemies
|
|
||||||
db $00, $01, $02, $05, $06, $09, $0C
|
|
||||||
db $FF
|
|
||||||
|
|
||||||
.8c
|
|
||||||
db $01
|
|
||||||
%sq($00)
|
|
||||||
%d(..areas) : %d(..doors) : %d(.no_items)
|
|
||||||
%d(..chests) : %d(..pots) : %d(..enemies)
|
|
||||||
..areas
|
|
||||||
db $03, $80, $FF, $80, $FF
|
|
||||||
db $FF
|
|
||||||
..doors
|
|
||||||
db $08
|
|
||||||
db $FF
|
|
||||||
..chests
|
|
||||||
db $03
|
|
||||||
db $FF
|
|
||||||
..pots
|
|
||||||
db $02, $03, $04, $05, $06
|
|
||||||
db $FF
|
|
||||||
..enemies
|
|
||||||
db $06, $07, $09
|
|
||||||
db $FF
|
|
||||||
|
|
||||||
.9d
|
|
||||||
db $01
|
|
||||||
%sq($00)
|
|
||||||
%d(..areas) : %d(..doors) : %d(.no_items)
|
|
||||||
%d(.no_items) : %d(.no_items) : %d(..enemies)
|
|
||||||
..areas
|
|
||||||
db $03, $00, $FF, $80, $FF
|
|
||||||
db $FF
|
|
||||||
..doors
|
|
||||||
db $05
|
|
||||||
db $FF
|
|
||||||
..enemies
|
|
||||||
db $06, $07, $08
|
|
||||||
db $FF
|
|
||||||
|
|
||||||
.a2 ; Mire abyss -- EW bridge (2), stairs to basement + hookable chest (1)
|
|
||||||
db $01
|
|
||||||
%sq($00)
|
|
||||||
%d(..areas) : %d(..doors) : %d(.no_items)
|
|
||||||
%d(.no_items) : %d(.no_items) : %d(.no_items)
|
|
||||||
..areas
|
|
||||||
db $01, $00, $FF, $70, $84
|
|
||||||
db $FF
|
|
||||||
..doors
|
|
||||||
db $04, $0A
|
|
||||||
db $FF
|
|
||||||
|
|
||||||
.a9
|
|
||||||
db $01
|
|
||||||
%sq($00)
|
|
||||||
%d(..areas) : %d(..doors) : %d(.no_items) : %d(.no_items) : %d(..pots) : %d(.no_items)
|
|
||||||
..areas
|
|
||||||
db $03, $00, $40, $70, $FF
|
|
||||||
db $03, $00, $FF, $A0, $FF
|
|
||||||
db $03, $C0, $FF, $70, $FF
|
|
||||||
db $FF
|
|
||||||
..doors
|
|
||||||
db $04, $07, $0A
|
|
||||||
db $FF
|
|
||||||
..pots
|
|
||||||
db $04, $05, $06, $07
|
|
||||||
db $FF
|
|
||||||
|
|
||||||
.aa
|
|
||||||
db $01
|
|
||||||
%sq($00)
|
|
||||||
%d(..areas) : %d(..doors) : %d(.no_items) : %d(.no_items) : %d(.no_items) : %d(.no_items)
|
|
||||||
..areas
|
|
||||||
db $02, $00, $80, $00, $FF
|
|
||||||
db $01, $34, $D4, $B8, $FF
|
|
||||||
db $FF
|
|
||||||
..doors
|
|
||||||
db $03, $06
|
|
||||||
db $FF
|
|
||||||
|
|
||||||
.b2
|
|
||||||
db $01
|
|
||||||
%sq($00)
|
|
||||||
%d(..areas) : %d(..doors) : %d(.no_items) : %d(.no_items) : %d(..pots) : %d(..enemies)
|
|
||||||
..areas
|
|
||||||
db $02, $00, $FF, $00, $80
|
|
||||||
db $03, $60, $A0, $00, $40
|
|
||||||
db $FF
|
|
||||||
..doors
|
|
||||||
db $01, $09
|
|
||||||
db $FF
|
|
||||||
..pots
|
|
||||||
db $00, $01, $02, $03, $04, $05, $06
|
|
||||||
db $FF
|
|
||||||
..enemies
|
|
||||||
db $00, $01, $02, $03, $04
|
|
||||||
db $FF
|
|
||||||
|
|
||||||
.b6
|
|
||||||
db $01
|
|
||||||
%sq($00)
|
|
||||||
%d(..areas) : %d(..doors) : %d(.no_items)
|
|
||||||
%d(.no_items) : %d(..pots) : %d(..enemies)
|
|
||||||
..areas
|
|
||||||
db $03, $80, $FF, $00, $FF
|
|
||||||
db $FF
|
|
||||||
..doors
|
|
||||||
db $08
|
|
||||||
db $FF
|
|
||||||
..pots
|
|
||||||
db $00
|
|
||||||
db $FF
|
|
||||||
..enemies
|
|
||||||
db $04
|
|
||||||
db $FF
|
|
||||||
|
|
||||||
.b9
|
|
||||||
db $01
|
|
||||||
%sq($00)
|
|
||||||
%d(..areas) : %d(..doors) : %d(.no_items) : %d(.no_items) : %d(.no_items) : %d(.no_items)
|
|
||||||
..areas
|
|
||||||
db $01, $00, $20, $28, $60
|
|
||||||
db $01, $E0, $FF, $28, $60
|
|
||||||
db $01, $00, $FF, $58, $60
|
|
||||||
db $FF
|
|
||||||
..doors
|
|
||||||
db $03, $09
|
|
||||||
db $FF
|
|
||||||
|
|
||||||
.bc
|
|
||||||
db $01
|
|
||||||
%sq($00)
|
|
||||||
%d(..areas) : %d(..doors) : %d(.no_items) : %d(.no_items) : %d(..pots) : %d(.no_items)
|
|
||||||
..areas
|
|
||||||
db $03, $2C, $4C, $CA, $FF
|
|
||||||
db $FF
|
|
||||||
..doors
|
|
||||||
db $06
|
|
||||||
db $FF
|
|
||||||
..pots
|
|
||||||
db $0C, $0D
|
|
||||||
db $FF
|
|
||||||
|
|
||||||
.c7 ; TR Torch Maze (1) // Tiny Bottom-Left Blocked Corner (2)
|
|
||||||
db $01
|
|
||||||
%sq($00)
|
|
||||||
%d(..areas) : %d(..doors) : %d(.no_items)
|
|
||||||
%d(.no_items) : %d(..pots) : %d(.no_items)
|
|
||||||
..areas
|
|
||||||
db $03, $00, $1C, $A8, $FF
|
|
||||||
db $FF
|
|
||||||
..doors
|
|
||||||
db $05
|
|
||||||
db $FF
|
|
||||||
..pots
|
|
||||||
db $02, $03
|
|
||||||
db $FF
|
|
||||||
|
|
||||||
.d1
|
|
||||||
db $01
|
|
||||||
%sq($00)
|
|
||||||
%d(..areas) : %d(..doors) : %d(.no_items)
|
|
||||||
%d(.no_items) : %d(..pots) : %d(..enemies)
|
|
||||||
..areas
|
|
||||||
db $03, $80, $FF, $00, $A8
|
|
||||||
db $FF
|
|
||||||
..doors
|
|
||||||
db $02
|
|
||||||
db $FF
|
|
||||||
..pots
|
|
||||||
db $02, $03, $04, $05
|
|
||||||
db $FF
|
|
||||||
..enemies
|
|
||||||
db $00, $01, $07
|
|
||||||
db $FF
|
|
||||||
|
|
||||||
.d6
|
|
||||||
db $01
|
|
||||||
%sq($00)
|
|
||||||
%d(..areas) : %d(..doors) : %d(.no_items)
|
|
||||||
%d(..chests) : %d(.no_items) : %d(..enemies)
|
|
||||||
..areas
|
|
||||||
db $03, $00, $80, $00, $FF
|
|
||||||
db $FF
|
|
||||||
..doors
|
|
||||||
db $00
|
|
||||||
db $FF
|
|
||||||
..chests
|
|
||||||
db $00
|
|
||||||
db $FF
|
|
||||||
..enemies
|
|
||||||
db $00, $01, $02
|
|
||||||
db $FF
|
|
||||||
|
|
||||||
.db
|
|
||||||
db $01
|
|
||||||
%sq($00)
|
|
||||||
%d(..areas) : %d(..doors) : %d(.no_items)
|
|
||||||
%d(..chests) : %d(.no_items) : %d(.no_items)
|
|
||||||
..areas
|
|
||||||
db $02, $B0, $FF, $90, $C0
|
|
||||||
db $FF
|
|
||||||
..doors
|
|
||||||
db $0B
|
|
||||||
db $FF
|
|
||||||
..chests
|
|
||||||
db $01
|
|
||||||
db $FF
|
|
||||||
@@ -1,258 +0,0 @@
|
|||||||
dw $FFFF, $83A5, $FFFF, $FFFF ; 00
|
|
||||||
dw $C388, $8388, $FFFF, $FFFF ; 01
|
|
||||||
dw $4348, $034A, $4342, $0342 ; 02
|
|
||||||
dw $FFFF, $FFFF, $438F, $FFFF ; 03 - Houlihan
|
|
||||||
dw $039A, $038F, $4365, $C39B ; 04
|
|
||||||
dw $FFFF, $FFFF, $FFFF, $FFFF ; 05 - unused
|
|
||||||
dw $FFFF, $FFFF, $438F, $FFFF ; 06 - Arrghus
|
|
||||||
dw $0100, $0101, $4111, $0111 ; 07 - Moldorm
|
|
||||||
dw $FFFF, $FFFF, $43B2, $03B2 ; 08 - useless fairy entrance
|
|
||||||
dw $C3A6, $837B, $FFFF, $FFFF ; 09
|
|
||||||
dw $C398, $835F, $FFFF, $FFFF ; 0A
|
|
||||||
dw $039B, $439C, $839B, $0381 ; 0B
|
|
||||||
dw $C371, $8371, $4354, $0354 ; 0C
|
|
||||||
dw $FFFF, $FFFF, $438F, $FFFF ; 0D - Aga 2
|
|
||||||
dw $FFFF, $FFFF, $8399, $439B ; 0E
|
|
||||||
dw $FFFF, $FFFF, $FFFF, $FFFF ; 0F - unused and should never be used, treated as non-id
|
|
||||||
dw $C340, $8340, $4350, $0340 ; 10
|
|
||||||
dw $83B7, $C3AC, $03B7, $438A ; 11
|
|
||||||
dw $C354, $8354, $4354, $0354 ; 12
|
|
||||||
dw $FFFF, $83B7, $FFFF, $03B7 ; 13
|
|
||||||
dw $012E, $012F, $013E, $013F ; 14
|
|
||||||
dw $C374, $8340, $4341, $0340 ; 15
|
|
||||||
dw $0108, $0109, $436B, $036B ; 16
|
|
||||||
dw $4104, $0104, $4114, $0114 ; 17
|
|
||||||
dw $C3B5, $FFFF, $43B4, $FFFF ; 18 - useless fairy drop
|
|
||||||
dw $FFFF, $8369, $FFFF, $035A ; 19
|
|
||||||
dw $03E7, $03E8, $03F7, $0361 ; 1A
|
|
||||||
dw $039B, $439C, $4361, $FFFF ; 1B
|
|
||||||
dw $038F, $038F, $037E, $C39B ; 1C
|
|
||||||
dw $C3B2, $83A7, $FFFF, $FFFF ; 1D
|
|
||||||
dw $FFFF, $4391, $0122, $0123 ; 1E
|
|
||||||
dw $FFFF, $FFFF, $4360, $C399 ; 1F
|
|
||||||
dw $FFFF, $FFFF, $438F, $FFFF ; 20
|
|
||||||
dw $4348, $0363, $C348, $8368 ; 21
|
|
||||||
dw $FFFF, $FFFF, $4368, $0348 ; 22
|
|
||||||
dw $FFFF, $FFFF, $FFFF, $039B ; 23
|
|
||||||
dw $4365, $0365, $0132, $0133 ; 24
|
|
||||||
dw $FFFF, $FFFF, $FFFF, $FFFF ; 25 - unused
|
|
||||||
dw $039B, $03E4, $4363, $0382 ; 26
|
|
||||||
dw $4104, $0104, $4114, $0114 ; 27
|
|
||||||
dw $C3A5, $FFFF, $4358, $0348 ; 28
|
|
||||||
dw $FFFF, $FFFF, $FFFF, $0396 ; 29 - Mothula
|
|
||||||
dw $C350, $8352, $4350, $03F8 ; 2A
|
|
||||||
dw $C36A, $FFFF, $03F9, $C38D ; 2B
|
|
||||||
dw $C340, $8340, $4350, $0350 ; 2C - hookshot cave back
|
|
||||||
dw $FFFF, $FFFF, $FFFF, $FFFF ; 2D - unused
|
|
||||||
dw $FFFF, $838F, $FFFF, $FFFF ; 2E
|
|
||||||
dw $C3B4, $FFFF, $436E, $03B2 ; 2F - Kakariko well
|
|
||||||
dw $C361, $FFFF, $839A, $FFFF ; 30 - inset stairs if possible
|
|
||||||
dw $0124, $0125, $0134, $0135 ; 31
|
|
||||||
dw $43C4, $03C4, $43D4, $03D4 ; 32
|
|
||||||
dw $FFFF, $FFFF, $438F, $FFFF ; 33
|
|
||||||
dw $0129, $012A, $0139, $013A ; 34
|
|
||||||
dw $C38D, $039B, $43B1, $037D ; 35
|
|
||||||
dw $0118, $0119, $0128, $4128 ; 36
|
|
||||||
dw $439B, $838D, $437D, $03B1 ; 37
|
|
||||||
dw $C3AC, $FFFF, $43B7, $FFFF ; 38
|
|
||||||
dw $FFFF, $FFFF, $039B, $0381 ; 39
|
|
||||||
dw $03C2, $03C3, $43D3, $03D3 ; 3A - make bespoke if feasible
|
|
||||||
dw $C3A5, $FFFF, $43B5, $FFFF ; 3B - inset stairs if feasible
|
|
||||||
dw $C340, $8350, $4340, $0350 ; 3C - hookshot cave front
|
|
||||||
dw $039B, $439B, $0361, $838E ; 3D
|
|
||||||
dw $FFFF, $438F, $43B2, $0373 ; 3E
|
|
||||||
dw $FFFF, $FFFF, $0130, $C399 ; 3F
|
|
||||||
dw $C3A5, $FFFF, $4372, $C399 ; 40 - inset stairs if feasible
|
|
||||||
dw $03C5, $03C6, $03D5, $03D6 ; 41
|
|
||||||
dw $03E9, $03EA, $FFFF, $FFFF ; 42
|
|
||||||
dw $C3B2, $03B2, $FFFF, $0361 ; 43
|
|
||||||
dw $038D, $839F, $838D, $039F ; 44
|
|
||||||
dw $C3AB, $83B4, $4364, $43B7 ; 45
|
|
||||||
dw $C375, $8375, $4373, $0373 ; 46
|
|
||||||
dw $FFFF, $FFFF, $FFFF, $FFFF ; 47 - unused
|
|
||||||
dw $FFFF, $FFFF, $FFFF, $FFFF ; 48 - unused
|
|
||||||
dw $839B, $8372, $039B, $0372 ; 49
|
|
||||||
dw $03E2, $03E3, $0386, $4386 ; 4A
|
|
||||||
dw $C361, $4391, $4373, $0373 ; 4B
|
|
||||||
dw $FFFF, $83A5, $FFFF, $03B7 ; 4C
|
|
||||||
dw $0102, $0103, $0112, $0113 ; 4D
|
|
||||||
dw $839B, $439C, $FFFF, $FFFF ; 4E
|
|
||||||
dw $FFFF, $8396, $838D, $FFFF ; 4F
|
|
||||||
dw $FFFF, $83B7, $FFFF, $03B5 ; 50
|
|
||||||
dw $C354, $8354, $4384, $0384 ; 51
|
|
||||||
dw $C3B7, $FFFF, $4359, $0348 ; 52
|
|
||||||
dw $039A, $83B5, $839B, $43B7 ; 53
|
|
||||||
dw $C390, $8390, $4380, $0340 ; 54
|
|
||||||
dw $C340, $8340, $4350, $0340 ; 55 - secret passage
|
|
||||||
dw $038F, $83B4, $4365, $039F ; 56
|
|
||||||
dw $039B, $438D, $0365, $039B ; 57
|
|
||||||
dw $C372, $439B, $0383, $0365 ; 58 - split
|
|
||||||
dw $838A, $8372, $03D1, $0372 ; 59
|
|
||||||
dw $FFFF, $FFFF, $FFFF, $038F ; 5A - Helmasaur King
|
|
||||||
dw $FFFF, $83B7, $FFFF, $03B5 ; 5B
|
|
||||||
dw $C3B1, $83AA, $FFFF, $838F ; 5C
|
|
||||||
dw $039B, $C399, $0361, $FFFF ; 5D
|
|
||||||
dw $FFFF, $0110, $839C, $0123 ; 5E
|
|
||||||
dw $FFFF, $FFFF, $43BB, $FFFF ; 5F
|
|
||||||
dw $FFFF, $8379, $FFFF, $036A ; 60
|
|
||||||
dw $C387, $8385, $4356, $0356 ; 61
|
|
||||||
dw $C346, $8354, $4352, $0340 ; 62
|
|
||||||
dw $039A, $FFFF, $0361, $FFFF ; 63
|
|
||||||
dw $FFFF, $FFFF, $8399, $0367 ; 64
|
|
||||||
dw $FFFF, $FFFF, $0367, $0381 ; 65
|
|
||||||
dw $038F, $039A, $0362, $83B2 ; 66
|
|
||||||
dw $83B4, $83B5, $03B7, $039F ; 67
|
|
||||||
dw $C340, $8350, $4341, $0340 ; 68
|
|
||||||
dw $FFFF, $FFFF, $FFFF, $FFFF ; 69 - unused
|
|
||||||
dw $FFFF, $03E1, $FFFF, $03F1 ; 6A
|
|
||||||
dw $039A, $0361, $839B, $C39B ; 6B
|
|
||||||
dw $039A, $FFFF, $839B, $0360 ; 6C - Lanmolas 2
|
|
||||||
dw $0361, $FFFF, $C39B, $FFFF ; 6D
|
|
||||||
dw $FFFF, $838E, $FFFF, $FFFF ; 6E
|
|
||||||
dw $FFFF, $FFFF, $FFFF, $FFFF ; 6F - unused
|
|
||||||
dw $43BA, $FFFF, $FFFF, $FFFF ; 70
|
|
||||||
dw $039A, $FFFF, $4365, $438D ; 71
|
|
||||||
dw $437A, $037A, $03C1, $0342 ; 72 - slight cheating I guess...
|
|
||||||
dw $038F, $038F, $839B, $0366 ; 73
|
|
||||||
dw $43B2, $03B2, $43A8, $03A8 ; 74
|
|
||||||
dw $038F, $83B4, $0365, $03B5 ; 75
|
|
||||||
dw $010D, $010E, $011D, $011E ; 76
|
|
||||||
dw $0126, $0127, $4137, $0137 ; 77
|
|
||||||
dw $FFFF, $FFFF, $FFFF, $FFFF ; 78 - unused
|
|
||||||
dw $FFFF, $FFFF, $FFFF, $FFFF ; 79 - unused
|
|
||||||
dw $FFFF, $FFFF, $FFFF, $FFFF ; 7A - unused
|
|
||||||
dw $0106, $0107, $438F, $4381 ; 7B
|
|
||||||
dw $C3B7, $83B4, $43B7, $03B7 ; 7C
|
|
||||||
dw $43B2, $835E, $034C, $0391 ; 7D
|
|
||||||
dw $FFFF, $83B7, $4393, $438A ; 7E
|
|
||||||
dw $439B, $FFFF, $838E, $FFFF ; 7F
|
|
||||||
dw $C3A7, $83B0, $FFFF, $FFFF ; 80
|
|
||||||
dw $C350, $8341, $4340, $0341 ; 81
|
|
||||||
dw $C39D, $8354, $4341, $0340 ; 82
|
|
||||||
dw $038F, $83B5, $4365, $43B7 ; 83
|
|
||||||
dw $C344, $8345, $4354, $0354 ; 84
|
|
||||||
dw $C38B, $C39B, $03B7, $439B ; 85
|
|
||||||
dw $FFFF, $FFFF, $FFFF, $FFFF ; 86 - unused
|
|
||||||
dw $0136, $0117, $4394, $838F ; 87
|
|
||||||
dw $FFFF, $FFFF, $FFFF, $FFFF ; 88 - unused
|
|
||||||
dw $C3B0, $83B0, $FFFF, $FFFF ; 89
|
|
||||||
dw $FFFF, $FFFF, $FFFF, $FFFF ; 8A - unused
|
|
||||||
dw $838A, $0360, $038A, $438D ; 8B
|
|
||||||
dw $83BE, $83BF, $03BD, $0391 ; 8C
|
|
||||||
dw $0360, $C38A, $038D, $438A ; 8D
|
|
||||||
dw $FFFF, $838E, $FFFF, $FFFF ; 8E
|
|
||||||
dw $FFFF, $FFFF, $FFFF, $FFFF ; 8F - unused
|
|
||||||
dw $FFFF, $FFFF, $438F, $FFFF ; 90
|
|
||||||
dw $FFFF, $83A5, $FFFF, $03B7 ; 91
|
|
||||||
dw $03D2, $C3B7, $0364, $039F ; 92
|
|
||||||
dw $C36C, $836C, $C39B, $838F ; 93
|
|
||||||
dw $FFFF, $FFFF, $FFFF, $FFFF ; 94 - unused
|
|
||||||
dw $FFFF, $83B7, $FFFF, $03B5 ; 95
|
|
||||||
dw $010F, $FFFF, $011F, $C39C ; 96
|
|
||||||
dw $039A, $83B4, $839B, $036F ; 97
|
|
||||||
dw $FFFF, $FFFF, $43B2, $0397 ; 98
|
|
||||||
dw $FFFF, $038F, $434A, $0363 ; 99
|
|
||||||
dw $FFFF, $FFFF, $FFFF, $FFFF ; 9A - unused
|
|
||||||
dw $839B, $0381, $435E, $0378 ; 9B
|
|
||||||
dw $C350, $8350, $4341, $0341 ; 9C
|
|
||||||
dw $0116, $83B2, $43B1, $035E ; 9D
|
|
||||||
dw $FFFF, $439A, $838D, $03B9 ; 9E
|
|
||||||
dw $FFFF, $FFFF, $439B, $FFFF ; 9F
|
|
||||||
dw $839B, $C39C, $FFFF, $FFFF ; A0
|
|
||||||
dw $C3B0, $835D, $FFFF, $036A ; A1
|
|
||||||
dw $03EE, $03EF, $03FE, $03FF ; A2
|
|
||||||
dw $C35A, $FFFF, $436A, $FFFF ; A3
|
|
||||||
dw $FFFF, $FFFF, $438F, $FFFF ; A4
|
|
||||||
dw $039A, $0361, $C3B2, $83B2 ; A5
|
|
||||||
dw $C340, $8370, $4340, $0340 ; A6
|
|
||||||
dw $C396, $FFFF, $FFFF, $FFFF ; A7 - ToH fairy basement room
|
|
||||||
dw $039B, $03E5, $839B, $03F5 ; A8
|
|
||||||
dw $C357, $8357, $4356, $0356 ; A9
|
|
||||||
dw $03E6, $439B, $03F6, $C39B ; AA
|
|
||||||
dw $FFFF, $FFFF, $439A, $FFFF ; AB
|
|
||||||
dw $FFFF, $FFFF, $FFFF, $038F ; AC - Blind
|
|
||||||
dw $FFFF, $FFFF, $FFFF, $FFFF ; AD - unused
|
|
||||||
dw $FFFF, $8399, $FFFF, $FFFF ; AE
|
|
||||||
dw $C39B, $FFFF, $FFFF, $FFFF ; AF
|
|
||||||
dw $039B, $C399, $839B, $C399 ; B0
|
|
||||||
dw $0391, $83B5, $434C, $438A ; B1
|
|
||||||
dw $C35C, $83A2, $039B, $0366 ; B2
|
|
||||||
dw $0365, $FFFF, $0365, $FFFF ; B3
|
|
||||||
dw $03FA, $83FD, $03EC, $03ED ; B4
|
|
||||||
dw $03EB, $83FD, $83FA, $03FD ; B5
|
|
||||||
dw $039A, $038F, $0361, $0361 ; B6
|
|
||||||
dw $C3B4, $FFFF, $43B5, $FFFF ; B7
|
|
||||||
dw $FFFF, $838A, $FFFF, $03B4 ; B8
|
|
||||||
dw $43F3, $03F3, $4354, $0354 ; B9
|
|
||||||
dw $0364, $438D, $FFFF, $FFFF ; BA
|
|
||||||
dw $838A, $8364, $4372, $0364 ; BB
|
|
||||||
dw $83BE, $C38A, $03D0, $438A ; BC
|
|
||||||
dw $FFFF, $FFFF, $FFFF, $FFFF ; BD - unused
|
|
||||||
dw $FFFF, $439A, $FFFF, $C365 ; BE
|
|
||||||
dw $FFFF, $FFFF, $438D, $FFFF ; BF
|
|
||||||
dw $C372, $C399, $4372, $C399 ; C0
|
|
||||||
dw $039B, $0364, $4365, $8364 ; C1
|
|
||||||
dw $C351, $8353, $4341, $0353 ; C2
|
|
||||||
dw $03E0, $C369, $03F0, $4369 ; C3 - show layers
|
|
||||||
dw $43C0, $03C0, $4340, $0341 ; C4
|
|
||||||
dw $C3B5, $FFFF, $438A, $FFFF ; C5
|
|
||||||
dw $03FA, $03FB, $83FA, $83FB ; C6
|
|
||||||
dw $43FB, $83FD, $03FC, $03FD ; C7
|
|
||||||
dw $FFFF, $FFFF, $FFFF, $038F ; C8 - Armos Knights
|
|
||||||
dw $03F2, $43F2, $0386, $4386 ; C9
|
|
||||||
dw $FFFF, $FFFF, $FFFF, $FFFF ; CA - unused
|
|
||||||
dw $C340, $8343, $4354, $0347 ; CB
|
|
||||||
dw $C353, $8350, $4347, $0354 ; CC
|
|
||||||
dw $FFFF, $FFFF, $FFFF, $FFFF ; CD - unused
|
|
||||||
dw $FFFF, $8391, $FFFF, $FFFF ; CE - Kholdstare drop
|
|
||||||
dw $FFFF, $FFFF, $FFFF, $FFFF ; CF - unused
|
|
||||||
dw $C372, $C399, $4372, $C399 ; D0
|
|
||||||
dw $C38E, $838F, $4381, $C38D ; D1
|
|
||||||
dw $FFFF, $83B5, $FFFF, $0395 ; D2
|
|
||||||
dw $FFFF, $FFFF, $FFFF, $FFFF ; D3 - unused
|
|
||||||
dw $FFFF, $FFFF, $FFFF, $FFFF ; D4 - unused
|
|
||||||
dw $C3B5, $FFFF, $43B5, $FFFF ; D5
|
|
||||||
dw $C3B5, $010A, $43B4, $011A ; D6
|
|
||||||
dw $FFFF, $FFFF, $FFFF, $FFFF ; D7 - unused
|
|
||||||
dw $FFFF, $8361, $FFFF, $839B ; D8
|
|
||||||
dw $FFFF, $FFFF, $4360, $0360 ; D9
|
|
||||||
dw $FFFF, $FFFF, $439C, $FFFF ; DA
|
|
||||||
dw $C354, $8346, $4354, $037F ; DB
|
|
||||||
dw $C346, $8354, $4343, $0340 ; DC
|
|
||||||
dw $FFFF, $FFFF, $FFFF, $FFFF ; DD - unused
|
|
||||||
dw $FFFF, $8396, $FFFF, $FFFF ; DE - Kholdstare
|
|
||||||
dw $FFFF, $FFFF, $43A0, $0354 ; DF - paradox top
|
|
||||||
dw $039B, $C399, $0361, $FFFF ; E0
|
|
||||||
|
|
||||||
; no more dungeon
|
|
||||||
dw $C340, $8340, $4350, $0340 ; E1 - lost woods thieves hideout
|
|
||||||
dw $C340, $8340, $4340, $0350 ; E2 - lumberjack cave
|
|
||||||
dw $FFFF, $83B4, $43B2, $036E ; E3 - magic bat
|
|
||||||
dw $C340, $8342, $4350, $0342 ; E4 - old man's house front
|
|
||||||
dw $C342, $8340, $4356, $0354 ; E5 - old man's house back
|
|
||||||
dw $C340, $8341, $4350, $0340 ; E6 - death mountain descent left
|
|
||||||
dw $C341, $8340, $4340, $0350 ; E7 - death mountain descent right
|
|
||||||
dw $C370, $8370, $4380, $0350 ; E8 - superbunny top
|
|
||||||
dw $FFFF, $FFFF, $FFFF, $FFFF ; E9 - unused
|
|
||||||
dw $C3A5, $FFFF, $43B5, $FFFF ; EA - spectacle top
|
|
||||||
dw $FFFF, $83A6, $FFFF, $03B5 ; EB - bumper top
|
|
||||||
dw $FFFF, $FFFF, $FFFF, $FFFF ; EC - unused
|
|
||||||
dw $C370, $8370, $4340, $0350 ; ED - fairy ascension top
|
|
||||||
dw $C340, $8390, $4340, $0350 ; EE - spiral top
|
|
||||||
dw $FFFF, $8340, $43A0, $0354 ; EF - paradox top
|
|
||||||
dw $C340, $8342, $4350, $0342 ; F0 - old man rescue left
|
|
||||||
dw $C342, $8342, $4340, $0350 ; F1 - old man rescue right
|
|
||||||
dw $FFFF, $FFFF, $FFFF, $03B2 ; F2 - Sahasrahla's Kakariko house left
|
|
||||||
dw $FFFF, $FFFF, $43B2, $FFFF ; F3 - Sahasrahla's Kakariko house right
|
|
||||||
dw $FFFF, $FFFF, $FFFF, $03B2 ; F4 - quarreling brothers left
|
|
||||||
dw $FFFF, $FFFF, $43B2, $FFFF ; F5 - quarreling brothers right
|
|
||||||
dw $FFFF, $FFFF, $FFFF, $FFFF ; F6 - unused
|
|
||||||
dw $FFFF, $FFFF, $FFFF, $FFFF ; F7 - unused
|
|
||||||
dw $C370, $8370, $43A0, $0354 ; F8 - superbunny bottom
|
|
||||||
dw $C340, $8341, $4350, $0340 ; F9 - spectacle left
|
|
||||||
dw $C374, $8340, $4350, $0340 ; FA - spectacle bottom
|
|
||||||
dw $FFFF, $83A5, $4348, $0358 ; FB - bumper bottom
|
|
||||||
dw $FFFF, $FFFF, $FFFF, $FFFF ; FC - unused
|
|
||||||
dw $C370, $8370, $4354, $0354 ; FD - fairy ascension bottom
|
|
||||||
dw $FFFF, $FFFF, $43B4, $03B5 ; FE - spiral bottom
|
|
||||||
dw $C3B4, $83B4, $436E, $036D ; FF - paradox bottom
|
|
||||||
File diff suppressed because it is too large
Load Diff
163
gk/draw_loot.asm
163
gk/draw_loot.asm
@@ -1,163 +0,0 @@
|
|||||||
RedrawLoot:
|
|
||||||
JSL DrawLoot
|
|
||||||
|
|
||||||
; what we wrote over
|
|
||||||
SEP #$20
|
|
||||||
STZ.w $0210
|
|
||||||
RTL
|
|
||||||
|
|
||||||
FirstDrawLoot:
|
|
||||||
LDA.b #$FF
|
|
||||||
STA.w $0215
|
|
||||||
LDA.b #$80
|
|
||||||
STA.w $0216
|
|
||||||
STA.w $0218
|
|
||||||
LDA.l DRMode
|
|
||||||
BEQ +
|
|
||||||
LDA.w DungeonID
|
|
||||||
ASL A
|
|
||||||
TAX
|
|
||||||
LDA.l DungeonMapData.floor, X
|
|
||||||
STA.b $A4
|
|
||||||
+
|
|
||||||
|
|
||||||
; what we wrote over
|
|
||||||
LDA.b #$08
|
|
||||||
STA.b $17
|
|
||||||
|
|
||||||
DrawLoot:
|
|
||||||
LDA.b $07
|
|
||||||
STA.w $021B
|
|
||||||
|
|
||||||
LDA.l DRMode
|
|
||||||
BNE .skip
|
|
||||||
|
|
||||||
REP #$30
|
|
||||||
PHX : PHY
|
|
||||||
|
|
||||||
STZ.b $0E
|
|
||||||
|
|
||||||
LDX.w DungeonID
|
|
||||||
LDA.l DungeonMapRoomPointers, X
|
|
||||||
STA.b $72
|
|
||||||
|
|
||||||
SEP #$20
|
|
||||||
LDA.l DungeonMapFloorCountData, X
|
|
||||||
AND.b #$0F
|
|
||||||
CLC : ADC.w DungeonMapCurrentFloor
|
|
||||||
PHA
|
|
||||||
|
|
||||||
JSR DrawSingleFloorLoot
|
|
||||||
|
|
||||||
INC.b $0F
|
|
||||||
LDA.b #$80
|
|
||||||
STA.b $0E
|
|
||||||
PLA : DEC A
|
|
||||||
JSR DrawSingleFloorLoot
|
|
||||||
|
|
||||||
LDX.w GFXStripes
|
|
||||||
LDA.b #$FF
|
|
||||||
STA.w GFXStripes+$02, X
|
|
||||||
|
|
||||||
LDA.b #$01
|
|
||||||
STA.b NMISTRIPES
|
|
||||||
|
|
||||||
PLY : PLX
|
|
||||||
.skip
|
|
||||||
LDA.b #$00
|
|
||||||
RTL
|
|
||||||
|
|
||||||
DrawSingleFloorLoot:
|
|
||||||
REP #$20
|
|
||||||
AND.w #$00FF
|
|
||||||
ASL A
|
|
||||||
TAX
|
|
||||||
|
|
||||||
LDA.l DungeonMapFloorToDataOffset, X
|
|
||||||
CLC : ADC.w #$0018 ; get to end of floor
|
|
||||||
TAY
|
|
||||||
|
|
||||||
SEP #$20
|
|
||||||
LDA.b #$04
|
|
||||||
STA.b $06
|
|
||||||
|
|
||||||
LDA.b #$04
|
|
||||||
STA.b $07
|
|
||||||
|
|
||||||
.next_row
|
|
||||||
REP #$20
|
|
||||||
LDA.w GFXStripes
|
|
||||||
TAX
|
|
||||||
CLC : ADC.w #$0030
|
|
||||||
STA.w GFXStripes
|
|
||||||
|
|
||||||
SEP #$20
|
|
||||||
LDA.b $07
|
|
||||||
CLC : ADC.b $07
|
|
||||||
REP #$20
|
|
||||||
AND.w #$00FF
|
|
||||||
ASL #5
|
|
||||||
|
|
||||||
CLC : ADC.w #$1092
|
|
||||||
ADC.b $0E
|
|
||||||
XBA
|
|
||||||
STA.w GFXStripes+$02, X
|
|
||||||
CLC : ADC.w #$2000
|
|
||||||
STA.w GFXStripes+$1A, X
|
|
||||||
|
|
||||||
LDA.w #$1300
|
|
||||||
STA.w GFXStripes+$04, X
|
|
||||||
STA.w GFXStripes+$1C, X
|
|
||||||
|
|
||||||
TXA
|
|
||||||
CLC : ADC.w #$0016
|
|
||||||
TAX
|
|
||||||
|
|
||||||
.next_room
|
|
||||||
REP #$20
|
|
||||||
LDA.b ($72), Y ; get room id
|
|
||||||
PHY
|
|
||||||
|
|
||||||
AND.w #$00FF
|
|
||||||
CMP.w #$000F ; $0F = empty room
|
|
||||||
|
|
||||||
BNE .valid_room
|
|
||||||
LDA.w #$0000
|
|
||||||
BRA +
|
|
||||||
.valid_room
|
|
||||||
JSL CheckLoot
|
|
||||||
+
|
|
||||||
ASL A : ASL A : ASL A
|
|
||||||
|
|
||||||
TXY
|
|
||||||
TAX
|
|
||||||
|
|
||||||
LDA.l LootTypeIcons+0, X
|
|
||||||
STA.w GFXStripes+$00, Y
|
|
||||||
LDA.l LootTypeIcons+2, X
|
|
||||||
STA.w GFXStripes+$02, Y
|
|
||||||
LDA.l LootTypeIcons+4, X
|
|
||||||
STA.w GFXStripes+$18, Y
|
|
||||||
LDA.l LootTypeIcons+6, X
|
|
||||||
STA.w GFXStripes+$1A, Y
|
|
||||||
|
|
||||||
TYX
|
|
||||||
PLY
|
|
||||||
DEY : DEX #4
|
|
||||||
|
|
||||||
SEP #$20
|
|
||||||
DEC.b $06
|
|
||||||
BPL .next_room
|
|
||||||
|
|
||||||
DEC.b $07
|
|
||||||
BMI .done
|
|
||||||
|
|
||||||
LDA.b #$00
|
|
||||||
XBA
|
|
||||||
LDA.b #$04
|
|
||||||
STA.b $06
|
|
||||||
|
|
||||||
JMP .next_row
|
|
||||||
|
|
||||||
.done
|
|
||||||
RTS
|
|
||||||
@@ -1,275 +0,0 @@
|
|||||||
DrawNonexistentRoom:
|
|
||||||
REP #$20
|
|
||||||
LDA.w #$0F00
|
|
||||||
STA.l $7F0000, X
|
|
||||||
STA.l $7F0002, X
|
|
||||||
STA.l $7F0040, X
|
|
||||||
STA.l $7F0042, X
|
|
||||||
JML $8AE7F2
|
|
||||||
|
|
||||||
GetVisibilityProps:
|
|
||||||
PHX
|
|
||||||
ASL A : ASL A
|
|
||||||
TAX
|
|
||||||
LDA.b $0C
|
|
||||||
AND.l .visibility_props, X
|
|
||||||
ORA.l .visibility_props+2, X
|
|
||||||
STA.b $0C
|
|
||||||
PLX
|
|
||||||
RTS
|
|
||||||
|
|
||||||
.visibility_props:
|
|
||||||
dw $0000, $0F00
|
|
||||||
dw $C000, $174F
|
|
||||||
dw $C000, $174F
|
|
||||||
dw $0000, $1400
|
|
||||||
dw $0000, $1000
|
|
||||||
dw $0000, $0C00
|
|
||||||
dw $0000, $0800
|
|
||||||
|
|
||||||
; A = room shape
|
|
||||||
; $0C = visibility props
|
|
||||||
GetQuadrantTile:
|
|
||||||
PHA
|
|
||||||
|
|
||||||
LDA.b $0C
|
|
||||||
AND.w #$03FF
|
|
||||||
BNE .square
|
|
||||||
|
|
||||||
PLA
|
|
||||||
ORA.b $0C
|
|
||||||
RTS
|
|
||||||
|
|
||||||
.square
|
|
||||||
PLA
|
|
||||||
LDA.b $0C
|
|
||||||
RTS
|
|
||||||
|
|
||||||
NormalDrawDungeonMapRoom:
|
|
||||||
JSL DrawDungeonMapRoom
|
|
||||||
JML $8AE7F2
|
|
||||||
|
|
||||||
; $CA has room_id
|
|
||||||
; $0E has quadrant flags
|
|
||||||
; X has address to draw at
|
|
||||||
DrawDungeonMapRoom:
|
|
||||||
REP #$20
|
|
||||||
PHB : PHK : PLB ; need to keep this in same bank as data, or else specify bank
|
|
||||||
LDA.b $0A : PHA
|
|
||||||
|
|
||||||
JSR GetSpecificRoomVisibility
|
|
||||||
|
|
||||||
LDA.b $CA
|
|
||||||
AND.w #$00FF
|
|
||||||
ASL A : ASL A : ASL A
|
|
||||||
TAY
|
|
||||||
|
|
||||||
macro DrawQuadrant(quadrant, writeOffset)
|
|
||||||
.draw_quadrant_<quadrant>:
|
|
||||||
LDA.w #(3-<quadrant>)<<14
|
|
||||||
STA.b $0C
|
|
||||||
|
|
||||||
LDA.b $0E
|
|
||||||
BIT.w #1<<(3-<quadrant>)
|
|
||||||
BNE ..visited
|
|
||||||
|
|
||||||
LDA.b $0A
|
|
||||||
BRA ..continue
|
|
||||||
|
|
||||||
..visited
|
|
||||||
LDA.b $0B
|
|
||||||
|
|
||||||
..continue
|
|
||||||
AND.w #$00FF
|
|
||||||
JSR GetVisibilityProps
|
|
||||||
|
|
||||||
LDA.w SupertileRoomShapes+(2*<quadrant>), Y
|
|
||||||
CMP.w #$FFFF : BNE ..get_quadrant
|
|
||||||
LDA.b $0A
|
|
||||||
AND.w #$00FF
|
|
||||||
CMP.w #$0001
|
|
||||||
BNE ..empty
|
|
||||||
|
|
||||||
..full_square
|
|
||||||
LDA.b $0C
|
|
||||||
BRA ..write
|
|
||||||
|
|
||||||
..get_quadrant
|
|
||||||
JSR GetQuadrantTile
|
|
||||||
BRA ..write
|
|
||||||
|
|
||||||
..empty
|
|
||||||
LDA.w #$0F00
|
|
||||||
|
|
||||||
..write
|
|
||||||
STA.l $7F0000+<writeOffset>, X
|
|
||||||
endmacro
|
|
||||||
|
|
||||||
%DrawQuadrant(0, $00)
|
|
||||||
%DrawQuadrant(1, $02)
|
|
||||||
%DrawQuadrant(2, $40)
|
|
||||||
%DrawQuadrant(3, $42)
|
|
||||||
|
|
||||||
.done
|
|
||||||
PLA : STA.b $0A
|
|
||||||
PLB
|
|
||||||
RTL
|
|
||||||
|
|
||||||
DrawEntrances:
|
|
||||||
REP #$30
|
|
||||||
PHX : PHY
|
|
||||||
LDA.b $06 : PHA
|
|
||||||
|
|
||||||
LDX.w DungeonID
|
|
||||||
LDA.l DungeonMapRoomPointers, X
|
|
||||||
STA.b $72
|
|
||||||
|
|
||||||
SEP #$20
|
|
||||||
LDA.l DungeonMapFloorCountData, X
|
|
||||||
AND.b #$0F
|
|
||||||
CLC : ADC.w DungeonMapCurrentFloor
|
|
||||||
REP #$20
|
|
||||||
AND.w #$00FF
|
|
||||||
|
|
||||||
STZ.b $02
|
|
||||||
PHA
|
|
||||||
JSR DrawSingleFloorEntrances
|
|
||||||
|
|
||||||
INC.b $02
|
|
||||||
INC.b $02
|
|
||||||
PLA
|
|
||||||
DEC A
|
|
||||||
JSR DrawSingleFloorEntrances
|
|
||||||
|
|
||||||
.done
|
|
||||||
REP #$20
|
|
||||||
PLA : STA.b $06
|
|
||||||
PLY : PLX
|
|
||||||
SEP #$30
|
|
||||||
RTL
|
|
||||||
|
|
||||||
DrawSingleFloorEntrances:
|
|
||||||
ASL A
|
|
||||||
TAX
|
|
||||||
|
|
||||||
LDA.l DungeonMapFloorToDataOffset, X
|
|
||||||
TAY
|
|
||||||
STZ.b $06
|
|
||||||
|
|
||||||
.next_room
|
|
||||||
REP #$20
|
|
||||||
LDA.b ($72), Y ; get room id
|
|
||||||
AND.w #$00FF
|
|
||||||
CMP.w #$000F ; $0F = empty room
|
|
||||||
|
|
||||||
BEQ +
|
|
||||||
JSR DrawSingleRoomEntrances
|
|
||||||
+
|
|
||||||
|
|
||||||
INY
|
|
||||||
|
|
||||||
SEP #$20
|
|
||||||
INC.b $06
|
|
||||||
LDA.b $06
|
|
||||||
CMP.b #$05
|
|
||||||
BCC .next_room
|
|
||||||
|
|
||||||
STZ.b $06
|
|
||||||
- INC.b $07
|
|
||||||
LDA.b $07
|
|
||||||
CMP.b #$05
|
|
||||||
BCC .next_room
|
|
||||||
|
|
||||||
.done
|
|
||||||
REP #$20
|
|
||||||
RTS
|
|
||||||
|
|
||||||
macro DrawSingleEntrance(offset)
|
|
||||||
LDY.b $00
|
|
||||||
LDA.b #$00
|
|
||||||
STA.w OAMBufferAux, Y ; high x-bit and size bit
|
|
||||||
TYA
|
|
||||||
ASL #2
|
|
||||||
TAY
|
|
||||||
|
|
||||||
LDA.b $06
|
|
||||||
CPX.b #$02
|
|
||||||
BNE ?+
|
|
||||||
ASL A
|
|
||||||
?+
|
|
||||||
CLC : ADC.b $06
|
|
||||||
ASL #3
|
|
||||||
CLC : ADC.b #$90+<offset>
|
|
||||||
STA.w OAMBuffer+0, Y
|
|
||||||
|
|
||||||
PHX
|
|
||||||
LDA.b $07
|
|
||||||
CPX.b #$02
|
|
||||||
BNE ?+
|
|
||||||
ASL A
|
|
||||||
?+
|
|
||||||
CLC : ADC.b $07
|
|
||||||
ASL #3
|
|
||||||
|
|
||||||
LDX.b $02
|
|
||||||
|
|
||||||
CLC : ADC.l DungeonMapRoomMarkerYBase, X
|
|
||||||
PLX
|
|
||||||
CLC : ADC.b #$08
|
|
||||||
CLC : ADC.w $0213
|
|
||||||
SEC : SBC.b $E8
|
|
||||||
STA.w OAMBuffer+1, Y
|
|
||||||
|
|
||||||
LDA.b #$33
|
|
||||||
STA.w OAMBuffer+2, Y
|
|
||||||
|
|
||||||
LDA.b #$23
|
|
||||||
STA.w OAMBuffer+3, Y
|
|
||||||
|
|
||||||
INC.b $00
|
|
||||||
endmacro
|
|
||||||
|
|
||||||
DrawSingleRoomEntrances:
|
|
||||||
STA.b $0E
|
|
||||||
PHY
|
|
||||||
|
|
||||||
SEP #$10
|
|
||||||
|
|
||||||
LDX.b #$FE
|
|
||||||
.next_entry
|
|
||||||
INX : INX
|
|
||||||
LDA.l SupertileEntrances, X
|
|
||||||
BPL +
|
|
||||||
JMP .done
|
|
||||||
+
|
|
||||||
|
|
||||||
AND.w #$0FFF
|
|
||||||
CMP.b $0E
|
|
||||||
BNE .next_entry
|
|
||||||
|
|
||||||
SEP #$20
|
|
||||||
LDA.l SupertileEntrances+1, X
|
|
||||||
TYX
|
|
||||||
PHA : PHA
|
|
||||||
|
|
||||||
BIT.b #$40
|
|
||||||
BEQ +
|
|
||||||
%DrawSingleEntrance(0)
|
|
||||||
+
|
|
||||||
|
|
||||||
PLA
|
|
||||||
BIT.b #$20
|
|
||||||
BEQ +
|
|
||||||
%DrawSingleEntrance(4)
|
|
||||||
+
|
|
||||||
|
|
||||||
PLA
|
|
||||||
BIT.b #$10
|
|
||||||
BEQ +
|
|
||||||
%DrawSingleEntrance(8)
|
|
||||||
+
|
|
||||||
|
|
||||||
.done
|
|
||||||
REP #$30
|
|
||||||
PLY
|
|
||||||
RTS
|
|
||||||
@@ -1,214 +0,0 @@
|
|||||||
; move aga boss icon to correct room
|
|
||||||
org $8AEE75
|
|
||||||
db $08
|
|
||||||
|
|
||||||
; use AA1 = $1C for map stuff
|
|
||||||
org $80E193
|
|
||||||
skip 4
|
|
||||||
db $61, $62, $63, $D6
|
|
||||||
|
|
||||||
org $8AE11D
|
|
||||||
LDA.b #$1C
|
|
||||||
|
|
||||||
org $8AE12B
|
|
||||||
LDA.b #$20
|
|
||||||
|
|
||||||
; dungeon map sheets
|
|
||||||
org $80DDD3 ; slot $8F
|
|
||||||
db $61, $56, $57, $62
|
|
||||||
|
|
||||||
; always use $8F in dungeon map
|
|
||||||
org $8AE122
|
|
||||||
NOP #4
|
|
||||||
LDA.b #$8F
|
|
||||||
|
|
||||||
; unused chest data
|
|
||||||
org $81E9A5
|
|
||||||
dw $000F ; freezor room, second chest (only one chest in supertile)
|
|
||||||
|
|
||||||
org $81EA6E
|
|
||||||
dw $000F ; mire spike room, second chest (only one chest in supertile)
|
|
||||||
|
|
||||||
org $81EAF8
|
|
||||||
dw $000F ; GT button/switch/bladetrap room (no chest in supertile)
|
|
||||||
|
|
||||||
; Dungeon Map Palettes 2-5 left half
|
|
||||||
org $9BE544
|
|
||||||
dw $0000, $71E7, $7FFF, $3B5F, $0000, $0000, $7EB5, $1CE7
|
|
||||||
|
|
||||||
org $9BE564
|
|
||||||
dw $0000, $5565, $7FFF, $331C, $0000, $0000, $7E27, $0C63
|
|
||||||
|
|
||||||
org $9BE584
|
|
||||||
dw $0000, $4100, $7FFF, $2656, $4100, $0000, $4100, $4100
|
|
||||||
|
|
||||||
org $9BE5A4
|
|
||||||
dw $0000, $34E0, $7FFF, $34E0, $34E0, $0000, $34E0, $34E0
|
|
||||||
|
|
||||||
; move BG1 to main screen in dungeon map screen
|
|
||||||
org $8AE130
|
|
||||||
LDA.b #$17 : STA.b $1C
|
|
||||||
LDA.b #$00 : STA.b $1D
|
|
||||||
|
|
||||||
; make skull icon blink opposite our loot icons
|
|
||||||
org $8AEE2B
|
|
||||||
AND.b #$10
|
|
||||||
NOP #2
|
|
||||||
db $F0 ; BEQ to replace BCS
|
|
||||||
|
|
||||||
;================================================================================
|
|
||||||
; Overhaul of Dungeon Map Screen
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $8AE64D
|
|
||||||
PLX
|
|
||||||
JML NormalDrawDungeonMapRoom
|
|
||||||
|
|
||||||
org $8AE606
|
|
||||||
PLX
|
|
||||||
JML DrawNonexistentRoom
|
|
||||||
|
|
||||||
org $8AE152
|
|
||||||
JSL LoadLastHUDPalette
|
|
||||||
|
|
||||||
org $808BD3
|
|
||||||
JSL LoadStripes
|
|
||||||
BRA + : NOP #9 : +
|
|
||||||
|
|
||||||
org $8AEAE8 ; vanilla checks number of sprites drawn instead of... counting...
|
|
||||||
LDA.b $0E
|
|
||||||
CMP.b #$02
|
|
||||||
|
|
||||||
;================================================================================
|
|
||||||
; Swapping Dungeon in Dungeon Map Screen (L/R)
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $8AE9A7
|
|
||||||
JSL CheckSwitchMap
|
|
||||||
BRA + : NOP #3 : +
|
|
||||||
|
|
||||||
org $8AEF06
|
|
||||||
DEC.b $13
|
|
||||||
BNE +
|
|
||||||
JML DungeonMapSwitch_Submodule
|
|
||||||
+ RTL
|
|
||||||
warnpc $8AEF29
|
|
||||||
|
|
||||||
org $8AEADA
|
|
||||||
JML SkipMapSprites
|
|
||||||
|
|
||||||
org $8AE9C7
|
|
||||||
JSL RestoreDungeonMapFloorIndex
|
|
||||||
NOP
|
|
||||||
|
|
||||||
org $98BC86
|
|
||||||
JSL CacheCurrentDungeon
|
|
||||||
|
|
||||||
org $8AEFC5
|
|
||||||
JSL RestoreCurrentDungeon
|
|
||||||
NOP
|
|
||||||
|
|
||||||
org $8AE1EC
|
|
||||||
PLB
|
|
||||||
JML DrawDungeonLabel
|
|
||||||
|
|
||||||
org $8AE83E
|
|
||||||
JSL StartCurrentRoomSearch
|
|
||||||
BRA + : NOP #6 : +
|
|
||||||
|
|
||||||
org $8AE86C
|
|
||||||
JML FindCurrentRoom
|
|
||||||
padbyte $EA
|
|
||||||
pad $8AE891
|
|
||||||
|
|
||||||
org $8AEBF8
|
|
||||||
LDA.w $0217
|
|
||||||
SEC : SBC.b $0F
|
|
||||||
BMI +
|
|
||||||
CMP.b #$18
|
|
||||||
BCS +
|
|
||||||
skip 7
|
|
||||||
+
|
|
||||||
|
|
||||||
org $8AEB9A
|
|
||||||
db -8, 8, -8, 8
|
|
||||||
db -8, -8, 8, 8
|
|
||||||
|
|
||||||
;================================================================================
|
|
||||||
; Show indicators of what is left in each room
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $8AEABA
|
|
||||||
JSL RedrawLoot
|
|
||||||
NOP
|
|
||||||
|
|
||||||
org $8AE42B
|
|
||||||
JSL FirstDrawLoot
|
|
||||||
|
|
||||||
;================================================================================
|
|
||||||
; Blink indicators of what is left in each room
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $8AE964
|
|
||||||
JSL BlinkLoot
|
|
||||||
|
|
||||||
org $8AE235
|
|
||||||
JSL WriteBigEndianAddressX
|
|
||||||
org $8AE290
|
|
||||||
JSL WriteBigEndianAddressY
|
|
||||||
org $8AE350
|
|
||||||
JSL WriteBigEndianAddressY
|
|
||||||
|
|
||||||
org $8AE206
|
|
||||||
JSL StartDoubleWrite
|
|
||||||
NOP
|
|
||||||
|
|
||||||
org $8AE2E0
|
|
||||||
JML CheckDoubleWrite
|
|
||||||
NOP
|
|
||||||
|
|
||||||
org $8AE21C
|
|
||||||
JSL DrawMountain
|
|
||||||
BRA + : NOP #9 : +
|
|
||||||
|
|
||||||
;================================================================================
|
|
||||||
; Draw Wacky Door Rando Layouts
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $8AE3D7
|
|
||||||
LDA.l DRMode
|
|
||||||
BEQ +
|
|
||||||
JSL DrawWackyDoorRandoStuff
|
|
||||||
JMP.w $8AE422
|
|
||||||
NOP
|
|
||||||
+
|
|
||||||
warnpc $8AE3EB
|
|
||||||
|
|
||||||
org $8AE439
|
|
||||||
dw $0F19, $4F19, $8F19, $CF19
|
|
||||||
|
|
||||||
org $8AE449
|
|
||||||
dw $0F1A, $8F1A
|
|
||||||
|
|
||||||
org $8AE451
|
|
||||||
dw $0F1B, $4F1B
|
|
||||||
|
|
||||||
org $8AE473
|
|
||||||
NOP #2
|
|
||||||
|
|
||||||
org $8AE4A4
|
|
||||||
NOP #2
|
|
||||||
|
|
||||||
org $8AE4DC
|
|
||||||
NOP #2
|
|
||||||
|
|
||||||
org $8AE4F9
|
|
||||||
dw $0F1E, $0F1F, $0F20, $0F21
|
|
||||||
dw $0F22, $0F23, $0F24, $0F25
|
|
||||||
|
|
||||||
org $8AE539
|
|
||||||
LDA.w #$0F1C
|
|
||||||
|
|
||||||
org $8AE573
|
|
||||||
LDA.w #$0F1D
|
|
||||||
|
|
||||||
org $8AE555
|
|
||||||
NOP #2
|
|
||||||
|
|
||||||
org $8AE576
|
|
||||||
NOP #2
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
pushpc
|
|
||||||
incsrc dungeon_map_hooks.asm
|
|
||||||
|
|
||||||
macro WriteGFXSheetPointer(sheet, location)
|
|
||||||
pushpc
|
|
||||||
org $80CFC0+<sheet>
|
|
||||||
db <location>>>16
|
|
||||||
|
|
||||||
org $80D09F+<sheet>
|
|
||||||
db <location>>>8
|
|
||||||
|
|
||||||
org $80D17E+<sheet>
|
|
||||||
db <location>>>0
|
|
||||||
pullpc
|
|
||||||
endmacro
|
|
||||||
|
|
||||||
%WriteGFXSheetPointer($C9, DungeonMapIcons1)
|
|
||||||
%WriteGFXSheetPointer($CA, DungeonMapIcons2)
|
|
||||||
%WriteGFXSheetPointer($D5, DungeonMapIcons3)
|
|
||||||
%WriteGFXSheetPointer($D4, MapSheetD4)
|
|
||||||
%WriteGFXSheetPointer($D6, DungeonMapDoorConnectors)
|
|
||||||
|
|
||||||
%WriteGFXSheetPointer($61, DungeonMapIcons4)
|
|
||||||
%WriteGFXSheetPointer($62, DungeonMapIcons5)
|
|
||||||
%WriteGFXSheetPointer($63, DungeonMapIcons6)
|
|
||||||
|
|
||||||
pullpc
|
|
||||||
|
|
||||||
incsrc doors_dungeon_map.asm
|
|
||||||
incsrc draw_rooms.asm
|
|
||||||
incsrc map_bg3.asm
|
|
||||||
incsrc dungeon_switch.asm
|
|
||||||
incsrc draw_loot.asm
|
|
||||||
incsrc check_loot.asm
|
|
||||||
incsrc blink_loot.asm
|
|
||||||
incsrc data/doors_display.asm
|
|
||||||
incsrc data/spiral_stairs.asm
|
|
||||||
incsrc data/fall_warps.asm
|
|
||||||
incsrc data/split_room.asm
|
|
||||||
incsrc data/doors_connections.asm
|
|
||||||
@@ -1,381 +0,0 @@
|
|||||||
CheckSwitchMap:
|
|
||||||
LDA.l DRMode
|
|
||||||
BEQ .not_fancy_door_map
|
|
||||||
|
|
||||||
; fancy door map
|
|
||||||
SEP #$20
|
|
||||||
LDA.b $F6
|
|
||||||
BIT.b #$30
|
|
||||||
BNE .change_dungeon
|
|
||||||
|
|
||||||
BIT.b #$80
|
|
||||||
BNE .select_new_room
|
|
||||||
|
|
||||||
LDA.b $F4
|
|
||||||
BIT.b #$80
|
|
||||||
BNE .select_new_room
|
|
||||||
|
|
||||||
BIT.b #$20
|
|
||||||
BNE .next_entrance
|
|
||||||
|
|
||||||
BIT.b #$40
|
|
||||||
BNE .current_room
|
|
||||||
|
|
||||||
AND.b #$0F
|
|
||||||
BEQ .doors_done
|
|
||||||
BIT.b #$08 : BEQ + : LDA.b #$00 : BRA .doors_move_cursor : +
|
|
||||||
BIT.b #$04 : BEQ + : LDA.b #$02 : BRA .doors_move_cursor : +
|
|
||||||
BIT.b #$02 : BEQ + : LDA.b #$01 : BRA .doors_move_cursor : +
|
|
||||||
LDA.b #$03
|
|
||||||
|
|
||||||
.doors_move_cursor
|
|
||||||
STA.b $00
|
|
||||||
JSL MoveDoorsMapCursor
|
|
||||||
BRA .doors_done
|
|
||||||
|
|
||||||
.select_new_room
|
|
||||||
JSL DoorsMapSelectCursor
|
|
||||||
BRA .doors_done
|
|
||||||
|
|
||||||
.next_entrance
|
|
||||||
JSL DoorsMapNextEntrance
|
|
||||||
BRA .doors_done
|
|
||||||
|
|
||||||
.change_dungeon
|
|
||||||
JSL DoorsMapChangeDungeon
|
|
||||||
BRA .doors_done
|
|
||||||
|
|
||||||
.current_room
|
|
||||||
LDA.l CachedDungeonID
|
|
||||||
CMP.w DungeonID
|
|
||||||
BNE .doors_done
|
|
||||||
JSL DoorsMapCurrentRoom
|
|
||||||
BRA .doors_done
|
|
||||||
|
|
||||||
.doors_done
|
|
||||||
REP #$20
|
|
||||||
LDA.w #$0002 ; ignore input! nothing to see here!
|
|
||||||
RTL
|
|
||||||
|
|
||||||
.not_fancy_door_map
|
|
||||||
SEP #$20
|
|
||||||
LDA.b $F6
|
|
||||||
AND.b #$30
|
|
||||||
BNE +
|
|
||||||
|
|
||||||
; what we wrote over
|
|
||||||
REP #$20
|
|
||||||
LDA.w DungeonMapFloorCountData, X
|
|
||||||
AND.w #$000F
|
|
||||||
CLC : ADC.b $00
|
|
||||||
RTL
|
|
||||||
|
|
||||||
+ PHA
|
|
||||||
TXA
|
|
||||||
ASL A
|
|
||||||
TAX
|
|
||||||
PLA
|
|
||||||
BIT.b #$20
|
|
||||||
BNE +
|
|
||||||
INX
|
|
||||||
+ LDA.l DungeonMapData.prev, X
|
|
||||||
STA.w DungeonID
|
|
||||||
|
|
||||||
LDA.b #$04
|
|
||||||
STA.w SubModuleInterface
|
|
||||||
REP #$20
|
|
||||||
LDA.w #$0000
|
|
||||||
RTL
|
|
||||||
|
|
||||||
DungeonMapSwitch_Submodule:
|
|
||||||
JSL $80893D
|
|
||||||
JSL $80833F
|
|
||||||
|
|
||||||
LDA.b #$09
|
|
||||||
STA.b $14
|
|
||||||
STA.w $0710
|
|
||||||
|
|
||||||
LDA.b #$01
|
|
||||||
STA.w SubModuleInterface
|
|
||||||
STA.w $020D
|
|
||||||
STZ.w $0213
|
|
||||||
STZ.w $021B
|
|
||||||
STZ.w $021C
|
|
||||||
STZ.b $06
|
|
||||||
STZ.b $07
|
|
||||||
|
|
||||||
LDA.w DungeonID
|
|
||||||
CMP.l CachedDungeonID
|
|
||||||
BEQ .current_dungeon
|
|
||||||
|
|
||||||
ASL A
|
|
||||||
TAX
|
|
||||||
LDA.l DungeonMapData.floor, X
|
|
||||||
STA.b CurrentFloor
|
|
||||||
BRA .continue
|
|
||||||
|
|
||||||
.current_dungeon
|
|
||||||
LDA.l CachedCurrentFloor
|
|
||||||
STA.b CurrentFloor
|
|
||||||
|
|
||||||
.continue
|
|
||||||
REP #$20
|
|
||||||
STZ.b $E0
|
|
||||||
STZ.b $E2
|
|
||||||
STZ.b $E4
|
|
||||||
STZ.b $E6
|
|
||||||
STZ.b $E8
|
|
||||||
STZ.b $EA
|
|
||||||
JML $98BCA1
|
|
||||||
|
|
||||||
SkipMapSprites:
|
|
||||||
STZ.b $00
|
|
||||||
|
|
||||||
LDA.b $02 : PHA
|
|
||||||
LDA.b $03 : PHA
|
|
||||||
LDA.b $04 : PHA
|
|
||||||
|
|
||||||
LDA.l DRMode
|
|
||||||
BNE +
|
|
||||||
LDA.w SubModuleInterface
|
|
||||||
CMP.b #$04
|
|
||||||
BEQ +
|
|
||||||
JSL DrawEntrances
|
|
||||||
+
|
|
||||||
|
|
||||||
PLA : STA.b $04
|
|
||||||
PLA : STA.b $03
|
|
||||||
PLA : STA.b $02
|
|
||||||
|
|
||||||
STZ.b $0E
|
|
||||||
STZ.b $0F
|
|
||||||
|
|
||||||
LDA.w SubModuleInterface
|
|
||||||
CMP.b #$04
|
|
||||||
BNE +
|
|
||||||
JML $8AEAFC
|
|
||||||
+
|
|
||||||
|
|
||||||
LDA.l DRMode
|
|
||||||
BEQ +
|
|
||||||
JSL DrawDoorsMapSprites
|
|
||||||
JML $8AEAFC
|
|
||||||
+
|
|
||||||
|
|
||||||
LDA.l CachedDungeonID
|
|
||||||
CMP.w DungeonID
|
|
||||||
BEQ +
|
|
||||||
JML $8AEAF3
|
|
||||||
+ JML $8AEADE
|
|
||||||
|
|
||||||
CacheCurrentDungeon:
|
|
||||||
STA.l $7EC206
|
|
||||||
SEP #$20
|
|
||||||
LDA.w DungeonID
|
|
||||||
STA.l CachedDungeonID
|
|
||||||
LDA.b CurrentFloor
|
|
||||||
STA.l CachedCurrentFloor
|
|
||||||
REP #$20
|
|
||||||
RTL
|
|
||||||
|
|
||||||
RestoreCurrentDungeon:
|
|
||||||
LDA.b #$F3
|
|
||||||
STA.w $012C ; what we wrote over
|
|
||||||
LDA.l CachedDungeonID
|
|
||||||
STA.w DungeonID
|
|
||||||
LDA.l CachedCurrentFloor
|
|
||||||
STA.b CurrentFloor
|
|
||||||
RTL
|
|
||||||
|
|
||||||
RestoreDungeonMapFloorIndex:
|
|
||||||
STZ.w $020F ; first part we wrote over
|
|
||||||
|
|
||||||
LDA.w $021B
|
|
||||||
STA.b $07
|
|
||||||
STZ.b $06
|
|
||||||
|
|
||||||
LDA.b $0A ; the rest of what we wrote over
|
|
||||||
AND.b #$08
|
|
||||||
RTL
|
|
||||||
|
|
||||||
DrawDungeonLabel:
|
|
||||||
LDY.b #$00
|
|
||||||
LDA.w DungeonID
|
|
||||||
ASL A
|
|
||||||
TAX
|
|
||||||
LDA.b NMISTRIPES
|
|
||||||
BEQ +
|
|
||||||
LDY.b #$20
|
|
||||||
+
|
|
||||||
|
|
||||||
; Dungeon Label
|
|
||||||
REP #$20
|
|
||||||
LDA.w #$E660
|
|
||||||
STA.w GFXStripes+$02, Y
|
|
||||||
LDA.w #$0300
|
|
||||||
STA.w GFXStripes+$04, Y
|
|
||||||
|
|
||||||
LDA.l DungeonLabels+0, X
|
|
||||||
STA.w GFXStripes+$06, Y
|
|
||||||
LDA.l DungeonLabels+2, X
|
|
||||||
STA.w GFXStripes+$08, Y
|
|
||||||
|
|
||||||
TYA
|
|
||||||
CLC : ADC.w #$0008
|
|
||||||
TAY
|
|
||||||
|
|
||||||
; L/R switch indicators
|
|
||||||
LDA.w #$E310
|
|
||||||
STA.w GFXStripes+$02, Y
|
|
||||||
LDA.w #$E910
|
|
||||||
STA.w GFXStripes+$0A, Y
|
|
||||||
LDA.w #$E318
|
|
||||||
STA.w GFXStripes+$12, Y
|
|
||||||
LDA.w #$E918
|
|
||||||
STA.w GFXStripes+$1A, Y
|
|
||||||
|
|
||||||
LDA.w #$0300
|
|
||||||
STA.w GFXStripes+$04, Y
|
|
||||||
STA.w GFXStripes+$0C, Y
|
|
||||||
STA.w GFXStripes+$14, Y
|
|
||||||
STA.w GFXStripes+$1C, Y
|
|
||||||
|
|
||||||
LDA.w #$49AF
|
|
||||||
STA.w GFXStripes+$06, Y
|
|
||||||
STA.w GFXStripes+$16, Y
|
|
||||||
LDA.w #$099E
|
|
||||||
STA.w GFXStripes+$08, Y
|
|
||||||
STA.w GFXStripes+$18, Y
|
|
||||||
|
|
||||||
LDA.w #$099F
|
|
||||||
STA.w GFXStripes+$0E, Y
|
|
||||||
STA.w GFXStripes+$1E, Y
|
|
||||||
LDA.w #$09AF
|
|
||||||
STA.w GFXStripes+$10, Y
|
|
||||||
STA.w GFXStripes+$20, Y
|
|
||||||
|
|
||||||
TYA
|
|
||||||
CLC : ADC.w #$0020
|
|
||||||
TAY
|
|
||||||
|
|
||||||
LDA.l DRMode
|
|
||||||
BNE .doors
|
|
||||||
JMP .skip_doors
|
|
||||||
|
|
||||||
.doors
|
|
||||||
; Select for Next Entrance indicator
|
|
||||||
LDA.w #$E311
|
|
||||||
STA.w GFXStripes+$02, Y
|
|
||||||
LDA.w #$E319
|
|
||||||
STA.w GFXStripes+$16, Y
|
|
||||||
|
|
||||||
LDA.w #$0F00
|
|
||||||
STA.w GFXStripes+$04, Y
|
|
||||||
STA.w GFXStripes+$18, Y
|
|
||||||
|
|
||||||
LDA.w #$09B8
|
|
||||||
LDX.b #$07
|
|
||||||
-
|
|
||||||
STA.w GFXStripes+$06, Y
|
|
||||||
STA.w GFXStripes+$1A, Y
|
|
||||||
INC A
|
|
||||||
INY : INY
|
|
||||||
DEX
|
|
||||||
BPL -
|
|
||||||
|
|
||||||
TYA
|
|
||||||
CLC : ADC.w #$0018
|
|
||||||
TAY
|
|
||||||
|
|
||||||
LDA.l CachedDungeonID
|
|
||||||
AND.w #$00FF
|
|
||||||
CMP.w DungeonID
|
|
||||||
BNE .skip_doors
|
|
||||||
|
|
||||||
; Y for Current Location indicator
|
|
||||||
LDA.w #$A411
|
|
||||||
STA.w GFXStripes+$02, Y
|
|
||||||
LDA.w #$A419
|
|
||||||
STA.w GFXStripes+$12, Y
|
|
||||||
|
|
||||||
LDA.w #$0B00
|
|
||||||
STA.w GFXStripes+$04, Y
|
|
||||||
STA.w GFXStripes+$14, Y
|
|
||||||
|
|
||||||
LDA.w #$09A9
|
|
||||||
LDX.b #$05
|
|
||||||
-
|
|
||||||
STA.w GFXStripes+$06, Y
|
|
||||||
STA.w GFXStripes+$16, Y
|
|
||||||
INC A
|
|
||||||
INY : INY
|
|
||||||
DEX
|
|
||||||
BPL -
|
|
||||||
|
|
||||||
TYA
|
|
||||||
CLC : ADC.w #$0014
|
|
||||||
TAY
|
|
||||||
|
|
||||||
.skip_doors
|
|
||||||
SEP #$20
|
|
||||||
LDA.b #$FF
|
|
||||||
STA.w GFXStripes+$02, Y
|
|
||||||
LDA.b #$01
|
|
||||||
STA.b NMISTRIPES
|
|
||||||
|
|
||||||
INC.w $020D ; what we wrote over
|
|
||||||
RTL
|
|
||||||
|
|
||||||
StartCurrentRoomSearch:
|
|
||||||
LDA.w DungeonMapFloorCountData, X
|
|
||||||
LSR A : LSR A : LSR A : LSR A
|
|
||||||
STA.b $00
|
|
||||||
LDA.w DungeonMapFloorCountData, X
|
|
||||||
AND.b #$0F
|
|
||||||
CLC : ADC.b $00
|
|
||||||
ASL A
|
|
||||||
TAY
|
|
||||||
RTL
|
|
||||||
|
|
||||||
FindCurrentRoom:
|
|
||||||
LDA.w DungeonMapFloorToDataOffset, Y
|
|
||||||
STA.b $0C
|
|
||||||
LDY.w #$0000
|
|
||||||
SEP #$20
|
|
||||||
|
|
||||||
.next_room_check
|
|
||||||
CPY.b $0C
|
|
||||||
BCS .not_found
|
|
||||||
|
|
||||||
LDA.b ($04), Y
|
|
||||||
INY
|
|
||||||
CMP.b $0E
|
|
||||||
BEQ .found
|
|
||||||
|
|
||||||
LDA.b $00
|
|
||||||
CMP.b #$40
|
|
||||||
BCS .next_row
|
|
||||||
|
|
||||||
CLC : ADC.b #$10
|
|
||||||
STA.b $00
|
|
||||||
BRA .next_room_check
|
|
||||||
|
|
||||||
.next_row
|
|
||||||
STZ.b $00
|
|
||||||
|
|
||||||
LDA.b $02
|
|
||||||
CMP.b #$40
|
|
||||||
BCS .next_floor
|
|
||||||
CLC : ADC.b #$10
|
|
||||||
STA.b $02
|
|
||||||
BRA .next_room_check
|
|
||||||
|
|
||||||
.next_floor
|
|
||||||
STZ.b $02
|
|
||||||
BRA .next_room_check
|
|
||||||
|
|
||||||
.found
|
|
||||||
JML $8AE891
|
|
||||||
|
|
||||||
.not_found
|
|
||||||
JML $8AE8CD
|
|
||||||
@@ -1,67 +0,0 @@
|
|||||||
;--------------------------------------------------------------------------------
|
|
||||||
SetItemRiseTimer:
|
|
||||||
LDA.w ItemReceiptMethod : CMP.b #$01 : BNE .not_from_chest
|
|
||||||
LDA.b #$38 : STA.w AncillaTimer, X
|
|
||||||
RTL
|
|
||||||
|
|
||||||
.not_from_chest
|
|
||||||
JSL ItemIsJunk
|
|
||||||
BEQ .default
|
|
||||||
|
|
||||||
.junk
|
|
||||||
LDA.l JunkItemTimer : AND.b #$3F : STA.w AncillaTimer, X
|
|
||||||
RTL
|
|
||||||
|
|
||||||
.default
|
|
||||||
TYA : STA.w AncillaTimer, X ; What we wrote over
|
|
||||||
RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
ItemIsJunk:
|
|
||||||
PHX
|
|
||||||
LDA.l JunkItemTimer : BIT.b #$3F : BEQ .not_junk
|
|
||||||
BIT.b #$80 : BNE .check
|
|
||||||
LDA.l !MULTIWORLD_ITEM_PLAYER_ID : BNE .check
|
|
||||||
LDA.l !MULTIWORLD_RECEIVING_ITEM : BNE .check
|
|
||||||
BRA .not_junk
|
|
||||||
|
|
||||||
.check
|
|
||||||
LDA.w AncillaGet, X
|
|
||||||
TAX
|
|
||||||
LDA.l JunkTable, X
|
|
||||||
PLX
|
|
||||||
CMP.b #$00
|
|
||||||
RTL
|
|
||||||
|
|
||||||
.not_junk
|
|
||||||
PLX
|
|
||||||
LDA.b #$00
|
|
||||||
RTL
|
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
; A = item id being collected
|
|
||||||
ItemGetAlternateSFX:
|
|
||||||
PEA.w $C567 ; SNES to RTS to in bank 08
|
|
||||||
LDA.w AncillaGet, X : CMP.b #$4A : BNE +
|
|
||||||
; collecting pre-activated flute
|
|
||||||
LDA.b #$13 : JML Ancilla_SFX2_Near
|
|
||||||
+
|
|
||||||
JSL ItemIsJunk : BEQ .normal
|
|
||||||
LDA.b #$3B : JML Ancilla_SFX3_Near
|
|
||||||
.normal
|
|
||||||
LDA.b #$0F : JML Ancilla_SFX3_Near
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
; A = item id being collected
|
|
||||||
ItemGetOverworldAlternateSFX:
|
|
||||||
CPY.b #$4A : BNE +
|
|
||||||
; pre-activated flute
|
|
||||||
JSL Sound_SetSfxPanWithPlayerCoords : ORA.b #$13 : STA.w SFX2
|
|
||||||
RTL
|
|
||||||
+
|
|
||||||
JSL ItemIsJunk : BEQ .normal
|
|
||||||
.junk
|
|
||||||
JSL Sound_SetSfxPanWithPlayerCoords : ORA.b #$3B : STA.w SFX3
|
|
||||||
RTL
|
|
||||||
.normal
|
|
||||||
JSL Sound_SetSfxPanWithPlayerCoords : ORA.b #$0F : STA.w SFX3
|
|
||||||
RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
29
gk/gloom.asm
29
gk/gloom.asm
@@ -1,29 +0,0 @@
|
|||||||
AdjustDefaultGraphics:
|
|
||||||
JSL $80E310
|
|
||||||
|
|
||||||
LDA.l ChallengeModes : AND.b #$03 : CMP.b #$02 : BEQ .gloom
|
|
||||||
RTL
|
|
||||||
|
|
||||||
.gloom
|
|
||||||
LDA.b #$80
|
|
||||||
STA.w $2115
|
|
||||||
|
|
||||||
REP #$20
|
|
||||||
LDA.w #$7500
|
|
||||||
STA.w $2116
|
|
||||||
|
|
||||||
LDY.b #SkullGfx_end-SkullGfx
|
|
||||||
LDX.b #$00
|
|
||||||
|
|
||||||
- LDA.l SkullGfx, X
|
|
||||||
STA.w $2118
|
|
||||||
INX #2
|
|
||||||
DEY #2
|
|
||||||
BNE -
|
|
||||||
|
|
||||||
SEP #$20
|
|
||||||
RTL
|
|
||||||
|
|
||||||
SkullGfx:
|
|
||||||
incbin "data/skull.bin"
|
|
||||||
.end
|
|
||||||
213
gk/map_bg3.asm
213
gk/map_bg3.asm
@@ -1,213 +0,0 @@
|
|||||||
LoadStripes:
|
|
||||||
CPY.b #$09
|
|
||||||
BEQ .dungeon_map
|
|
||||||
.not_dungeon_map
|
|
||||||
LDA.w $80937A, Y
|
|
||||||
STA.b $00
|
|
||||||
LDA.w $809383,Y
|
|
||||||
STA.b $01
|
|
||||||
LDA.w $80938C,Y
|
|
||||||
STA.b $02
|
|
||||||
RTL
|
|
||||||
|
|
||||||
.dungeon_map
|
|
||||||
LDA.l DRMode
|
|
||||||
BNE .6x6
|
|
||||||
|
|
||||||
.5x5
|
|
||||||
LDA.b #BG3DungeonMap5x5Stripes>>0
|
|
||||||
STA.b $00
|
|
||||||
LDA.b #BG3DungeonMap5x5Stripes>>8
|
|
||||||
STA.b $01
|
|
||||||
LDA.b #BG3DungeonMap5x5Stripes>>16
|
|
||||||
STA.b $02
|
|
||||||
RTL
|
|
||||||
|
|
||||||
.6x6
|
|
||||||
LDA.b #BG3DungeonMap6x6Stripes>>0
|
|
||||||
STA.b $00
|
|
||||||
LDA.b #BG3DungeonMap6x6Stripes>>8
|
|
||||||
STA.b $01
|
|
||||||
LDA.b #BG3DungeonMap6x6Stripes>>16
|
|
||||||
STA.b $02
|
|
||||||
RTL
|
|
||||||
|
|
||||||
LoadLastHUDPalette:
|
|
||||||
; what we wrote over
|
|
||||||
JSL $9BEE52
|
|
||||||
|
|
||||||
REP #$20
|
|
||||||
LDA.l MapHUDPalette
|
|
||||||
STA.l PaletteBuffer+$3A
|
|
||||||
LDA.l MapHUDPalette+2
|
|
||||||
STA.l PaletteBuffer+$3C
|
|
||||||
LDA.l MapHUDPalette+4
|
|
||||||
STA.l PaletteBuffer+$3E
|
|
||||||
SEP #$20
|
|
||||||
RTL
|
|
||||||
|
|
||||||
BG3DungeonMap5x5Stripes:
|
|
||||||
; vanilla stuff
|
|
||||||
dw $4260, $0100, $2100
|
|
||||||
dw $4360, $0E40, $2101
|
|
||||||
dw $4B60, $0100, $6100
|
|
||||||
dw $6260, $2EC0, $2110
|
|
||||||
dw $6B60, $2EC0, $6110
|
|
||||||
dw $6263, $0100, $A100
|
|
||||||
dw $6363, $0E40, $A101
|
|
||||||
dw $6B63, $0100, $E100
|
|
||||||
dw $8460, $0B00, $2102, $2103, $2104, $2105, $2106, $2107
|
|
||||||
dw $A460, $0B00, $2112, $2113, $2114, $2115, $2116, $2117
|
|
||||||
dw $5D60, $0100, $6100
|
|
||||||
dw $7D60, $2EC0, $6110
|
|
||||||
dw $7D63, $0100, $E100
|
|
||||||
dw $0060, $7E40, $2111
|
|
||||||
dw $8063, $3E41, $2111
|
|
||||||
dw $0060, $3EC0, $2111
|
|
||||||
dw $0160, $3EC0, $2111
|
|
||||||
dw $0C60, $3EC0, $2111
|
|
||||||
dw $0D60, $3EC0, $2111
|
|
||||||
dw $1E60, $3EC0, $2111
|
|
||||||
dw $1F60, $3EC0, $2111
|
|
||||||
|
|
||||||
; left edge of map border, from vanilla
|
|
||||||
dw $4E60, $0100, $2100
|
|
||||||
dw $4F60, $1A40, $2101
|
|
||||||
dw $6E60, $2EC0, $2110
|
|
||||||
dw $6E63, $0100, $A100
|
|
||||||
dw $6F63, $1A40, $A101
|
|
||||||
|
|
||||||
; horizontal borders
|
|
||||||
dw $7260, $1240, $1D11
|
|
||||||
dw $D261, $1240, $1D11
|
|
||||||
dw $F261, $1240, $1D11
|
|
||||||
dw $5263, $1240, $1D11
|
|
||||||
|
|
||||||
; vertical borders
|
|
||||||
dw $7160, $2EC0, $1D11
|
|
||||||
dw $7C60, $2EC0, $1D11
|
|
||||||
|
|
||||||
macro TopOfSquares(start)
|
|
||||||
; silly Big Endian
|
|
||||||
db <start>>>8, <start>, $00, $13
|
|
||||||
dw $5D4C, $1D4C, $5D4C, $1D4C, $5D4C, $1D4C, $5D4C, $1D4C, $5D4C, $1D4C
|
|
||||||
endmacro
|
|
||||||
|
|
||||||
macro BottomOfSquares(start)
|
|
||||||
; silly Big Endian
|
|
||||||
db <start>>>8, <start>, $00, $13
|
|
||||||
dw $DD4C, $9D4C, $DD4C, $9D4C, $DD4C, $9D4C, $DD4C, $9D4C, $DD4C, $9D4C
|
|
||||||
endmacro
|
|
||||||
|
|
||||||
macro FullRow(start)
|
|
||||||
%TopOfSquares(<start>)
|
|
||||||
%BottomOfSquares(<start>+$20)
|
|
||||||
endmacro
|
|
||||||
|
|
||||||
; top grid
|
|
||||||
%FullRow($6092)
|
|
||||||
%FullRow($60D2)
|
|
||||||
%FullRow($6112)
|
|
||||||
%FullRow($6152)
|
|
||||||
%FullRow($6192)
|
|
||||||
|
|
||||||
%FullRow($6212)
|
|
||||||
%FullRow($6252)
|
|
||||||
%FullRow($6292)
|
|
||||||
%FullRow($62D2)
|
|
||||||
%FullRow($6312)
|
|
||||||
|
|
||||||
db $FF
|
|
||||||
|
|
||||||
BG3DungeonMap6x6Stripes:
|
|
||||||
; vanilla
|
|
||||||
dw $4260, $0100, $2100
|
|
||||||
dw $4360, $0E40, $2101
|
|
||||||
dw $4B60, $0100, $6100
|
|
||||||
dw $8460, $0B00, $2102, $2103, $2104, $2105, $2106, $2107
|
|
||||||
dw $A460, $0B00, $2112, $2113, $2114, $2115, $2116, $2117
|
|
||||||
dw $0060, $7E40, $2111
|
|
||||||
dw $8063, $3E41, $2111
|
|
||||||
dw $0060, $3EC0, $2111
|
|
||||||
dw $0160, $3EC0, $2111
|
|
||||||
dw $0C60, $3EC0, $2111
|
|
||||||
dw $0D60, $3EC0, $2111
|
|
||||||
dw $1E60, $3EC0, $2111
|
|
||||||
dw $1F60, $3EC0, $2111
|
|
||||||
|
|
||||||
; left side border
|
|
||||||
dw $6260, $1AC0, $2110
|
|
||||||
dw $6B60, $1AC0, $6110
|
|
||||||
dw $2262, $0100, $A100
|
|
||||||
dw $2362, $0E40, $A101
|
|
||||||
dw $2B62, $0100, $E100
|
|
||||||
|
|
||||||
; right side top area border
|
|
||||||
dw $4E60, $0100, $2100
|
|
||||||
dw $4F60, $1A40, $2101
|
|
||||||
dw $5D60, $0100, $6100
|
|
||||||
dw $6E60, $1AC0, $2110
|
|
||||||
dw $7D60, $1AC0, $6110
|
|
||||||
dw $2E62, $0100, $A100
|
|
||||||
dw $2F62, $1A40, $A101
|
|
||||||
dw $3D62, $0100, $E100
|
|
||||||
|
|
||||||
; right side bottom area border
|
|
||||||
dw $8E62, $0100, $2100
|
|
||||||
dw $8F62, $1A40, $2101
|
|
||||||
dw $9D62, $0100, $6100
|
|
||||||
dw $AE62, $06C0, $2110
|
|
||||||
dw $BD62, $06C0, $6110
|
|
||||||
dw $2E63, $0100, $A100
|
|
||||||
dw $2F63, $1A40, $A101
|
|
||||||
dw $3D63, $0100, $E100
|
|
||||||
|
|
||||||
; blank below left side
|
|
||||||
dw $4262, $4440, $2111
|
|
||||||
dw $6262, $4440, $2111
|
|
||||||
|
|
||||||
dw $8262, $1240, $2111
|
|
||||||
dw $A262, $1240, $2111
|
|
||||||
dw $C262, $1240, $2111
|
|
||||||
dw $E262, $1240, $2111
|
|
||||||
dw $0263, $1240, $2111
|
|
||||||
dw $2263, $1240, $2111
|
|
||||||
|
|
||||||
dw $4263, $4440, $2111
|
|
||||||
dw $6263, $4440, $2111
|
|
||||||
|
|
||||||
; map area inside top area
|
|
||||||
dw $6F60, $1A40, $1D11
|
|
||||||
dw $8F60, $1A40, $1D11
|
|
||||||
dw $AF60, $1A40, $1D11
|
|
||||||
dw $CF60, $1A40, $1D11
|
|
||||||
dw $EF60, $1A40, $1D11
|
|
||||||
dw $0F61, $1A40, $1D11
|
|
||||||
dw $2F61, $1A40, $1D11
|
|
||||||
dw $4F61, $1A40, $1D11
|
|
||||||
dw $6F61, $1A40, $1D11
|
|
||||||
dw $8F61, $1A40, $1D11
|
|
||||||
dw $AF61, $1A40, $1D11
|
|
||||||
dw $CF61, $1A40, $1D11
|
|
||||||
dw $EF61, $1A40, $1D11
|
|
||||||
dw $0F62, $1A40, $1D11
|
|
||||||
|
|
||||||
; center square
|
|
||||||
dw $3561, $0300
|
|
||||||
dw $5D4C, $1D4C
|
|
||||||
|
|
||||||
dw $5561, $0300
|
|
||||||
dw $DD4C, $9D4C
|
|
||||||
|
|
||||||
; map area inside bottom area
|
|
||||||
dw $AF62, $1A40, $1D11
|
|
||||||
|
|
||||||
dw $CF62, $1B00
|
|
||||||
dw $1D11, $5D4C, $1D4C, $1D11, $5D4C, $1D4C, $1D11, $5D4C, $1D4C, $1D11, $1D11, $5D4C, $1D4C, $1D11
|
|
||||||
|
|
||||||
dw $EF62, $1B00
|
|
||||||
dw $1D11, $DD4C, $9D4C, $1D11, $DD4C, $9D4C, $1D11, $DD4C, $9D4C, $1D11, $1D11, $DD4C, $9D4C, $1D11
|
|
||||||
|
|
||||||
dw $0F63, $1A40, $1D11
|
|
||||||
|
|
||||||
db $FF
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
;================================================================================
|
|
||||||
; Mimic Direction Check
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
; Output: 0 for darkness, 1 for lamp cone
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
MimicDirection:
|
|
||||||
LDA.b $F0
|
|
||||||
AND.b #$0F
|
|
||||||
BNE .done
|
|
||||||
LDA.l MimicDash
|
|
||||||
BEQ .done
|
|
||||||
LDA.w $0372
|
|
||||||
BEQ .done
|
|
||||||
LDA.w $0374
|
|
||||||
BNE .make_zero
|
|
||||||
LDA.b $67
|
|
||||||
.done
|
|
||||||
RTL
|
|
||||||
.make_zero
|
|
||||||
LDA.b #$00
|
|
||||||
RTL
|
|
||||||
|
|
||||||
@@ -1,152 +0,0 @@
|
|||||||
SelectFirstFluteSpot:
|
|
||||||
LDA.l FluteBitfield
|
|
||||||
CMP.b #$FF
|
|
||||||
BNE +
|
|
||||||
RTL
|
|
||||||
+ LDA.b #$07
|
|
||||||
STA.w FluteSelection
|
|
||||||
.try_next
|
|
||||||
LDA.w FluteSelection
|
|
||||||
INC A
|
|
||||||
AND.b #$07
|
|
||||||
STA.w FluteSelection
|
|
||||||
TAX
|
|
||||||
|
|
||||||
LDA.l FluteBitfield
|
|
||||||
AND.l FluteMenuNumbers_bits, X
|
|
||||||
BNE .try_next
|
|
||||||
RTL
|
|
||||||
|
|
||||||
SelectFluteNext:
|
|
||||||
LDA.l FluteBitfield
|
|
||||||
CMP.b #$FF
|
|
||||||
BEQ InvalidBeep
|
|
||||||
|
|
||||||
.try_next
|
|
||||||
LDA.w FluteSelection
|
|
||||||
INC A
|
|
||||||
AND.b #$07
|
|
||||||
STA.w FluteSelection
|
|
||||||
TAX
|
|
||||||
|
|
||||||
LDA.l FluteBitfield
|
|
||||||
AND.l FluteMenuNumbers_bits, X
|
|
||||||
BNE .try_next
|
|
||||||
|
|
||||||
LDA.b #$20
|
|
||||||
STA.w $012F
|
|
||||||
RTL
|
|
||||||
|
|
||||||
SelectFlutePrev:
|
|
||||||
LDA.l FluteBitfield
|
|
||||||
CMP.b #$FF
|
|
||||||
BEQ InvalidBeep
|
|
||||||
|
|
||||||
.try_next
|
|
||||||
LDA.w FluteSelection
|
|
||||||
DEC A
|
|
||||||
AND.b #$07
|
|
||||||
STA.w FluteSelection
|
|
||||||
TAX
|
|
||||||
|
|
||||||
LDA.l FluteBitfield
|
|
||||||
AND.l FluteMenuNumbers_bits, X
|
|
||||||
BNE .try_next
|
|
||||||
|
|
||||||
LDA.b #$20
|
|
||||||
STA.w $012F
|
|
||||||
RTL
|
|
||||||
|
|
||||||
InvalidBeep:
|
|
||||||
LDA.b #$3C
|
|
||||||
STA.w $012E
|
|
||||||
RTL
|
|
||||||
|
|
||||||
SetFluteSpotPalette:
|
|
||||||
XBA
|
|
||||||
LDA.l FluteBitfield
|
|
||||||
AND.l FluteMenuNumbers_bits, X
|
|
||||||
BNE .disabled
|
|
||||||
.enabled
|
|
||||||
XBA
|
|
||||||
STA.b $0C
|
|
||||||
BRA .done
|
|
||||||
.disabled
|
|
||||||
LDA.b #$30
|
|
||||||
STA.b $0C
|
|
||||||
.done
|
|
||||||
LDA.b #$00
|
|
||||||
STA.b $0B
|
|
||||||
RTL
|
|
||||||
|
|
||||||
MaybeMarkFluteSpotVisited:
|
|
||||||
; don't ever allow the portal in desert/mire to be marked visited
|
|
||||||
CMP.b #$30 : BEQ .done
|
|
||||||
CMP.b #$70 : BEQ .done
|
|
||||||
|
|
||||||
LDX.b #$0E
|
|
||||||
.next
|
|
||||||
CMP.l $02E849, X
|
|
||||||
BEQ .mark
|
|
||||||
DEX : DEX
|
|
||||||
BPL .next
|
|
||||||
BRA .done
|
|
||||||
|
|
||||||
.mark
|
|
||||||
TXA
|
|
||||||
LSR A
|
|
||||||
TAX
|
|
||||||
LDA.l FluteMenuNumbers_bits, X
|
|
||||||
EOR.b #$FF
|
|
||||||
AND.l FluteBitfield
|
|
||||||
STA.l FluteBitfield
|
|
||||||
|
|
||||||
.done
|
|
||||||
RTL
|
|
||||||
|
|
||||||
CheckEnterOverworld:
|
|
||||||
LDA.l $7EC213
|
|
||||||
STA.b $8A ; what we wrote over
|
|
||||||
SEP #$20
|
|
||||||
JSL MaybeMarkFluteSpotVisited
|
|
||||||
REP #$20
|
|
||||||
RTL
|
|
||||||
|
|
||||||
CheckTransitionOverworld:
|
|
||||||
STA.b $8A
|
|
||||||
STA.w $040A ; what we wrote over
|
|
||||||
JSL MaybeMarkFluteSpotVisited
|
|
||||||
LDA.b $8A
|
|
||||||
RTL
|
|
||||||
|
|
||||||
CheckFlute:
|
|
||||||
LDA.l FluteBitfield
|
|
||||||
AND.w #$00FF
|
|
||||||
BNE .pseudo
|
|
||||||
.real
|
|
||||||
LDA.w #$0003
|
|
||||||
BRA .done
|
|
||||||
.pseudo
|
|
||||||
LDA.w #$0002
|
|
||||||
.done
|
|
||||||
RTS
|
|
||||||
|
|
||||||
DrawFluteIcon:
|
|
||||||
AND.w #$00FF
|
|
||||||
CMP.w #$0002
|
|
||||||
BCC +
|
|
||||||
JSR CheckFlute
|
|
||||||
+
|
|
||||||
STA.b $02
|
|
||||||
RTL
|
|
||||||
|
|
||||||
CheckFluteInHUD:
|
|
||||||
LDA.l EquipmentWRAM-1, X
|
|
||||||
AND.w #$00FF ; what we wrote over
|
|
||||||
CPX.w #$000D
|
|
||||||
BNE +
|
|
||||||
CMP.w #$0002
|
|
||||||
BCC +
|
|
||||||
JSR CheckFlute
|
|
||||||
+
|
|
||||||
RTL
|
|
||||||
208
gk/settings.asm
208
gk/settings.asm
@@ -1,208 +0,0 @@
|
|||||||
org $B9F000
|
|
||||||
SupertileRoomShapes:
|
|
||||||
incsrc data/supertile_shapes.asm
|
|
||||||
warnpc $B9F800
|
|
||||||
padbyte $FF
|
|
||||||
pad $B9F800
|
|
||||||
|
|
||||||
org $B9F800
|
|
||||||
DungeonMapData:
|
|
||||||
db $02, $04, $00, $00 ; Sewers
|
|
||||||
db $1A, $00, $00, $00 ; Hyrule Castle
|
|
||||||
db $00, $06, $00, $00 ; Eastern Palace
|
|
||||||
db $04, $14, $00, $00 ; Desert Palace
|
|
||||||
db $14, $0C, $01, $00 ; Castle Tower
|
|
||||||
db $0C, $10, $00, $00 ; Swamp Palace
|
|
||||||
db $08, $0A, $00, $00 ; Palace of Darkness
|
|
||||||
db $12, $18, $00, $00 ; Misery Mire
|
|
||||||
db $0A, $16, $FF, $00 ; Skull Woods
|
|
||||||
db $16, $0E, $00, $00 ; Ice Palace
|
|
||||||
db $06, $08, $01, $00 ; Tower of Hera
|
|
||||||
db $10, $12, $00, $00 ; Thieves Town
|
|
||||||
db $0E, $1A, $00, $00 ; Turtle Rock
|
|
||||||
db $18, $02, $01, $00 ; Ganon's Tower
|
|
||||||
db $1A, $02, $00, $00 ; Extra
|
|
||||||
db $1A, $02, $00, $00 ; Extra
|
|
||||||
|
|
||||||
struct DungeonMapData DungeonMapData
|
|
||||||
.prev: skip 1
|
|
||||||
.next: skip 1
|
|
||||||
.floor: skip 1
|
|
||||||
.unused: skip 1
|
|
||||||
endstruct
|
|
||||||
|
|
||||||
warnpc $B9F840
|
|
||||||
org $B9F840
|
|
||||||
|
|
||||||
DoorConnectionPointers:
|
|
||||||
skip $20
|
|
||||||
|
|
||||||
warnpc $B9F860
|
|
||||||
org $B9F860
|
|
||||||
|
|
||||||
CustomMapPointers:
|
|
||||||
skip $20
|
|
||||||
|
|
||||||
warnpc $B9F880
|
|
||||||
org $B9F880
|
|
||||||
|
|
||||||
LootTypeIcons:
|
|
||||||
dw $0B00, $0B00, $0B00, $0B00 ; 00 - nothing
|
|
||||||
dw $2DCB, $6DCB, $ADCB, $EDCB ; 01 - unknown - dot
|
|
||||||
dw $29EB, $69EB, $29FB, $69FB ; 02 - junk - pot
|
|
||||||
dw $29CA, $69CA, $29DA, $29DB ; 03 - small key
|
|
||||||
dw $29E9, $69E9, $29F9, $69F9 ; 04 - triforce piece
|
|
||||||
dw $29DD, $69DD, $A9DD, $E9DD ; 05 - safety - plus
|
|
||||||
dw $29EC, $69EC, $29FC, $69FC ; 06 - less important item - small chest
|
|
||||||
dw $29CE, $29CF, $29DE, $29DF ; 07 - map
|
|
||||||
dw $29E8, $69E8, $29F8, $69F8 ; 08 - compass
|
|
||||||
dw $29CA, $69CA, $29DA, $29DB ; 09 - small key
|
|
||||||
dw $29C8, $69C8, $29D8, $29D9 ; 0A - big key
|
|
||||||
dw $29ED, $69ED, $29FD, $69FD ; 0B - important inventory item - big chest
|
|
||||||
dw $29CC, $29CD, $29DC, $69DC ; 0C - pendant
|
|
||||||
dw $2DC9, $69C9, $A9C9, $EDC9 ; 0D - crystal
|
|
||||||
dw $29E9, $69E9, $29F9, $69F9 ; 0E - triforce piece
|
|
||||||
dw $29EA, $69EA, $29FA, $69FA ; 0F - triforce
|
|
||||||
|
|
||||||
warnpc $B9F900
|
|
||||||
org $B9F900
|
|
||||||
LootTypeMapping:
|
|
||||||
incsrc data/item_mapping.asm
|
|
||||||
|
|
||||||
warnpc $B9FA00
|
|
||||||
org $B9FA00
|
|
||||||
; Room ID mappings to bit to check for presence and address of item drop
|
|
||||||
MiscLocations:
|
|
||||||
dw $00C8 : db $04 : dl HeartContainer_ArmosKnights
|
|
||||||
dw $0033 : db $04 : dl HeartContainer_Lanmolas
|
|
||||||
dw $0007 : db $04 : dl HeartContainer_Moldorm
|
|
||||||
|
|
||||||
dw $005A : db $04 : dl HeartContainer_HelmasaurKing
|
|
||||||
dw $0006 : db $04 : dl HeartContainer_Arrghus
|
|
||||||
dw $0029 : db $04 : dl HeartContainer_Mothula
|
|
||||||
dw $00AC : db $04 : dl HeartContainer_Blind
|
|
||||||
dw $00DE : db $04 : dl HeartContainer_Kholdstare
|
|
||||||
dw $0090 : db $04 : dl HeartContainer_Vitreous
|
|
||||||
dw $00A4 : db $04 : dl HeartContainer_Trinexx
|
|
||||||
|
|
||||||
dw $0073 : db $05 : dl BonkKey_Desert ; torch
|
|
||||||
dw $008C : db $05 : dl BonkKey_GTower ; torch
|
|
||||||
dw $0087 : db $05 : dl StandingKey_Hera
|
|
||||||
|
|
||||||
dw $FFFF : db $FF : dl $FFFFFF ; Placeholders
|
|
||||||
dw $FFFF : db $FF : dl $FFFFFF
|
|
||||||
dw $FFFF : db $FF : dl $FFFFFF ; Aga 1? ($0020)
|
|
||||||
dw $FFFF : db $FF : dl $FFFFFF ; Ice Armos? ($001C)
|
|
||||||
dw $FFFF : db $FF : dl $FFFFFF ; Lanmolas 2? ($0033)
|
|
||||||
dw $FFFF : db $FF : dl $FFFFFF ; Moldorm 2? ($004D)
|
|
||||||
dw $FFFF : db $FF : dl $FFFFFF ; Aga 2? ($000D)
|
|
||||||
dw $FFFF
|
|
||||||
|
|
||||||
warnpc $B9FA9A
|
|
||||||
org $B9FA9A
|
|
||||||
MapHUDPalette:
|
|
||||||
dw $0000, $3ED8, $2E54
|
|
||||||
|
|
||||||
warnpc $B9FAA0
|
|
||||||
org $B9FAA0
|
|
||||||
PrizeLocations:
|
|
||||||
dw $00C8 : db $02 ; Armos Knights
|
|
||||||
dw $0033 : db $03 ; Lanmolas
|
|
||||||
dw $0006 : db $05 ; Arrghus
|
|
||||||
dw $005A : db $06 ; Helmasaur King
|
|
||||||
dw $0090 : db $07 ; Vitreous
|
|
||||||
dw $0029 : db $08 ; Mothula
|
|
||||||
dw $00DE : db $09 ; Kholdstare
|
|
||||||
dw $0007 : db $0A ; Moldorm
|
|
||||||
dw $00AC : db $0B ; Blind
|
|
||||||
dw $00A4 : db $0C ; Trinexx
|
|
||||||
dw $FFFF
|
|
||||||
|
|
||||||
warnpc $B9FAC0
|
|
||||||
org $B9FAC0
|
|
||||||
SupertileEntrances:
|
|
||||||
incsrc data/entrance_tiles.asm
|
|
||||||
warnpc $B9FB00
|
|
||||||
padbyte $FF
|
|
||||||
pad $B9FB00
|
|
||||||
|
|
||||||
; $B9FB00
|
|
||||||
DungeonLabels:
|
|
||||||
dw $2550, $2579 ; Sewers
|
|
||||||
dw $2564, $255F ; Hyrule Castle
|
|
||||||
dw $2561, $256C ; Eastern Palace
|
|
||||||
dw $2560, $256C ; Desert Palace
|
|
||||||
dw $255D, $2570 ; Agahnim's Tower
|
|
||||||
dw $256F, $256C ; Swamp Palace
|
|
||||||
dw $256C, $2560 ; Palace of Darkness
|
|
||||||
dw $2569, $2569 ; Misery Mire
|
|
||||||
dw $256F, $2573 ; Skull Woods
|
|
||||||
dw $2565, $256C ; Ice Palace
|
|
||||||
dw $2570, $2564 ; Tower of Hera
|
|
||||||
dw $2570, $2570 ; Thieves' Town
|
|
||||||
dw $2570, $256E ; Turtle Rock
|
|
||||||
dw $2563, $2570 ; Ganon's Tower
|
|
||||||
dw $25A4, $25A4 ; Reserved
|
|
||||||
dw $25A4, $25A4 ; Reserved
|
|
||||||
|
|
||||||
; $B9FB40
|
|
||||||
|
|
||||||
warnpc $B9FE00
|
|
||||||
org $B9FE00
|
|
||||||
JunkTable:
|
|
||||||
incsrc data/junk_items.asm
|
|
||||||
|
|
||||||
warnpc $B9FF00
|
|
||||||
org $B9FF00
|
|
||||||
; $00 - do not show anything
|
|
||||||
; $01 - show presence of supertile as dark square
|
|
||||||
; $02 - show presence of quadrants as dark squares
|
|
||||||
; $03 - show outline of shape with walls but no interior details (palette 5)
|
|
||||||
; $04 - show dark with stairs but no hole/internal walls (palette 4)
|
|
||||||
; $05 - show mostly lit with stairs and holes/internal walls (palette 3)
|
|
||||||
; $06 - show fully lit with stairs and holes/internal walls (palette 2)
|
|
||||||
ShowRooms:
|
|
||||||
.default
|
|
||||||
db $02
|
|
||||||
.have_map
|
|
||||||
db $05
|
|
||||||
.have_compass
|
|
||||||
db $03
|
|
||||||
.visited_tile
|
|
||||||
db $04
|
|
||||||
.reserved
|
|
||||||
skip 3
|
|
||||||
.dark_room_cap
|
|
||||||
db $01
|
|
||||||
warnpc $B9FF08
|
|
||||||
|
|
||||||
org $B9FF08
|
|
||||||
; $00 - do not show anything
|
|
||||||
; $01 - show presence of unobtained items
|
|
||||||
; $02 - show category of item
|
|
||||||
ShowItems:
|
|
||||||
.default
|
|
||||||
db $00
|
|
||||||
.have_map
|
|
||||||
db $00
|
|
||||||
.have_compass
|
|
||||||
db $02
|
|
||||||
.visited_tile
|
|
||||||
db $01
|
|
||||||
.reserved
|
|
||||||
skip 4
|
|
||||||
warnpc $B9FF10
|
|
||||||
|
|
||||||
org $B9FF10
|
|
||||||
; ---P bepc
|
|
||||||
; P - dungeon prizes
|
|
||||||
; b - bosses (and torches in GT and desert, plus hera basement standing item)
|
|
||||||
; e - enemy drops
|
|
||||||
; p - pots
|
|
||||||
; c - chests
|
|
||||||
ItemSources:
|
|
||||||
db $09
|
|
||||||
|
|
||||||
; $B9FF11
|
|
||||||
AlwaysShowCompass:
|
|
||||||
db $01
|
|
||||||
@@ -1,126 +0,0 @@
|
|||||||
DamageClassCalc:
|
|
||||||
PHA
|
|
||||||
LDA.l GanonVulnerabilityItem : BEQ +
|
|
||||||
LDA.w SpriteTypeTable, X : CMP.b #$D7 : BNE +
|
|
||||||
PLA
|
|
||||||
JSL Ganon_CheckAncillaVulnerability
|
|
||||||
RTL
|
|
||||||
+
|
|
||||||
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$06 : BEQ .cane_immune
|
|
||||||
PLA
|
|
||||||
CMP.b #$01 : BEQ .red_cane
|
|
||||||
CMP.b #$2C : BEQ .red_cane
|
|
||||||
CMP.b #$31 : BEQ .blue_cane
|
|
||||||
CMP.b #$0C : BEQ .beam
|
|
||||||
BRA .not_cane_or_beam
|
|
||||||
|
|
||||||
.red_cane
|
|
||||||
PHA
|
|
||||||
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$04 : BEQ .special_cane
|
|
||||||
CMP.b #$05 : BEQ .special_cane
|
|
||||||
LDA.l SpecialWeapons : BIT.b #$80 : BNE .cane_immune
|
|
||||||
BRA .normal
|
|
||||||
|
|
||||||
.blue_cane
|
|
||||||
PHA
|
|
||||||
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$03 : BEQ .special_cane
|
|
||||||
CMP.b #$05 : BEQ .special_cane
|
|
||||||
LDA.l SpecialWeapons : BIT.b #$80 : BNE .cane_immune
|
|
||||||
BRA .normal
|
|
||||||
|
|
||||||
.cane_immune
|
|
||||||
LDA.w SpriteTypeTable, X : CMP.b #$1E : BEQ .normal ; crystal switch
|
|
||||||
PLA
|
|
||||||
BRA .impervious
|
|
||||||
|
|
||||||
.special_cane
|
|
||||||
PLA
|
|
||||||
LDA.w SpriteTypeTable, X : CMP.b #$D6 : BEQ .unstunned_ganon
|
|
||||||
CMP.b #$88 : BEQ .mothula
|
|
||||||
BRA .special_level
|
|
||||||
|
|
||||||
.impervious
|
|
||||||
LDA.b #$FF
|
|
||||||
RTL
|
|
||||||
|
|
||||||
.beam
|
|
||||||
PHA
|
|
||||||
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$02 : BNE .normal
|
|
||||||
PLA
|
|
||||||
LDA.b #$05
|
|
||||||
RTL
|
|
||||||
|
|
||||||
.normal
|
|
||||||
PLA
|
|
||||||
|
|
||||||
.not_cane_or_beam
|
|
||||||
CMP.b #$07 : BNE .no_change
|
|
||||||
LDA.l SpecialWeapons : AND.b #$7F : CMP.b #$01 : BNE .normal_bombs
|
|
||||||
LDA.l SpecialWeaponLevel : BEQ .normal_bombs
|
|
||||||
LDA.w SpriteTypeTable, X : CMP.b #$D6 : BEQ .unstunned_ganon
|
|
||||||
CMP.b #$88 : BEQ .mothula
|
|
||||||
CMP.b #$91 : BEQ .stalfos_knight
|
|
||||||
CMP.b #$92 : BEQ .helmasaur_king
|
|
||||||
|
|
||||||
.special_level
|
|
||||||
LDA.l SpecialWeaponLevel
|
|
||||||
BRA .done
|
|
||||||
|
|
||||||
.mothula
|
|
||||||
LDA.l SpecialWeaponLevel
|
|
||||||
CMP.b #$04 : BCS .fix_mothula
|
|
||||||
BRA .done
|
|
||||||
|
|
||||||
.fix_mothula
|
|
||||||
LDA.b #$03
|
|
||||||
BRA .done
|
|
||||||
|
|
||||||
.stalfos_knight
|
|
||||||
LDA.l StalfosBombDamage : BEQ .special_level
|
|
||||||
LDA.b #$08
|
|
||||||
BRA .done
|
|
||||||
|
|
||||||
.helmasaur_king
|
|
||||||
LDA.w $0DB0, X : CMP.b #$03 : BCS .special_level
|
|
||||||
LDA.b #$08
|
|
||||||
BRA .done
|
|
||||||
|
|
||||||
.unstunned_ganon
|
|
||||||
LDA.w $04C5 : CMP.b #$02 : BNE .impervious
|
|
||||||
LDA.w $0EE0, X : BNE .impervious
|
|
||||||
LDA.b #$34 : STA.w $0EE0, X ; give the poor pig some i-frames
|
|
||||||
BRA .special_level
|
|
||||||
|
|
||||||
.normal_bombs
|
|
||||||
LDA.b #$07
|
|
||||||
|
|
||||||
.no_change
|
|
||||||
PHX : TAX
|
|
||||||
LDA.l $86EC84, X
|
|
||||||
PLX
|
|
||||||
CMP.b #$06 : BNE .done
|
|
||||||
LDA.l BowEquipment : CMP.b #$03 : BCS .actual_silver_arrows
|
|
||||||
|
|
||||||
.normal_arrows
|
|
||||||
LDA.b #$06
|
|
||||||
|
|
||||||
.done
|
|
||||||
RTL
|
|
||||||
|
|
||||||
.actual_silver_arrows
|
|
||||||
LDA.w SpriteTypeTable, X : CMP.b #$D7 : BNE +
|
|
||||||
LDA.b #$20 : STA.w SpriteTimerE, X
|
|
||||||
+ LDA.b #$09
|
|
||||||
RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
Utility_CheckImpervious:
|
|
||||||
LDA.w SpriteControl, X : AND.b #$40 : BNE .impervious
|
|
||||||
LDA.w $0CF2 : CMP.b #$FF : BEQ .impervious
|
|
||||||
LDA.w UseY1 : AND.b #$0A : BEQ .not_impervious ; normal behavior if not hammering
|
|
||||||
JSL Ganon_CheckHammerVulnerability : BCS .not_impervious
|
|
||||||
|
|
||||||
.not_impervious
|
|
||||||
LDA.b #$00 : RTL
|
|
||||||
.impervious
|
|
||||||
LDA.b #$01 : RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
@@ -1,130 +0,0 @@
|
|||||||
Ganon_CheckAncillaVulnerability:
|
|
||||||
PHA
|
|
||||||
LDA.w $0EE0, X : BNE .not_vulnerable_pla
|
|
||||||
PLA
|
|
||||||
PHX : PHA
|
|
||||||
LDA.l GanonVulnerabilityItem
|
|
||||||
BMI .no_weakness
|
|
||||||
TAX : PLA
|
|
||||||
CMP.l Ganon_CheckByAncilla, X : BNE +
|
|
||||||
PLX : BRA .vulnerable
|
|
||||||
+ PLX : PHA
|
|
||||||
LDA.l GanonVulnerabilityItem
|
|
||||||
BEQ .silver_arrows
|
|
||||||
CMP.b #$01 : BEQ .silver_arrows
|
|
||||||
CMP.b #$11 : BEQ .somaria
|
|
||||||
BRA .not_vulnerable_pla
|
|
||||||
|
|
||||||
.no_weakness
|
|
||||||
PLA : PLX
|
|
||||||
BRA .not_vulnerable
|
|
||||||
|
|
||||||
.silver_arrows
|
|
||||||
PLA : CMP.b #$09 : BNE .not_vulnerable
|
|
||||||
LDA.l BowEquipment : CMP.b #$03 : BCS +
|
|
||||||
LDA.b #$09 : BRA .not_vulnerable
|
|
||||||
+ BRA .vulnerable
|
|
||||||
|
|
||||||
.somaria
|
|
||||||
PLA
|
|
||||||
CMP.b #$01 : BEQ .vulnerable
|
|
||||||
CMP.b #$2C : BEQ .vulnerable
|
|
||||||
BRA .not_vulnerable
|
|
||||||
|
|
||||||
.vulnerable
|
|
||||||
PHX
|
|
||||||
LDA.l GanonVulnerabilityItem
|
|
||||||
TAX
|
|
||||||
LDA.l Ganon_IFrameDuration, X
|
|
||||||
PLX
|
|
||||||
STA.w $0EE0, X ; give the poor pig some iframes
|
|
||||||
LDA.b #$20 : STA.w SpriteTimerE, X
|
|
||||||
LDA.b #$09
|
|
||||||
RTL
|
|
||||||
.not_vulnerable_pla_pla
|
|
||||||
PLA
|
|
||||||
.not_vulnerable_pla
|
|
||||||
PLA
|
|
||||||
.not_vulnerable
|
|
||||||
PHX : TAX
|
|
||||||
LDA.l $86EC84, X
|
|
||||||
PLX
|
|
||||||
RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
Ganon_CheckPowderVulnerability:
|
|
||||||
LDA.l GanonVulnerabilityItem : CMP.b #$05 : BNE .normal
|
|
||||||
LDA.w SpriteTypeTable, X : CMP.b #$D7 : BNE .normal
|
|
||||||
LDA.w $0EE0, X : BNE .normal ; ganon has i-frames
|
|
||||||
LDA.l Ganon_IFrameDuration+$05
|
|
||||||
STA.w $0EE0, X ; give ganon i-frames
|
|
||||||
LDA.b #$20 : STA.w SpriteTimerE, X
|
|
||||||
LDA.b #$09
|
|
||||||
BRA .done
|
|
||||||
|
|
||||||
.normal
|
|
||||||
LDA.b #$0A
|
|
||||||
.done
|
|
||||||
JML $86ECE6
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
Ganon_CheckBeeVulnerability:
|
|
||||||
; X is bee sprite index
|
|
||||||
; Y is target sprite index
|
|
||||||
LDA.l GanonVulnerabilityItem : CMP.b #$10 : BNE .normal
|
|
||||||
LDA.w SpriteTypeTable, Y : CMP.b #$D7 : BNE .normal
|
|
||||||
LDA.w $0EE0, Y : BNE .normal ; ganon has i-frames
|
|
||||||
LDA.l Ganon_IFrameDuration+$10
|
|
||||||
STA.w $0EE0, X ; give ganon i-frames
|
|
||||||
LDA.b #$20 : STA.w SpriteTimerE, X
|
|
||||||
LDA.b #$09
|
|
||||||
BRA .done
|
|
||||||
|
|
||||||
.normal
|
|
||||||
LDA.b #$01
|
|
||||||
.done
|
|
||||||
TYX
|
|
||||||
JML $86ECE6
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
Ganon_CheckInvincible:
|
|
||||||
LDA.w $04C5 : CMP.b #$02 : BEQ .not_transparent
|
|
||||||
LDA.w SpriteTypeTable, X : CMP.b #$D7 : BNE .transparent ; non-stunned ganon
|
|
||||||
LDA.w UseY1 : AND.b #$0A : BEQ .transparent ; normal behavior if not hammering
|
|
||||||
LDA.l GanonVulnerabilityItem : CMP.b #$0C : BNE .transparent
|
|
||||||
.not_transparent
|
|
||||||
LDA.b #$00 : RTL
|
|
||||||
.transparent
|
|
||||||
LDA.b #$01 : RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
Ganon_CheckHammerVulnerability:
|
|
||||||
LDA.l GanonVulnerabilityItem : CMP.b #$0C : BNE .normal
|
|
||||||
LDA.w SpriteTypeTable, X : CMP.b #$D7 : BNE .normal
|
|
||||||
LDA.w $0EE0, X : BNE .normal ; ganon has i-frames
|
|
||||||
LDA.l Ganon_IFrameDuration+$0C
|
|
||||||
STA.w $0EE0, X ; give ganon i-frames
|
|
||||||
LDA.b #$20 : STA.w SpriteTimerE, X
|
|
||||||
LDA.b #$09 : STA.w $0CF2 ; set damage class to silver
|
|
||||||
SEC : RTL
|
|
||||||
.normal
|
|
||||||
CLC : RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
CheckBeeBoss:
|
|
||||||
; Y is sprite index
|
|
||||||
LDA.l GanonVulnerabilityItem : CMP.b #$10 : BNE .normal
|
|
||||||
LDA.w SpriteTypeTable, Y : CMP.b #$D7 : BNE .normal
|
|
||||||
LDA.b #$00 : RTL
|
|
||||||
.normal
|
|
||||||
LDA.w $0B6B, Y : AND.b #$02
|
|
||||||
RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
Ganon_CheckByAncilla:
|
|
||||||
db #$00 ; default behavior
|
|
||||||
db #$00, #$05, #$1F, #$07, #$00
|
|
||||||
db #$02, #$0B, #$19, #$18, #$1C
|
|
||||||
db #$00, #$00, #$00, #$00, #$00
|
|
||||||
db #$00, #$00, #$31, #$00, #$00
|
|
||||||
Ganon_IFrameDuration:
|
|
||||||
db #$00 ; default behavior
|
|
||||||
db #$00, #$00, #$00, #$34, #$00
|
|
||||||
db #$00, #$00, #$00, #$00, #$00
|
|
||||||
db #$00, #$00, #$00, #$00, #$00
|
|
||||||
db #$00, #$00, #$00, #$00, #$00
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
24
gk_meta.asm
24
gk_meta.asm
@@ -1,24 +0,0 @@
|
|||||||
org $B9EE00
|
|
||||||
|
|
||||||
;================================================================================
|
|
||||||
warnpc $B9EEE0
|
|
||||||
org $B9EEE0
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
B9Source:
|
|
||||||
; $01 = GK Baserom
|
|
||||||
; $FF = GK Adjuster Patch
|
|
||||||
db $01
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
GKRomVersion:
|
|
||||||
; $01 = Dungeon Maps
|
|
||||||
; .., $01 = Dark rooms don't show on map from visition
|
|
||||||
db $01, $01, $00
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
;================================================================================
|
|
||||||
warnpc $B9EEF0
|
|
||||||
org $B9EEF0
|
|
||||||
GKRandomizerVersion:
|
|
||||||
padbyte $00
|
|
||||||
pad $B9EF00
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
73
goalitem.asm
73
goalitem.asm
@@ -40,14 +40,14 @@ RTL
|
|||||||
dw .crystals
|
dw .crystals
|
||||||
dw .pendant_bosses
|
dw .pendant_bosses
|
||||||
dw .crystal_bosses
|
dw .crystal_bosses
|
||||||
dw .prize_bosses
|
dw .bosses
|
||||||
dw .agahnim_defeated
|
dw .agahnim_defeated
|
||||||
dw .agahnim2_defeated
|
dw .agahnim2_defeated
|
||||||
dw .goal_item
|
dw .goal_item
|
||||||
dw .collection_rate
|
dw .collection_rate
|
||||||
dw .custom_goal
|
dw .custom_goal
|
||||||
dw .bingo
|
dw .bingo
|
||||||
dw .all_bosses
|
dw .success
|
||||||
dw .success
|
dw .success
|
||||||
dw .success
|
dw .success
|
||||||
dw .success
|
dw .success
|
||||||
@@ -70,24 +70,19 @@ RTL
|
|||||||
CMP.b #$07 : RTS
|
CMP.b #$07 : RTS
|
||||||
.pendant_bosses
|
.pendant_bosses
|
||||||
PHP
|
PHP
|
||||||
LDA.b #$20
|
LDA.b #$02
|
||||||
JSR CheckForBossesDefeated : PLP : BCC +
|
JSR CheckForBossesDefeated : PLP : BCC +
|
||||||
CMP.b #$03 : RTS
|
CMP.b #$03 : RTS
|
||||||
.crystal_bosses
|
.crystal_bosses
|
||||||
PHP
|
PHP
|
||||||
LDA.b #$10
|
LDA.b #$01
|
||||||
JSR CheckForBossesDefeated : PLP : BCC +
|
JSR CheckForBossesDefeated : PLP : BCC +
|
||||||
CMP.b #$07 : RTS
|
CMP.b #$07 : RTS
|
||||||
.all_bosses
|
.bosses
|
||||||
PHP
|
|
||||||
LDA.b #$30
|
|
||||||
JSR CheckForBossesDefeated : PLP : BCC +
|
|
||||||
CMP.b #$10 : RTS
|
|
||||||
.prize_bosses
|
|
||||||
PHP
|
PHP
|
||||||
LDA.b #$00
|
LDA.b #$00
|
||||||
JSR CheckForBossesDefeated : PLP : BCC +
|
JSR CheckForBossesDefeated : PLP : BCC +
|
||||||
CMP.b #$0A : RTS
|
CMP.b #$10 : RTS
|
||||||
+ CMP.b [Scrap00], Y : INY : RTS
|
+ CMP.b [Scrap00], Y : INY : RTS
|
||||||
.agahnim_defeated
|
.agahnim_defeated
|
||||||
LDA.l ProgressIndicator : CMP.b #$03 : RTS
|
LDA.l ProgressIndicator : CMP.b #$03 : RTS
|
||||||
@@ -351,7 +346,7 @@ CheckTowerOpen:
|
|||||||
;---------------------------------------------------------------------------------------------------
|
;---------------------------------------------------------------------------------------------------
|
||||||
CheckAgaForPed:
|
CheckAgaForPed:
|
||||||
REP #$20
|
REP #$20
|
||||||
; seems light_speed option to force blue balls is unused for now
|
; seems light_speed option to force blue balls is unused for now
|
||||||
BRA .vanilla
|
BRA .vanilla
|
||||||
|
|
||||||
.light_speed
|
.light_speed
|
||||||
@@ -373,38 +368,12 @@ CheckAgaForPed:
|
|||||||
RTL
|
RTL
|
||||||
|
|
||||||
;---------------------------------------------------------------------------------------------------
|
;---------------------------------------------------------------------------------------------------
|
||||||
BossPrizeFlags:
|
|
||||||
; $00 = all prize bosses
|
|
||||||
db $00
|
|
||||||
db $01, $01, $01, $01, $01, $01, $01 ; crystals
|
|
||||||
db $01, $01, $01 ; pendants
|
|
||||||
db $00, $00, $00, $00, $00 ; padding
|
|
||||||
; $10 = all crystal bosses
|
|
||||||
db $00
|
|
||||||
db $01, $01, $01, $01, $01, $01, $01 ; crystals
|
|
||||||
db $00, $00, $00 ; pendants
|
|
||||||
db $00, $00, $00, $00, $00 ; padding
|
|
||||||
; $20 = all pendant bosses
|
|
||||||
db $00
|
|
||||||
db $00, $00, $00, $00, $00, $00, $00 ; crystals
|
|
||||||
db $01, $01, $01 ; pendants
|
|
||||||
db $00, $00, $00, $00, $00 ; padding
|
|
||||||
; $30 = all bosses
|
|
||||||
db $01 ; agas
|
|
||||||
db $01, $01, $01, $01, $01, $01, $01 ; crystals
|
|
||||||
db $01, $01, $01 ; pendants
|
|
||||||
db $00, $00, $00, $00, $00 ; padding
|
|
||||||
|
|
||||||
CheckForBossesDefeated:
|
CheckForBossesDefeated:
|
||||||
PHB : PHX : PHY
|
PHB : PHX : PHY
|
||||||
|
|
||||||
; $00 = check prize bosses
|
STA.b Scrap04 ; 0 = check all, 1 = check crystals, 2 = check pendants
|
||||||
; $10 = check crystal bosses
|
|
||||||
; $20 = check pendant bosses
|
|
||||||
; $30 = check all bosses
|
|
||||||
STA.b Scrap04
|
|
||||||
|
|
||||||
LDA.b #bank(CrystalPendantFlags_3)
|
LDA.b #CrystalPendantFlags_3>>16
|
||||||
PHA : PLB
|
PHA : PLB
|
||||||
|
|
||||||
STZ.b Scrap03 ; count of number of bosses killed
|
STZ.b Scrap03 ; count of number of bosses killed
|
||||||
@@ -412,22 +381,22 @@ CheckForBossesDefeated:
|
|||||||
|
|
||||||
REP #$30
|
REP #$30
|
||||||
|
|
||||||
LDY.w #11
|
LDY.w #10
|
||||||
|
|
||||||
.next_check
|
.next_check
|
||||||
SEP #$30
|
LDA.w CrystalPendantFlags_3+2,Y : AND.w #$00FF : BEQ .skip
|
||||||
LDA.w CrystalPendantFlags_3+2, Y
|
CMP.w #$0008 ; C set = pendant, C clear = crystal
|
||||||
CLC : ADC.b Scrap04
|
LDA.b Scrap04 : BEQ .proceed
|
||||||
TAX
|
PHP : ROR : BCC +
|
||||||
LDA.l BossPrizeFlags, X
|
PLP : BCS .skip : BRA .proceed
|
||||||
REP #$30
|
+ PLP : BCC .skip
|
||||||
BEQ .skip
|
|
||||||
|
|
||||||
TYA : ASL A : TAX
|
.proceed
|
||||||
|
TYA : ASL : TAX
|
||||||
|
|
||||||
LDA.l DungeonMapBossRooms+4, X
|
LDA.l DungeonMapBossRooms+4,X
|
||||||
ASL A : TAX
|
ASL : TAX
|
||||||
LDA.l RoomDataWRAM.l, X
|
LDA.l RoomDataWRAM.l,X
|
||||||
|
|
||||||
AND.w #$0800 : BEQ .skip
|
AND.w #$0800 : BEQ .skip
|
||||||
INC.b Scrap03
|
INC.b Scrap03
|
||||||
|
|||||||
112
hooks.asm
112
hooks.asm
@@ -120,7 +120,7 @@ JSL AddBonkTremors : NOP #4
|
|||||||
; Bonk Breakable Walls
|
; Bonk Breakable Walls
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $81CF8E ; CF8E <- Bank01.asm : 11641 (LDA $0372 : AND.w #$00FF)
|
org $81CF8E ; CF8E <- Bank01.asm : 11641 (LDA $0372 : AND.w #$00FF)
|
||||||
JSL BonkBreakableWall : NOP #2
|
JSL ValidDashCheck : NOP #2
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
@@ -139,6 +139,11 @@ GravestoneHook_continue:
|
|||||||
org $87C106
|
org $87C106
|
||||||
moveGravestone:
|
moveGravestone:
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
org $899A30
|
||||||
|
JSL ValidDashCheck : NOP #2
|
||||||
|
org $899A3A
|
||||||
|
JSL ValidDashCheck : NOP #2
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; Jump Down Ledge
|
; Jump Down Ledge
|
||||||
@@ -840,10 +845,10 @@ JSL LoadModifiedIceFloorValue_a01 : NOP
|
|||||||
org $83FC16 ; <- 1FC16 ($A8, $B8, $3D, $D0, $B8, $3D)
|
org $83FC16 ; <- 1FC16 ($A8, $B8, $3D, $D0, $B8, $3D)
|
||||||
db $B1, $C6, $F9, $C9, $C6, $F9 ; data insert - 2 chests, fat fairy room
|
db $B1, $C6, $F9, $C9, $C6, $F9 ; data insert - 2 chests, fat fairy room
|
||||||
|
|
||||||
; unused item receipts - moved to pyramid fairy
|
; unused item receipts
|
||||||
org $81E97E
|
org $81E97E
|
||||||
dw $0116 : db $5E
|
dw $0116 : db $08
|
||||||
dw $0116 : db $64
|
dw $0116 : db $25
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $86B489 ; <- 33489 - sprite_smithy_bros.asm : 473 (LDA $7EF359 : CMP.b #$03 : BCS .tempered_sword_or_better)
|
org $86B489 ; <- 33489 - sprite_smithy_bros.asm : 473 (LDA $7EF359 : CMP.b #$03 : BCS .tempered_sword_or_better)
|
||||||
JML GetSmithSword : NOP #4
|
JML GetSmithSword : NOP #4
|
||||||
@@ -2102,6 +2107,11 @@ JSL FlipperScrollWarp
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;org $878F51 ; <- 38F51 - Bank07.asm:2444 (JSR $AE54 ; $3AE54 IN ROM)
|
;org $878F51 ; <- 38F51 - Bank07.asm:2444 (JSR $AE54 ; $3AE54 IN ROM)
|
||||||
;JSL OnEnterWater : NOP
|
;JSL OnEnterWater : NOP
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
; Fixes getting bumped while swimming, unable to screen transition
|
||||||
|
org $879632
|
||||||
|
LinkState_Swimming:
|
||||||
|
JSL FixSwimBump
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; Floodgate Softlock Fix
|
; Floodgate Softlock Fix
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -2182,9 +2192,6 @@ JSL LampCheck
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $81F503 ; <- F503 - Bank01.asm:14994 (LDA.b #$01 : STA $1D)
|
org $81F503 ; <- F503 - Bank01.asm:14994 (LDA.b #$01 : STA $1D)
|
||||||
JSL SetOverlayIfLamp
|
JSL SetOverlayIfLamp
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $81B610 ; <- loading whether room is dark
|
|
||||||
JSL DarkRoomCheck
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
@@ -2729,92 +2736,5 @@ NOP #2 ; this fixes Link's direction after mirroring and falling after entering
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; Enable new room header table
|
; Enable new room header table
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
if not(!FEATURE_FIX_BASEROM)
|
org $81B5E6
|
||||||
org $81B5E6
|
LDA.b #$30
|
||||||
LDA.b #$30
|
|
||||||
endif
|
|
||||||
|
|
||||||
;================================================================================
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
; Mimic dash changes
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $9EC7BE
|
|
||||||
JSL MimicDirection
|
|
||||||
|
|
||||||
;================================================================================
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
; Gloom VRAM overwrite
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $828068
|
|
||||||
JSL AdjustDefaultGraphics
|
|
||||||
|
|
||||||
;================================================================================
|
|
||||||
; Special Weapons Modes
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $86ECC3 ; Bank06.asm@4704 (PHX : TAX : LDA.l .damage_classes, X : PLX)
|
|
||||||
JSL DamageClassCalc
|
|
||||||
BRA + : NOP #29 : +
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $86ED94 ; Bank06.asm@4866 (LDA $0E60, X : AND.b #$40)
|
|
||||||
JSL Utility_CheckImpervious
|
|
||||||
NOP
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
;================================================================================
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
; Variable Ganon Vulnerability
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $88BBD4 ; ancilla_magic_powder.asm@253 (LDA #$0A : JSL Ancilla_CheckSpriteDamage.preset_class)
|
|
||||||
JSL Ganon_CheckPowderVulnerability
|
|
||||||
NOP #2
|
|
||||||
|
|
||||||
org $1D8F4E ; sprite_ganon.asm@325 (LDA $04C5 : CMP #$02)
|
|
||||||
JSL Ganon_CheckInvincible
|
|
||||||
NOP
|
|
||||||
|
|
||||||
org $0DD628 ; Bank0D.asm@1266 (LDA $0B6B, Y : AND #$02)
|
|
||||||
JSL CheckBeeBoss
|
|
||||||
NOP
|
|
||||||
|
|
||||||
org $0DD677 ; Bank0D.asm@1303 (JSL Ancilla_CheckSpriteDamage.preset_class)
|
|
||||||
JSL Ganon_CheckBeeVulnerability
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
;================================================================================
|
|
||||||
; PseudoFlute
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $8AB7D5 ; bank_0A.asm@5655 (DEC.w $1AF0 : LDA.b #$20 : STA.w $012F)
|
|
||||||
JSL SelectFlutePrev
|
|
||||||
BRA + : NOP #2 : +
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $8AB7E3 ; bank_0A.asm@5665 (INC.w $1AF0 : LDA.b #$20 : STA.w $012F)
|
|
||||||
JSL SelectFluteNext
|
|
||||||
BRA + : NOP #2 : +
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $8AB877 ; bank_0A.asm@5758 (STA.b $0C : LDA.b #$00 : STA.b $0B)
|
|
||||||
JSL SetFluteSpotPalette
|
|
||||||
NOP #2
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $8AB8BF ; bank_0A.asm@5800 (STA.b $0C : LDA.b #$00 : STA.b $0B)
|
|
||||||
JSL SetFluteSpotPalette
|
|
||||||
NOP #2
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $82AFBE ; bank_02.asm@8776 (LDA.l $7EC213 : STA.b $8A)
|
|
||||||
JSL CheckEnterOverworld
|
|
||||||
NOP #2
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $82A9A1 ; bank_02.asm@7655 (STA.b $8A : STA.w $040A)
|
|
||||||
JSL CheckTransitionOverworld
|
|
||||||
NOP
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $8DF741
|
|
||||||
dw $3CD4, $3CD5, $3CE4, $3CE5
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $8DE58E ; bank_0D.asm@15401 (AND.w #$00FF : STA.b $02)
|
|
||||||
JSL DrawFluteIcon
|
|
||||||
NOP
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $8DFB63 ; bank_0D.asm@18092 (LDA.l $7EF33F, X : AND.w #$00FF)
|
|
||||||
JSL CheckFluteInHUD
|
|
||||||
NOP #3
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
@@ -114,10 +114,7 @@ StartingGenericKeys: skip 1 ; PC 0x18338B
|
|||||||
InitInventoryTracking: skip 2 ; PC 0x18338C \ Need to set bits here for silver arrows,
|
InitInventoryTracking: skip 2 ; PC 0x18338C \ Need to set bits here for silver arrows,
|
||||||
InitBowTracking: skip 2 ; PC 0x18338E / boomerangs, powder/mushroom, etc
|
InitBowTracking: skip 2 ; PC 0x18338E / boomerangs, powder/mushroom, etc
|
||||||
InitItemLimitCounts: skip 16 ; PC 0x183390
|
InitItemLimitCounts: skip 16 ; PC 0x183390
|
||||||
skip 34 ;
|
skip 37 ;
|
||||||
InitFluteBitfield: db $00 ;
|
|
||||||
InitSpecialWeaponLevel: db $00 ;
|
|
||||||
InitItemOnB: db $00 ;
|
|
||||||
InitProgressIndicator: db $02 ; PC 0x1833C5 - Set to $80 for instant post-aga with standard
|
InitProgressIndicator: db $02 ; PC 0x1833C5 - Set to $80 for instant post-aga with standard
|
||||||
InitProgressFlags: db $14 ; PC 0x1833C6 - Set to $00 for standard
|
InitProgressFlags: db $14 ; PC 0x1833C6 - Set to $00 for standard
|
||||||
InitMapIcons: skip 1 ; PC 0x1833C7
|
InitMapIcons: skip 1 ; PC 0x1833C7
|
||||||
|
|||||||
@@ -792,13 +792,32 @@ RTL
|
|||||||
}
|
}
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
MaybePlaySelectSFX:
|
MaybePlaySelectSFX:
|
||||||
LDA.w DungeonID : BMI .not_dungeon
|
LDA.w DungeonID : BMI .not_dungeon
|
||||||
.play
|
.play
|
||||||
LDA.b #$20 : STA.w SFX3 ; menu select sound
|
LDA.b #$20 : STA.w SFX3 ; menu select sound
|
||||||
RTL
|
RTL
|
||||||
.not_dungeon
|
.not_dungeon
|
||||||
LDA.l HUDDungeonItems : BIT.b #$13 : BEQ .dont_play
|
LDA.l HUDDungeonItems : BIT.b #$13 : BEQ .dont_play
|
||||||
BIT.b #$0C : BEQ .dont_play
|
BIT.b #$0C : BEQ .dont_play
|
||||||
BRA .play
|
BRA .play
|
||||||
.dont_play
|
.dont_play
|
||||||
RTL
|
RTL
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
; A = item id being collected
|
||||||
|
ItemGetAlternateSFX:
|
||||||
|
PEA.w $C567 ; SNES to RTS to in bank 08
|
||||||
|
LDA.w AncillaGet,X : CMP.b #$4A : BNE +
|
||||||
|
; collecting pre-activated flute
|
||||||
|
LDA.b #$13 : JML Ancilla_SFX2_Near
|
||||||
|
+ ; normal itemget sfx
|
||||||
|
LDA.b #$0F : JML Ancilla_SFX3_Near ; what we wrote over
|
||||||
|
|
||||||
|
; A = item id being collected
|
||||||
|
ItemGetOverworldAlternateSFX:
|
||||||
|
CPY.b #$4A : BNE +
|
||||||
|
JSL Sound_SetSfxPanWithPlayerCoords : ORA.b #$13 : STA.w SFX2
|
||||||
|
RTL
|
||||||
|
+ ; normal itemget sfx
|
||||||
|
JSL Sound_SetSfxPanWithPlayerCoords : ORA.b #$0F : STA.w SFX3 ; what we wrote over
|
||||||
|
RTL
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
@@ -89,27 +89,16 @@ org $80FDEE
|
|||||||
InitializeMirrorHDMA:
|
InitializeMirrorHDMA:
|
||||||
|
|
||||||
org $89D62E
|
org $89D62E
|
||||||
UWSpritesPointers: ; 0x250 bytes for 0x128 rooms' 16-bit pointers
|
;commenting out since this address can move
|
||||||
|
;UWSpritesPointers: ; 0x250 bytes for 0x128 rooms' 16-bit pointers
|
||||||
|
|
||||||
if !FEATURE_FIX_BASEROM
|
org $89D87E
|
||||||
org $81DB67
|
|
||||||
else
|
|
||||||
org $89D87E
|
|
||||||
endif
|
|
||||||
UWPotsPointers: ; 0x250 bytes for 0x128 rooms' 16-bit pointers
|
UWPotsPointers: ; 0x250 bytes for 0x128 rooms' 16-bit pointers
|
||||||
|
|
||||||
if !FEATURE_FIX_BASEROM
|
org $89DACE
|
||||||
org $01DDE7
|
|
||||||
else
|
|
||||||
org $89DACE
|
|
||||||
endif
|
|
||||||
UWPotsData: ; variable number of bytes (max 0x11D1) for all pots data
|
UWPotsData: ; variable number of bytes (max 0x11D1) for all pots data
|
||||||
|
|
||||||
if !FEATURE_FIX_BASEROM
|
org $A88000
|
||||||
org $89D92E
|
|
||||||
else
|
|
||||||
org $A88000
|
|
||||||
endif
|
|
||||||
UWSpritesData: ; variable number of bytes (max 0x2800) for all sprites and sprite drop data
|
UWSpritesData: ; variable number of bytes (max 0x2800) for all sprites and sprite drop data
|
||||||
; First $2800 bytes of this bank (28) is reserved for the sprite tables
|
; First $2800 bytes of this bank (28) is reserved for the sprite tables
|
||||||
|
|
||||||
@@ -200,7 +189,7 @@ RevealPotItem:
|
|||||||
|
|
||||||
LDA.b RoomIndex : ASL : TAX
|
LDA.b RoomIndex : ASL : TAX
|
||||||
|
|
||||||
LDA.l UWPotsPointers, X : STA.b Scrap00 ; we may move this
|
LDA.l UWPotsPointers,X : STA.b Scrap00 ; we may move this
|
||||||
LDA.w #UWPotsPointers>>16 : STA.b Scrap02
|
LDA.w #UWPotsPointers>>16 : STA.b Scrap02
|
||||||
|
|
||||||
LDY.w #$FFFD : LDX.w #$FFFF
|
LDY.w #$FFFD : LDX.w #$FFFF
|
||||||
@@ -881,7 +870,7 @@ CheckIfPotIsSpecial:
|
|||||||
BIT.b $BF : BVC .upper ; if $BF has bit 14 set, it's upper layer
|
BIT.b $BF : BVC .upper ; if $BF has bit 14 set, it's upper layer
|
||||||
ORA.w #$2000 ; set the lower layer bit ($2000)
|
ORA.w #$2000 ; set the lower layer bit ($2000)
|
||||||
.upper
|
.upper
|
||||||
STA.b $90 ; cache tilemap offset
|
STA.b $90 ; cache tilemap offset
|
||||||
|
|
||||||
LDA.l UWPotsPointers,X : TAX
|
LDA.l UWPotsPointers,X : TAX
|
||||||
LDY.w #$0000
|
LDY.w #$0000
|
||||||
|
|||||||
@@ -5,48 +5,28 @@
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
LampCheck:
|
LampCheck:
|
||||||
LDA.l LightConeModifier : BNE .lamp
|
LDA.l LightConeModifier : BNE .lamp
|
||||||
|
LDA.l LampCone : AND.b #$10 : BNE .lamp ; always on
|
||||||
LDA.l LampEquipment : BNE .lamp ; skip if we already have lantern
|
LDA.l LampEquipment : BNE .lamp ; skip if we already have lantern
|
||||||
LDA.l LampCone : AND.b #$10 : BNE .lamp
|
|
||||||
LDA.w DungeonID : CMP.b #$04 : BCS + ; are we en HC?
|
LDA.w DungeonID : CMP.b #$04 : BCS + ; are we en HC?
|
||||||
LDA.l LampCone : AND.b #$01 : RTL
|
LDA.l LampCone : RTL
|
||||||
+ : TDC
|
+ : TDC
|
||||||
.lamp
|
.lamp
|
||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; Dark Room checks
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
; Output: 0 for normal room, 1 for darkness
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
DarkRoomCheck:
|
|
||||||
LDA.l LampCone : AND.b #$20 : BNE .no_dark
|
|
||||||
LDA.b [$0D], Y
|
|
||||||
AND.b #$01
|
|
||||||
RTL
|
|
||||||
.no_dark
|
|
||||||
LDA.b $A0 : ORA.b $A1 : BNE .not_dark
|
|
||||||
LDA.b #$01 ; ganon's room
|
|
||||||
RTL
|
|
||||||
.not_dark
|
|
||||||
LDA.b #$00 ; not ganon's room, so no darkness
|
|
||||||
RTL
|
|
||||||
;================================================================================
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; Output: 0 locked, 1 open
|
; Output: 0 locked, 1 open
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
CheckForZelda:
|
CheckForZelda:
|
||||||
LDA.l ProgressIndicator : CMP.b #$02 : !BLT + ; Skip if rain is falling
|
LDA.l ProgressIndicator : CMP.b #$02 : !BLT + ; Skip if rain is falling
|
||||||
LDA.b #$01 ; pretend we have zelda anyway
|
LDA.b #$01 ; pretend we have zelda anyway
|
||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
LDA.l FollowerIndicator
|
LDA.l FollowerIndicator
|
||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
SetOverlayIfLamp:
|
SetOverlayIfLamp:
|
||||||
JSL LampCheck
|
JSL LampCheck
|
||||||
BEQ +
|
STA.b SUBDESQ ; write it directly to the overlay, this isn't a terrible idea at all
|
||||||
LDA.b #$01
|
|
||||||
+
|
|
||||||
STA.b SUBDESQ ; write it directly to the overlay, this isn't a terrible idea at all
|
|
||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; Mantle Object Changes
|
; Mantle Object Changes
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
menu/drsheetdc.2bppc
Normal file
BIN
menu/drsheetdc.2bppc
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -40,7 +40,7 @@ dw $0000
|
|||||||
|
|
||||||
warnpc $8ABE2E
|
warnpc $8ABE2E
|
||||||
org $8ABE2E
|
org $8ABE2E
|
||||||
; located posx/posy, dislocated posx/posy, prize pox/posy
|
; located posx/posy, dislocated posx/posy, prize posx/posy
|
||||||
; located = proper location of icon (default: if you have map)
|
; located = proper location of icon (default: if you have map)
|
||||||
; dislocated = location of icon if proper location is hidden from player
|
; dislocated = location of icon if proper location is hidden from player
|
||||||
; highest bit on first posx indicates which world it should show in
|
; highest bit on first posx indicates which world it should show in
|
||||||
@@ -49,27 +49,27 @@ WorldMapIcon_pos:
|
|||||||
.hc
|
.hc
|
||||||
dw $FF00, $FF00, $FF00, $FF00, $FF00, $FF00
|
dw $FF00, $FF00, $FF00, $FF00, $FF00, $FF00
|
||||||
.ep
|
.ep
|
||||||
dw $0F31, $0620, $FF00, $FF00, $0F31, $0620
|
dw $0F30, $06E0, $FF00, $FF00, $0F30, $06E0
|
||||||
.dp
|
.dp
|
||||||
dw $0108, $0D70, $FF00, $FF00, $0108, $0D70
|
dw $0170, $0E50, $FF00, $FF00, $0170, $0E50
|
||||||
.at
|
.at
|
||||||
dw $FF00, $FF00, $FF00, $FF00, $FF00, $FF00
|
dw $FF00, $FF00, $FF00, $FF00, $FF00, $FF00
|
||||||
.sp
|
.sp
|
||||||
dw $8759, $0ED0, $FF00, $FF00, $8759, $0ED0
|
dw $8790, $0FD0, $FF00, $FF00, $8790, $0FD0
|
||||||
.pod
|
.pod
|
||||||
dw $8F40, $0620, $FF00, $FF00, $8F40, $0620
|
dw $8F30, $06E0, $FF00, $FF00, $8F30, $06E0
|
||||||
.mm
|
.mm
|
||||||
dw $8100, $0CA0, $FF00, $FF00, $8100, $0CA0
|
dw $8160, $0D80, $FF00, $FF00, $8160, $0D80
|
||||||
.sw
|
.sw
|
||||||
dw $8082, $00B0, $FF00, $FF00, $8082, $00B0
|
dw $80F0, $0160, $FF00, $FF00, $80F0, $0160
|
||||||
.ip
|
.ip
|
||||||
dw $8CA0, $0DA0, $FF00, $FF00, $8CA0, $0DA0
|
dw $8CB0, $0E80, $FF00, $FF00, $8CB0, $0E80
|
||||||
.toh
|
.toh
|
||||||
dw $08D0, $0080, $FF00, $FF00, $08D0, $0080
|
dw $0900, $0130, $FF00, $FF00, $0900, $0130
|
||||||
.tt
|
.tt
|
||||||
dw $81D0, $0780, $FF00, $FF00, $81D0, $0780
|
dw $8240, $0840, $FF00, $FF00, $8240, $0840
|
||||||
.tr
|
.tr
|
||||||
dw $8F11, $0103, $FF00, $FF00, $8F11, $0103
|
dw $8F30, $01B0, $FF00, $FF00, $8F30, $01B0
|
||||||
.gt
|
.gt
|
||||||
dw $FF00, $FF00, $FF00, $FF00, $FF00, $FF00
|
dw $FF00, $FF00, $FF00, $FF00, $FF00, $FF00
|
||||||
|
|
||||||
@@ -324,21 +324,34 @@ WorldMap_DrawTile:
|
|||||||
SEP #$20
|
SEP #$20
|
||||||
LDX.b Scrap0B : TXA : STA.b (OAMPtr+2)
|
LDX.b Scrap0B : TXA : STA.b (OAMPtr+2)
|
||||||
INC.b OAMPtr+2
|
INC.b OAMPtr+2
|
||||||
JSR WorldMap_CalculateOAMCoordinates
|
|
||||||
LDX.b Scrap0A : BEQ +
|
|
||||||
LDA.b Scrap0E : CLC : ADC.b #$04 : STA.b Scrap0E
|
|
||||||
LDA.b Scrap0F : CLC : ADC.b #$04 : STA.b Scrap0F
|
|
||||||
+
|
|
||||||
LDX.b Scrap0B : BEQ +
|
|
||||||
LDA.b Scrap0E : SEC : SBC.b #$04 : STA.b Scrap0E
|
|
||||||
LDA.b Scrap0F : SEC : SBC.b #$04 : STA.b Scrap0F
|
|
||||||
+
|
|
||||||
REP #$20
|
REP #$20
|
||||||
PLA : STA.b Scrap00
|
LDA.l $7EC10A : BIT.w #$4000 : SEP #$20 : BNE .raw_coords ; use raw OAM coordinates
|
||||||
|
JSR WorldMap_CalculateOAMCoordinates
|
||||||
|
BCS .apply_offsets
|
||||||
|
REP #$20
|
||||||
|
BRA .exit
|
||||||
|
.raw_coords
|
||||||
|
STA.b Scrap0E
|
||||||
|
LDA.l $7EC108 : STA.b Scrap0F
|
||||||
|
.apply_offsets
|
||||||
|
LDX.b Scrap0A : BNE .aligned ; prize number/overlay: no offset
|
||||||
|
LDX.b Scrap0B : BEQ +
|
||||||
|
; 16x16 sprite: -8 pixels
|
||||||
|
LDA.b Scrap0E : SEC : SBC.b #$08 : STA.b Scrap0E
|
||||||
|
LDA.b Scrap0F : SBC.b #$08 : STA.b Scrap0F
|
||||||
|
BRA .aligned
|
||||||
|
+
|
||||||
|
; 8x8 sprite: -4 pixels
|
||||||
|
LDA.b Scrap0E : SEC : SBC.b #$04 : STA.b Scrap0E
|
||||||
|
LDA.b Scrap0F : SBC.b #$04 : STA.b Scrap0F
|
||||||
|
.aligned
|
||||||
|
REP #$20
|
||||||
LDA.b Scrap0E : STA.b (OAMPtr)
|
LDA.b Scrap0E : STA.b (OAMPtr)
|
||||||
INC.b OAMPtr : INC.b OAMPtr
|
INC.b OAMPtr : INC.b OAMPtr
|
||||||
LDA.b Scrap0C : STA.b (OAMPtr)
|
LDA.b Scrap0C : STA.b (OAMPtr)
|
||||||
INC.b OAMPtr : INC.b OAMPtr
|
INC.b OAMPtr : INC.b OAMPtr
|
||||||
|
.exit
|
||||||
|
PLA : STA.b Scrap00
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
; Y - dungeon index
|
; Y - dungeon index
|
||||||
@@ -423,6 +436,78 @@ WorldMap_CheckPrizeCollected:
|
|||||||
RTS
|
RTS
|
||||||
|
|
||||||
warnpc $8AC3B1
|
warnpc $8AC3B1
|
||||||
|
|
||||||
|
org $8AC3B6
|
||||||
|
; ---------------------------------------------------------------------------------------------------
|
||||||
|
; Y coordinate calculation: Quadratic approximation
|
||||||
|
; Formula: Y_oam = 0x16 + (Y * 118 >> 12) + ((Y>>4)^2 * 49 >> 8)
|
||||||
|
; Accurate to within ±1.5 pixels across entire range
|
||||||
|
; ---------------------------------------------------------------------------------------------------
|
||||||
|
REP #$20
|
||||||
|
LDA.l $7EC108 : ASL #4 ; world Y coordinate
|
||||||
|
PHA
|
||||||
|
; calculate linear term: (Y * 118) >> 12
|
||||||
|
SEP #$20
|
||||||
|
LDA.b #$76
|
||||||
|
JSR WorldMap_MultiplyAxB ; (Y>>4) * 118
|
||||||
|
REP #$20
|
||||||
|
STA.b Scrap00 ; linear term stored at high byte (Scrap01)
|
||||||
|
|
||||||
|
; calculate quadratic term: ((Y>>4)^2 * 49) >> 8
|
||||||
|
LDA.b 1,S
|
||||||
|
SEP #$20
|
||||||
|
XBA : TAX : XBA : TXA
|
||||||
|
JSR WorldMap_MultiplyAxB ; (Y>>4) ^ 2
|
||||||
|
LDA.b #$31
|
||||||
|
JSR WorldMap_MultiplyAxB ; multiply by 49
|
||||||
|
XBA ; quadratic term
|
||||||
|
|
||||||
|
; combine: 0x16 + linear_term + quadratic_term
|
||||||
|
CLC : ADC.b Scrap01 ; add linear term
|
||||||
|
ADC.b #$16 ; add fixed offset
|
||||||
|
STA.b Scrap0F
|
||||||
|
REP #$20
|
||||||
|
PLA ; world Y coordinate
|
||||||
|
|
||||||
|
; ---------------------------------------------------------------------------------------------------
|
||||||
|
; Calculate half_width for perspective: 91 + (Y_shifted * 28 / 256)
|
||||||
|
; The world map appears wider at the bottom than at the top, simulating perspective
|
||||||
|
; Top (Y=0): X range 0x26-0xDC (half-width: 91), Bottom (Y=FFF): X range 0x08-0xF6 (half-width: 119)
|
||||||
|
; ---------------------------------------------------------------------------------------------------
|
||||||
|
SEP #$20
|
||||||
|
LDA.b #$1C ; width increase factor
|
||||||
|
JSR WorldMap_MultiplyAxB
|
||||||
|
XBA : CLC : ADC.b #$5B ; add fixed half-width
|
||||||
|
STA.b Scrap00
|
||||||
|
|
||||||
|
; ---------------------------------------------------------------------------------------------------
|
||||||
|
; Calculate X offset: X_offset = (X_from_center * half_width * 2) / 256
|
||||||
|
; where X_from_center = (world_X >> 4) - 128
|
||||||
|
; The center X is at 129 (0x81)
|
||||||
|
; ---------------------------------------------------------------------------------------------------
|
||||||
|
REP #$20
|
||||||
|
LDA.l $7EC10A : LSR #4 ; world X coordinate
|
||||||
|
SEP #$20
|
||||||
|
SEC : SBC.b #$80 ; subtract 128 (center point)
|
||||||
|
PHP ; preserve carry
|
||||||
|
BPL + : EOR.b #$FF : INC : + ; absolute value
|
||||||
|
PHA
|
||||||
|
LDA.b Scrap00 : ASL : XBA ; half-width x 2
|
||||||
|
PLA
|
||||||
|
JSR WorldMap_MultiplyAxB
|
||||||
|
XBA
|
||||||
|
PLP : BCS +
|
||||||
|
STA.b Scrap00
|
||||||
|
LDA.b #$81 : SEC : SBC.b Scrap00 ; center X position - offset
|
||||||
|
BRA .store_and_exit
|
||||||
|
+ CLC : ADC.b #$81 ; center X position + offset
|
||||||
|
|
||||||
|
.store_and_exit
|
||||||
|
STA.b Scrap0E
|
||||||
|
SEP #$30
|
||||||
|
JMP WorldMap_CalculateOAMCoordinates_exit_successfully
|
||||||
|
|
||||||
|
warnpc $8AC433
|
||||||
pullpc
|
pullpc
|
||||||
|
|
||||||
WorldMap_LoadChrHalfSlot:
|
WorldMap_LoadChrHalfSlot:
|
||||||
|
|||||||
128
newhud.asm
128
newhud.asm
@@ -23,14 +23,8 @@ NewHUD_DrawBombs:
|
|||||||
BRA .draw
|
BRA .draw
|
||||||
|
|
||||||
.finite
|
.finite
|
||||||
LDA.w BombCapacity : BEQ .no_bomb_bag
|
|
||||||
LDA.w BombsEquipment
|
LDA.w BombsEquipment
|
||||||
JSR HUDHex2Digit
|
JSR HUDHex2Digit
|
||||||
BRA .draw
|
|
||||||
|
|
||||||
.no_bomb_bag
|
|
||||||
LDY.w #!BlankTile
|
|
||||||
TYX
|
|
||||||
|
|
||||||
.draw
|
.draw
|
||||||
STY.w HUDBombCount+0
|
STY.w HUDBombCount+0
|
||||||
@@ -152,23 +146,14 @@ NewHUD_DrawDungeonCounters:
|
|||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
NewHUD_DrawPrizeIcon:
|
NewHUD_DrawPrizeIcon:
|
||||||
REP #$10
|
REP #$10
|
||||||
SEP #$20
|
SEP #$20
|
||||||
LDA.b GameMode
|
LDA.b GameMode
|
||||||
CMP.b #$12 : BEQ .no_prize
|
CMP.b #$12 : BEQ .no_prize
|
||||||
CMP.b #$0E : BNE .check_hud_flag
|
CMP.b #$0E : BEQ +
|
||||||
LDA.b GameSubMode
|
LDA.l UpdateHUDFlag : BEQ NewHUD_DrawItemCounter
|
||||||
CMP.b #$03 : BNE .check_dungeon
|
+
|
||||||
LDA.w SubModuleInterface
|
LDA.w DungeonID
|
||||||
CMP.b #$06 : BNE .check_hud_flag
|
|
||||||
LDA.l $7EC22A
|
|
||||||
BRA .know_dungeon
|
|
||||||
|
|
||||||
.check_hud_flag
|
|
||||||
LDA.l UpdateHUDFlag : BEQ NewHUD_DrawItemCounter
|
|
||||||
.check_dungeon
|
|
||||||
LDA.w DungeonID
|
|
||||||
.know_dungeon
|
|
||||||
CMP.b #$1A : BCS .no_prize
|
CMP.b #$1A : BCS .no_prize
|
||||||
CMP.b #$04 : BCC .no_prize
|
CMP.b #$04 : BCC .no_prize
|
||||||
CMP.b #$08 : BNE .dungeon
|
CMP.b #$08 : BNE .dungeon
|
||||||
@@ -185,19 +170,19 @@ NewHUD_DrawPrizeIcon:
|
|||||||
LDA.l MapMode
|
LDA.l MapMode
|
||||||
|
|
||||||
REP #$30
|
REP #$30
|
||||||
BEQ .prize
|
BEQ .prize
|
||||||
|
|
||||||
LDA.w MapField
|
LDA.w MapField
|
||||||
AND.l DungeonItemMasks,X
|
AND.l DungeonItemMasks,X
|
||||||
BEQ .no_prize
|
BEQ .no_prize
|
||||||
|
|
||||||
.prize
|
.prize
|
||||||
TYX
|
TYX
|
||||||
LDA.l CrystalPendantFlags_3,X : AND.w #$00FF
|
LDA.l CrystalPendantFlags_3,X : AND.w #$00FF
|
||||||
ASL : TAX
|
ASL : TAX
|
||||||
LDA.l PrizeIconTiles_Transparent,X : BEQ .no_icon
|
LDA.l PrizeIconTiles_Transparent,X : BEQ .no_icon
|
||||||
TAY
|
TAY
|
||||||
BRA .draw_prize
|
BRA .draw_prize
|
||||||
|
|
||||||
.pendant
|
.pendant
|
||||||
LDY.w #!PTile
|
LDY.w #!PTile
|
||||||
@@ -460,15 +445,6 @@ HUDHex4Digit_Long:
|
|||||||
REP #$20
|
REP #$20
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
;================================================================================
|
|
||||||
ClearHearts:
|
|
||||||
LDA.w #!BlankTile
|
|
||||||
LDX.b #$14
|
|
||||||
- STA.l HUDTileMapBuffer+$066, X
|
|
||||||
STA.l HUDTileMapBuffer+$0A6, X
|
|
||||||
DEX #2
|
|
||||||
BPL -
|
|
||||||
RTS
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
UpdateHearts:
|
UpdateHearts:
|
||||||
PHB
|
PHB
|
||||||
@@ -479,22 +455,6 @@ UpdateHearts:
|
|||||||
PHX
|
PHX
|
||||||
PLB
|
PLB
|
||||||
|
|
||||||
; OHKO mode
|
|
||||||
LDA.l ChallengeModes : AND.w #$0003 : CMP.w #$0001 : BNE +
|
|
||||||
LDA.w #$240A
|
|
||||||
STA.l HUDTileMapBuffer+$068
|
|
||||||
INC
|
|
||||||
STA.l HUDTileMapBuffer+$06A
|
|
||||||
INC
|
|
||||||
STA.l HUDTileMapBuffer+$06C
|
|
||||||
JMP .skip_partial
|
|
||||||
+
|
|
||||||
|
|
||||||
; Gloom mode
|
|
||||||
LDA.l ChallengeModes : AND.w #$0003 : CMP.w #$0002 : BNE +
|
|
||||||
JSR ClearHearts
|
|
||||||
+
|
|
||||||
|
|
||||||
LDA.w MaximumHealth
|
LDA.w MaximumHealth
|
||||||
LSR
|
LSR
|
||||||
LSR
|
LSR
|
||||||
@@ -514,11 +474,11 @@ UpdateHearts:
|
|||||||
CPX.b #$01
|
CPX.b #$01
|
||||||
BMI .done_hearts
|
BMI .done_hearts
|
||||||
|
|
||||||
PHX
|
PHX
|
||||||
LDA.l HUDHeartColors_index : ASL : TAX
|
LDA.l HUDHeartColors_index : ASL : TAX
|
||||||
LDA.l HUDHeartColors_masks_game_hud,X
|
LDA.l HUDHeartColors_masks_game_hud,X
|
||||||
PLX
|
PLX
|
||||||
ORA.w #$20A0
|
ORA.w #$20A0
|
||||||
|
|
||||||
CPY.b #$01
|
CPY.b #$01
|
||||||
BPL .add_heart
|
BPL .add_heart
|
||||||
@@ -560,16 +520,16 @@ UpdateHearts:
|
|||||||
CMP.w #$0005
|
CMP.w #$0005
|
||||||
BCS .more_than_half
|
BCS .more_than_half
|
||||||
|
|
||||||
LDA.l HUDHeartColors_index : ASL : TAX
|
LDA.l HUDHeartColors_index : ASL : TAX
|
||||||
LDA.l HUDHeartColors_masks_game_hud,X
|
LDA.l HUDHeartColors_masks_game_hud,X
|
||||||
ORA.w #$20A1
|
ORA.w #$20A1
|
||||||
STA.b (Scrap09)
|
STA.b (Scrap09)
|
||||||
BRA .skip_partial
|
BRA .skip_partial
|
||||||
|
|
||||||
.more_than_half
|
.more_than_half
|
||||||
LDA.l HUDHeartColors_index : ASL : TAX
|
LDA.l HUDHeartColors_index : ASL : TAX
|
||||||
LDA.l HUDHeartColors_masks_game_hud,X
|
LDA.l HUDHeartColors_masks_game_hud,X
|
||||||
ORA.w #$20A0
|
ORA.w #$20A0
|
||||||
STA.b (Scrap09)
|
STA.b (Scrap09)
|
||||||
|
|
||||||
.skip_partial
|
.skip_partial
|
||||||
@@ -579,29 +539,29 @@ UpdateHearts:
|
|||||||
RTL
|
RTL
|
||||||
|
|
||||||
CheckHeartPaletteFileSelect:
|
CheckHeartPaletteFileSelect:
|
||||||
LDA.l HUDHeartColors_index : ASL : TAX
|
LDA.l HUDHeartColors_index : ASL : TAX
|
||||||
LDA.l HUDHeartColors_masks_file_select,X
|
LDA.l HUDHeartColors_masks_file_select,X
|
||||||
ORA.w #$0200
|
ORA.w #$0200
|
||||||
LDX.w #$000A
|
LDX.w #$000A
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
CheckHeartPalette:
|
CheckHeartPalette:
|
||||||
PHX
|
PHX
|
||||||
LDA.l HUDHeartColors_index : ASL : TAX
|
LDA.l HUDHeartColors_index : ASL : TAX
|
||||||
LDA.l HUDHeartColors_masks_game_hud,X
|
LDA.l HUDHeartColors_masks_game_hud,X
|
||||||
ORA.w #$20A0
|
ORA.w #$20A0
|
||||||
PLX
|
PLX
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
ColorAnimatedHearts:
|
ColorAnimatedHearts:
|
||||||
PHX
|
PHX
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA.l HUDHeartColors_index : ASL : TAX
|
LDA.l HUDHeartColors_index : ASL : TAX
|
||||||
LDA.l HUDHeartColors_masks_game_hud,X
|
LDA.l HUDHeartColors_masks_game_hud,X
|
||||||
PLX
|
PLX
|
||||||
ORA.l HeartFramesBaseTiles,X
|
ORA.l HeartFramesBaseTiles,X
|
||||||
STA.b [Scrap00],Y
|
STA.b [Scrap00],Y
|
||||||
SEP #$20
|
SEP #$20
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
HeartFramesBaseTiles:
|
HeartFramesBaseTiles:
|
||||||
|
|||||||
@@ -188,12 +188,10 @@ ItemBehavior:
|
|||||||
BRA .store_inventory_tracking
|
BRA .store_inventory_tracking
|
||||||
|
|
||||||
.flute_inactive
|
.flute_inactive
|
||||||
LDA.b #$00 : STA.l FluteBitfield
|
|
||||||
LDA.l InventoryTracking : ORA.b #$02
|
LDA.l InventoryTracking : ORA.b #$02
|
||||||
BRA .store_inventory_tracking
|
BRA .store_inventory_tracking
|
||||||
|
|
||||||
.flute_active
|
.flute_active
|
||||||
LDA.b #$00 : STA.l FluteBitfield
|
|
||||||
LDA.l InventoryTracking : ORA.b #$01
|
LDA.l InventoryTracking : ORA.b #$01
|
||||||
BRA .store_inventory_tracking
|
BRA .store_inventory_tracking
|
||||||
|
|
||||||
@@ -1190,7 +1188,7 @@ MaybeFlagCompassTotalPickup:
|
|||||||
RTL
|
RTL
|
||||||
|
|
||||||
MaybeFlagMapTotalPickup:
|
MaybeFlagMapTotalPickup:
|
||||||
; LDA.l MapHUDMode : AND.b #$0F : BEQ .done
|
LDA.l MapHUDMode : AND.b #$0F : BEQ .done
|
||||||
LDA.w DungeonID : BMI .done
|
LDA.w DungeonID : BMI .done
|
||||||
LDA.w ItemReceiptID : CMP.b #$33 : BEQ .set_flag
|
LDA.w ItemReceiptID : CMP.b #$33 : BEQ .set_flag
|
||||||
REP #$20
|
REP #$20
|
||||||
@@ -1212,7 +1210,7 @@ MaybeFlagDungeonTotalsEntrance:
|
|||||||
LDA.l CompassMode : AND.w #$000F : BEQ .maps ; Skip if we're not showing compass counts
|
LDA.l CompassMode : AND.w #$000F : BEQ .maps ; Skip if we're not showing compass counts
|
||||||
JSR FlagCompassCount
|
JSR FlagCompassCount
|
||||||
.maps
|
.maps
|
||||||
LDA.l MapHUDMode : AND.w #$000F
|
LDA.l MapHUDMode : AND.w #$000F : BEQ .done
|
||||||
LDX.w DungeonID
|
LDX.w DungeonID
|
||||||
JSR FlagMapCount
|
JSR FlagMapCount
|
||||||
.done
|
.done
|
||||||
|
|||||||
355
owrando.asm
355
owrando.asm
@@ -6,18 +6,18 @@ OWFlags:
|
|||||||
dw 0
|
dw 0
|
||||||
OWReserved:
|
OWReserved:
|
||||||
dw 0
|
dw 0
|
||||||
|
OWFog:
|
||||||
|
db 0 ; 0: disabled - 1: fog clears after visiting either world version of a screen - 2: fog clears after visiting the current world version of a screen
|
||||||
org $aa8010
|
org $aa8010
|
||||||
OWVersionInfo:
|
OWVersionInfo:
|
||||||
dw $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000
|
dw $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000
|
||||||
|
|
||||||
;Hooks
|
;Hooks
|
||||||
org $82a929
|
org $82a92C
|
||||||
OWDetectTransitionReturn:
|
JSL OWDetectEdgeTransition ; JSL Link_CheckForEdgeScreenTransition
|
||||||
|
|
||||||
org $82a939
|
org $82a936
|
||||||
OverworldHandleTransitions_SpecialTrigger:
|
OverworldHandleTransitions_PerformEdgeTransition:
|
||||||
JSL OWDetectEdgeTransition
|
|
||||||
BCS OWDetectTransitionReturn
|
|
||||||
|
|
||||||
org $82a999
|
org $82a999
|
||||||
jsl OWEdgeTransition : nop #4 ;LDA $02A4E3,X : ORA $7EF3CA
|
jsl OWEdgeTransition : nop #4 ;LDA $02A4E3,X : ORA $7EF3CA
|
||||||
@@ -106,20 +106,34 @@ jsl OWOldManSpeed
|
|||||||
org $8aba6c ; < ? - Bank0a.asm:474 ()
|
org $8aba6c ; < ? - Bank0a.asm:474 ()
|
||||||
jsl OWMapWorldCheck16 : nop
|
jsl OWMapWorldCheck16 : nop
|
||||||
|
|
||||||
; Mixed Overworld Map
|
; Custom Overworld Map
|
||||||
org $8ABA99
|
org $8ABA99
|
||||||
WorldMap_LoadDarkWorldMap:
|
WorldMap_LoadDarkWorldMap:
|
||||||
LDA.b GameMode : CMP.b #$14 ; attract module
|
LDA.b GameMode : CMP.b #$14 ; attract module
|
||||||
BEQ .vanilla_light
|
BEQ .vanilla_light
|
||||||
LDA.l OWMode+1 : AND.b #!FLAG_OW_MIXED : BNE .mixed
|
LDA.l OWFlags : AND.b #!FLAG_OW_CUSTOM_MAP : BNE .custom
|
||||||
LDA.b OverworldIndex : AND.b #$40
|
LDA.b OverworldIndex : AND.b #$40
|
||||||
BEQ .vanilla_light
|
BEQ .vanilla_light
|
||||||
.mixed
|
.custom
|
||||||
PHB : PHK : PLB
|
STZ.b ScrapBuffer72 ; clear tile swap flag
|
||||||
JSL LoadMapDarkOrMixed
|
JSL LoadMapDarkOrCustom_long
|
||||||
PLB
|
NOP #2
|
||||||
|
warnpc $8ABAB5
|
||||||
.vanilla_light ; $0ABAB5
|
.vanilla_light ; $0ABAB5
|
||||||
|
|
||||||
|
org $8ABB32
|
||||||
|
JSL LoadMapOppositeWorld
|
||||||
|
|
||||||
|
org $8ABF78
|
||||||
|
JSL WorldMap_SkipHandleSprites
|
||||||
|
|
||||||
|
org $8ABA22
|
||||||
|
JSL MoveLinkMapSprite
|
||||||
|
|
||||||
|
org $8ABFF0
|
||||||
|
JSL MoveMirrorPortalMapSprite
|
||||||
|
; Could insert similar hooks at $8AB860 and $8AB8AC for flute spots
|
||||||
|
|
||||||
;(replacing -> LDA $8A : AND.b #$40)
|
;(replacing -> LDA $8A : AND.b #$40)
|
||||||
org $80d8c4 ; < ? - Bank00.asm:4068 ()
|
org $80d8c4 ; < ? - Bank00.asm:4068 ()
|
||||||
jsl OWWorldCheck
|
jsl OWWorldCheck
|
||||||
@@ -227,6 +241,7 @@ OWMapWorldCheck16:
|
|||||||
{
|
{
|
||||||
lda.b GameMode : cmp.w #$0014 : beq .return ; attract module, return with Z flag cleared
|
lda.b GameMode : cmp.w #$0014 : beq .return ; attract module, return with Z flag cleared
|
||||||
jsl OWWorldCheck16
|
jsl OWWorldCheck16
|
||||||
|
eor.b ScrapBuffer72 ; apply tile swap flag
|
||||||
.return
|
.return
|
||||||
rtl
|
rtl
|
||||||
}
|
}
|
||||||
@@ -320,7 +335,6 @@ OWLightWorldOrCrossed:
|
|||||||
|
|
||||||
OWFluteCancel:
|
OWFluteCancel:
|
||||||
{
|
{
|
||||||
lda.l FluteBitfield : cmp.b #$FF : beq +
|
|
||||||
lda.l OWFlags+1 : and.b #$01 : bne +
|
lda.l OWFlags+1 : and.b #$01 : bne +
|
||||||
jsl FluteMenu_LoadTransport : rtl
|
jsl FluteMenu_LoadTransport : rtl
|
||||||
+ lda.w RandoOverworldTargetEdge : bne +
|
+ lda.w RandoOverworldTargetEdge : bne +
|
||||||
@@ -332,10 +346,8 @@ OWFluteCancel2:
|
|||||||
lda.b Joy1B_All : ora.b Joy1A_All : and.b #$c0 : bne +
|
lda.b Joy1B_All : ora.b Joy1A_All : and.b #$c0 : bne +
|
||||||
jml FluteMenu_HandleSelection_NoSelection
|
jml FluteMenu_HandleSelection_NoSelection
|
||||||
+ inc.w SubModuleInterface
|
+ inc.w SubModuleInterface
|
||||||
lda.l FluteBitfield : cmp.b #$FF : beq .cancel
|
|
||||||
lda.l OWFlags+1 : and.b #$01 : beq +
|
lda.l OWFlags+1 : and.b #$01 : beq +
|
||||||
lda.b Joy1B_All : cmp.b #$40 : bne +
|
lda.b Joy1B_All : cmp.b #$40 : bne +
|
||||||
.cancel
|
|
||||||
lda.b #$01 : sta.w RandoOverworldTargetEdge
|
lda.b #$01 : sta.w RandoOverworldTargetEdge
|
||||||
+ rtl
|
+ rtl
|
||||||
}
|
}
|
||||||
@@ -387,51 +399,110 @@ OWMarkVisited:
|
|||||||
RTL
|
RTL
|
||||||
}
|
}
|
||||||
|
|
||||||
LoadMapDarkOrMixed:
|
LoadMapDarkOrCustom:
|
||||||
{
|
{
|
||||||
CMP.b #!FLAG_OW_MIXED : REP #$30 : BEQ .mixed
|
CMP.b #!FLAG_OW_CUSTOM_MAP : REP #$30 : BEQ .custom
|
||||||
LDX.w #$03FE ; draw vanilla Dark World (what we wrote over)
|
LDX.w #$03FE ; draw vanilla Dark World (what we wrote over)
|
||||||
.copy_next
|
.copy_next
|
||||||
LDA.w WorldMap_DarkWorldTilemap,X : STA.w GFXStripes,X
|
LDA.w WorldMap_DarkWorldTilemap,X : STA.w GFXStripes,X
|
||||||
DEX : DEX : BPL .copy_next
|
DEX : DEX : BPL .copy_next
|
||||||
BRL .end
|
BRL .end
|
||||||
.mixed
|
.custom
|
||||||
LDX.b OverworldIndex
|
LDX.b OverworldIndex
|
||||||
LDA.l OWTileWorldAssoc,X
|
LDA.l OWTileWorldAssoc,X
|
||||||
|
AND.w #$0040
|
||||||
|
EOR.b ScrapBuffer72 ; apply tile swap flag
|
||||||
|
BEQ .draw_lw
|
||||||
|
LDA.w #OWMapGridDark
|
||||||
|
BRA .draw_dw
|
||||||
|
.draw_lw
|
||||||
|
LDA.w #OWMapGridLight
|
||||||
|
.draw_dw
|
||||||
STA.b Scrap00
|
STA.b Scrap00
|
||||||
LDY.w #$139C
|
LDA.w #OWMapGridLight>>16 ; current program bank
|
||||||
LDX.w #$003F
|
STA.b Scrap02
|
||||||
.next_screen
|
LDX.w #$139C
|
||||||
PHX
|
LDY.w #$003F
|
||||||
LDA.l OWTileWorldAssoc,X
|
.next_cell
|
||||||
EOR.b Scrap00
|
PHY
|
||||||
AND.w #$0040
|
JSR GetOWMapTilemapOffsetToCopy
|
||||||
BEQ .light
|
.copy_cell ; more efficient to have X on the right side
|
||||||
TYX : BRA .copy_screen
|
TAY
|
||||||
.light
|
LDA.w WorldMap_LightWorldTilemap+$00,Y : STA.b $00,X
|
||||||
TXA : AND.w #$0024 : LSR : TAX
|
LDA.w WorldMap_LightWorldTilemap+$02,Y : STA.b $02,X
|
||||||
TYA : SEC : SBC.l LWQuadrantOffsets,X
|
LDA.w WorldMap_LightWorldTilemap+$20,Y : STA.b $20,X
|
||||||
TYX : TAY
|
LDA.w WorldMap_LightWorldTilemap+$22,Y : STA.b $22,X
|
||||||
.copy_screen ; more efficient to have X on the right side
|
LDA.w WorldMap_LightWorldTilemap+$40,Y : STA.b $40,X
|
||||||
LDA.w $C739+$00,Y : STA.b $00,X
|
LDA.w WorldMap_LightWorldTilemap+$42,Y : STA.b $42,X
|
||||||
LDA.w $C739+$02,Y : STA.b $02,X
|
LDA.w WorldMap_LightWorldTilemap+$60,Y : STA.b $60,X
|
||||||
LDA.w $C739+$20,Y : STA.b $20,X
|
LDA.w WorldMap_LightWorldTilemap+$62,Y : STA.b $62,X
|
||||||
LDA.w $C739+$22,Y : STA.b $22,X
|
PLY
|
||||||
LDA.w $C739+$40,Y : STA.b $40,X
|
DEX : DEX : DEX : DEX ; move one screen left
|
||||||
LDA.w $C739+$42,Y : STA.b $42,X
|
TYA : AND.w #$0007 : BNE .same_row
|
||||||
LDA.w $C739+$60,Y : STA.b $60,X
|
TXA : SEC : SBC.w #$0060 : TAX ; move one screen row up
|
||||||
LDA.w $C739+$62,Y : STA.b $62,X
|
|
||||||
TXY : PLX
|
|
||||||
DEY : DEY : DEY : DEY ; move one screen left
|
|
||||||
TXA : AND.w #$0007 : BNE .same_row
|
|
||||||
TYA : SEC : SBC.w #$0060 : TAY ; move one screen row up
|
|
||||||
.same_row
|
.same_row
|
||||||
DEX
|
DEY
|
||||||
BPL .next_screen
|
BPL .next_cell
|
||||||
.end
|
.end
|
||||||
SEP #$30
|
SEP #$30
|
||||||
LDA.b #$15 : STA.b NMIINCR ; what we wrote over
|
LDA.b #$15 : STA.b NMIINCR ; what we wrote over
|
||||||
RTL
|
RTS
|
||||||
|
}
|
||||||
|
|
||||||
|
GetOWMapTilemapOffsetToCopy:
|
||||||
|
{
|
||||||
|
LDA.l OWFog : AND.w #$00FF
|
||||||
|
CMP.w #$0001 : BEQ .parallel_fog
|
||||||
|
CMP.w #$0002 : BNE .no_fog
|
||||||
|
|
||||||
|
LDA.b [Scrap00],Y : AND.w #$00FF
|
||||||
|
PHX
|
||||||
|
TAX
|
||||||
|
BIT.w #$0040
|
||||||
|
BEQ .light_fog
|
||||||
|
LDA.l Overworld_ActualScreenID-$40,X : ORA.w #$0040
|
||||||
|
BRA .dark_fog
|
||||||
|
.light_fog
|
||||||
|
LDA.l Overworld_ActualScreenID,X
|
||||||
|
.dark_fog
|
||||||
|
AND.w #$00FF
|
||||||
|
TAX
|
||||||
|
LDA.l OverworldEventDataWRAM,X
|
||||||
|
.check_visited_flag
|
||||||
|
PLX
|
||||||
|
AND.w #$0080 : BNE .no_fog
|
||||||
|
LDA.w #($D350-$C739)
|
||||||
|
RTS
|
||||||
|
|
||||||
|
.parallel_fog
|
||||||
|
LDA.b [Scrap00],Y : AND.w #$003F
|
||||||
|
PHX
|
||||||
|
TAX
|
||||||
|
LDA.l Overworld_ActualScreenID,X
|
||||||
|
AND.w #$00FF
|
||||||
|
TAX
|
||||||
|
LDA.l OverworldEventDataWRAM,X
|
||||||
|
ORA.l OverworldEventDataWRAM+$40,X
|
||||||
|
BRA .check_visited_flag
|
||||||
|
|
||||||
|
.no_fog
|
||||||
|
LDA.b [Scrap00],Y : AND.w #$0038 : ASL : ASL : ASL : ASL
|
||||||
|
STA.b Scrap03
|
||||||
|
LDA.b [Scrap00],Y
|
||||||
|
BIT.w #$0040
|
||||||
|
BEQ .light
|
||||||
|
AND.w #$0007
|
||||||
|
ASL : ASL : ADC.w #$1000 : ADC.b Scrap03
|
||||||
|
RTS
|
||||||
|
.light
|
||||||
|
PHX
|
||||||
|
AND.w #$0024 : LSR : TAX
|
||||||
|
LDA.b [Scrap00],Y
|
||||||
|
AND.w #$0007
|
||||||
|
ASL : ASL : ADC.w #$1000 : ADC.b Scrap03
|
||||||
|
SEC : SBC.l LWQuadrantOffsets,X
|
||||||
|
PLX
|
||||||
|
RTS
|
||||||
|
|
||||||
LWQuadrantOffsets:
|
LWQuadrantOffsets:
|
||||||
dw $1000-$0210 ; top left
|
dw $1000-$0210 ; top left
|
||||||
@@ -441,6 +512,91 @@ LoadMapDarkOrMixed:
|
|||||||
dw $0400+$0210 ; bottom right
|
dw $0400+$0210 ; bottom right
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LoadMapDarkOrCustom_long:
|
||||||
|
{
|
||||||
|
PHB : LDA.b #WorldMap_DarkWorldTilemap>>16 : PHA : PLB
|
||||||
|
LDA.l OWFlags : AND.b #!FLAG_OW_CUSTOM_MAP
|
||||||
|
JSR LoadMapDarkOrCustom
|
||||||
|
PLB
|
||||||
|
RTL
|
||||||
|
}
|
||||||
|
LoadMapOppositeWorld:
|
||||||
|
{
|
||||||
|
LDA.l OWFlags : AND.b #!FLAG_OW_ADJUST_DYNAMIC_MAP_SPRITE_POSITION : BEQ .vanilla
|
||||||
|
LDA.b ScrapBuffer72 : BEQ +
|
||||||
|
LDA.b Joy1B_All : AND.b #$30 : BNE .vanilla
|
||||||
|
STZ.b ScrapBuffer72 ; clear tile swap flag
|
||||||
|
BRA .new_tiles
|
||||||
|
+ LDA.b Joy1B_New : AND.b #$30 : BEQ .vanilla
|
||||||
|
LDA.b #$40 : STA.b ScrapBuffer72 ; set tile swap flag
|
||||||
|
.new_tiles
|
||||||
|
JSL OverworldMap_InitGfx+$10 ; load palette
|
||||||
|
DEC.w SubModuleInterface
|
||||||
|
LDA.b #$0F : STA.b INIDISPQ
|
||||||
|
JSL LoadMapDarkOrCustom_long
|
||||||
|
LDA.b #$24 : STA.w SFX3
|
||||||
|
PLA : PLA : PEA.w $BBAF ; skip everything upon return
|
||||||
|
.vanilla
|
||||||
|
LDA.b Joy1B_New : AND.b #$70 ; what we wrote over
|
||||||
|
RTL
|
||||||
|
}
|
||||||
|
WorldMap_SkipHandleSprites:
|
||||||
|
{
|
||||||
|
LDA.l OWFlags : AND.b #!FLAG_OW_ADJUST_DYNAMIC_MAP_SPRITE_POSITION : BEQ .vanilla
|
||||||
|
LDA.b ScrapBuffer72 : BEQ .vanilla ; skip draw if no tile swap
|
||||||
|
PLA : PLA : PEA.w $C3AF ; exit without drawing sprites
|
||||||
|
RTL
|
||||||
|
.vanilla
|
||||||
|
LDA.b FrameCounter : AND.b #$10 ; what we wrote over
|
||||||
|
RTL
|
||||||
|
}
|
||||||
|
|
||||||
|
MoveLinkMapSprite:
|
||||||
|
{
|
||||||
|
STA.l $7EC10A ; what we overwrote
|
||||||
|
SEP #$20
|
||||||
|
JSR MoveMapSprite
|
||||||
|
REP #$20
|
||||||
|
RTL
|
||||||
|
}
|
||||||
|
|
||||||
|
MoveMirrorPortalMapSprite:
|
||||||
|
{
|
||||||
|
STA.l $7EC109 ; what we overwrote
|
||||||
|
JSR MoveMapSprite
|
||||||
|
RTL
|
||||||
|
}
|
||||||
|
|
||||||
|
MoveMapSprite:
|
||||||
|
{
|
||||||
|
LDA.l OWFlags : AND.b #!FLAG_OW_ADJUST_DYNAMIC_MAP_SPRITE_POSITION : BEQ .return
|
||||||
|
LDA.l $7EC10B : AND.b #$0E : LSR
|
||||||
|
STA.b Scrap00
|
||||||
|
LDA.l $7EC109 : AND.b #$0E : ASL : ASL
|
||||||
|
ADC.b Scrap00
|
||||||
|
STA.b Scrap00
|
||||||
|
LDX.b OverworldIndex
|
||||||
|
LDA.l OWTileWorldAssoc,X
|
||||||
|
LDX.b Scrap00
|
||||||
|
AND.b #$40
|
||||||
|
BEQ .light
|
||||||
|
LDA.l OWMapGridDarkPositionByAbsolutePosition,X
|
||||||
|
BRA .dark
|
||||||
|
.light
|
||||||
|
LDA.l OWMapGridLightPositionByAbsolutePosition,X
|
||||||
|
.dark
|
||||||
|
TAX
|
||||||
|
AND.b #$07 : ASL
|
||||||
|
STA.b Scrap00
|
||||||
|
LDA.l $7EC10B : AND.b #$01 : ORA.b Scrap00 : STA.l $7EC10B
|
||||||
|
TXA
|
||||||
|
AND.b #$38 : LSR : LSR
|
||||||
|
STA.b Scrap00
|
||||||
|
LDA.l $7EC109 : AND.b #$01 : ORA.b Scrap00 : STA.l $7EC109
|
||||||
|
.return
|
||||||
|
RTS
|
||||||
|
}
|
||||||
|
|
||||||
OWBonkDropPrepSprite:
|
OWBonkDropPrepSprite:
|
||||||
{
|
{
|
||||||
LDA.b IndoorsFlag : BEQ +
|
LDA.b IndoorsFlag : BEQ +
|
||||||
@@ -609,27 +765,26 @@ OWBonkDrops:
|
|||||||
JSL OWBonkSpritePrep
|
JSL OWBonkSpritePrep
|
||||||
|
|
||||||
.mark_collected ; S = Collected, FlagBitmask, X (row + 2)
|
.mark_collected ; S = Collected, FlagBitmask, X (row + 2)
|
||||||
PLA : BNE + ; S = FlagBitmask, X (row + 2)
|
PLA : BEQ + : - : JMP .return : + ; S = FlagBitmask, X (row + 2)
|
||||||
TYX : JSL Sprite_IsOnscreen : BCC +
|
TYX : JSL Sprite_IsOnscreen : BCC -
|
||||||
LDA.b IndoorsFlag : BEQ ++
|
LDA.b IndoorsFlag : BEQ +
|
||||||
LDA.l RoomDataWRAM[$0120].high : ORA.b 1,S : STA.l RoomDataWRAM[$0120].high
|
LDA.l RoomDataWRAM[$0120].high : ORA.b 1,S : STA.l RoomDataWRAM[$0120].high
|
||||||
LDA.w $0400 : ORA.b 1,S : STA.w $0400
|
LDA.w $0400 : ORA.b 1,S : STA.w $0400
|
||||||
BRA .increment_collection
|
BRA .increment_collection
|
||||||
++
|
+
|
||||||
LDA.b OverworldIndex
|
LDA.b OverworldIndex
|
||||||
BIT.b #$40 : BEQ +
|
BIT.b #$40 : BEQ +
|
||||||
LDA.l ProgressIndicator : CMP.b #$02
|
LDA.l ProgressIndicator : CMP.b #$02
|
||||||
LDA.b OverworldIndex : BCS ++ : AND.b #$BF
|
LDA.b OverworldIndex : BCS + : AND.b #$BF
|
||||||
++
|
|
||||||
+
|
+
|
||||||
TAX : LDA.l OverworldEventDataWRAM,X : ORA.b 1,S : STA.l OverworldEventDataWRAM,X
|
TAX : LDA.l OverworldEventDataWRAM,X : ORA.b 1,S : STA.l OverworldEventDataWRAM,X
|
||||||
|
|
||||||
.increment_collection
|
.increment_collection
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA.l TotalItemCounter : INC : STA.l TotalItemCounter
|
LDA.l TotalItemCounter : INC : STA.l TotalItemCounter
|
||||||
INC.w UpdateHUDFlag
|
|
||||||
SEP #$20
|
SEP #$20
|
||||||
+ BRA .return
|
LDA.b #$01 : STA.l UpdateHUDFlag
|
||||||
|
BRA .return
|
||||||
|
|
||||||
; spawn itemget item
|
; spawn itemget item
|
||||||
.spawn_item ; A = item id ; Y = bonk sprite slot ; S = Collected, FlagBitmask, X (row + 2)
|
.spawn_item ; A = item id ; Y = bonk sprite slot ; S = Collected, FlagBitmask, X (row + 2)
|
||||||
@@ -738,20 +893,29 @@ OWBonkSpritePrep:
|
|||||||
org $aa9000
|
org $aa9000
|
||||||
OWDetectEdgeTransition:
|
OWDetectEdgeTransition:
|
||||||
{
|
{
|
||||||
JSL OWDestroyItemSprites
|
JSL Link_CheckForEdgeScreenTransition ; what we wrote over
|
||||||
|
BCS .return
|
||||||
STZ.w RandoOverworldWalkDist
|
STZ.w RandoOverworldWalkDist
|
||||||
LDA.l OWMode : ORA.l OWMode+1 : BEQ .vanilla
|
LDA.l OWMode : ORA.l OWMode+1 : BEQ .vanilla
|
||||||
|
PHY
|
||||||
JSR OWShuffle
|
JSR OWShuffle
|
||||||
LDA.w RandoOverworldTargetEdge : BMI .special
|
PLY
|
||||||
|
LDA.w RandoOverworldTargetEdge : BMI .specialOrDisabled
|
||||||
.vanilla
|
.vanilla
|
||||||
REP #$31 : LDX.b Scrap02 : LDA.b OverworldMap16Buffer ; what we wrote over
|
CLC ; allow transition
|
||||||
RTL
|
RTL
|
||||||
|
.specialOrDisabled
|
||||||
|
CMP.b #$FF : BNE .special
|
||||||
|
STZ.w RandoOverworldTargetEdge
|
||||||
|
PHB
|
||||||
|
JML Link_CheckForEdgeScreenTransition_prevent_transition
|
||||||
.special
|
.special
|
||||||
REP #$30
|
REP #$30
|
||||||
AND.w #$0003 : TAY : ASL : TAX
|
AND.w #$0003 : TAY : ASL : TAX
|
||||||
LDA.w #$007F : STA.w RandoOverworldTargetEdge
|
LDA.w #$007F : STA.w RandoOverworldTargetEdge
|
||||||
JSR OWLoadSpecialArea
|
JSR OWLoadSpecialArea
|
||||||
SEC
|
SEC
|
||||||
|
.return
|
||||||
RTL
|
RTL
|
||||||
}
|
}
|
||||||
OWDetectSpecialTransition:
|
OWDetectSpecialTransition:
|
||||||
@@ -761,17 +925,23 @@ OWDetectSpecialTransition:
|
|||||||
TXA : AND.w #$0002 : LSR
|
TXA : AND.w #$0002 : LSR
|
||||||
STA.w RandoOverworldTerrain
|
STA.w RandoOverworldTerrain
|
||||||
LDA.l OWSpecialDestIndex,X : BIT.w #$0080 : BEQ .switch_to_edge
|
LDA.l OWSpecialDestIndex,X : BIT.w #$0080 : BEQ .switch_to_edge
|
||||||
|
AND.w #$00FF : CMP.w #$00FF : BEQ .disabled
|
||||||
AND.w #$0003 : TAY : ASL : TAX
|
AND.w #$0003 : TAY : ASL : TAX
|
||||||
.normal
|
.normal
|
||||||
JSR OWLoadSpecialArea
|
JSR OWLoadSpecialArea
|
||||||
.return
|
.return
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
|
.disabled
|
||||||
|
SEP #$30
|
||||||
|
STZ.w RandoOverworldTargetEdge
|
||||||
|
RTL
|
||||||
|
|
||||||
.switch_to_edge
|
.switch_to_edge
|
||||||
STA.w RandoOverworldTargetEdge
|
STA.w RandoOverworldTargetEdge
|
||||||
LDA.l OWEdgeDataOffset,X : STA.w RandoOverworldEdgeAddr
|
LDA.l OWEdgeDataOffset,X : STA.w RandoOverworldEdgeAddr
|
||||||
PLA : SEP #$30 : PLA ; delete 3 bytes from stack
|
PLA : SEP #$30 : PLA ; delete 3 bytes from stack
|
||||||
JSL Link_CheckForEdgeScreenTransition : BCS .return ; Link_CheckForEdgeScreenTransition
|
JSL Link_CheckForEdgeScreenTransition : BCS .return
|
||||||
LDA.l Overworld_CheckForSpecialOverworldTrigger_Direction,X : STA.b Scrap00 : CMP.b #$08 : BNE .hobo
|
LDA.l Overworld_CheckForSpecialOverworldTrigger_Direction,X : STA.b Scrap00 : CMP.b #$08 : BNE .hobo
|
||||||
LSR : STA.b LinkPosY : STZ.b BG2V ; move Link and camera to edge
|
LSR : STA.b LinkPosY : STZ.b BG2V ; move Link and camera to edge
|
||||||
LDA.b #$06 : STA.b Scrap02
|
LDA.b #$06 : STA.b Scrap02
|
||||||
@@ -790,16 +960,15 @@ OWDetectSpecialTransition:
|
|||||||
LDA.b #$FF : STA.b LinkRecoilZ : STA.b $C7
|
LDA.b #$FF : STA.b LinkRecoilZ : STA.b $C7
|
||||||
STZ.b $3D : STZ.b LinkSpeed : STZ.w $032B : STZ.w LinkDashing : STZ.b LinkState
|
STZ.b $3D : STZ.b LinkSpeed : STZ.w $032B : STZ.w LinkDashing : STZ.b LinkState
|
||||||
.not_dashing
|
.not_dashing
|
||||||
PLA : REP #$31 : PLA ; delete 3 bytes from stack
|
PLA : PLA : PLA ; delete 3 bytes from stack
|
||||||
LDX.b Scrap02
|
JML OverworldHandleTransitions_PerformEdgeTransition
|
||||||
LDA.b OverworldMap16Buffer
|
|
||||||
JML OverworldHandleTransitions_SpecialTrigger+6
|
|
||||||
}
|
}
|
||||||
OWEdgeTransition:
|
OWEdgeTransition:
|
||||||
{
|
{
|
||||||
LDA.l OWMode : ORA.l OWMode+1 : BEQ .unshuffled
|
LDA.l OWMode : ORA.l OWMode+1 : BEQ .unshuffled
|
||||||
LDY.w RandoOverworldTargetEdge : STZ.w RandoOverworldTargetEdge
|
LDY.w RandoOverworldTargetEdge : STZ.w RandoOverworldTargetEdge
|
||||||
CPY.b #$7F : BEQ .unshuffled
|
CPY.b #$7F : BEQ .unshuffled
|
||||||
|
JSL OWDestroyItemSprites
|
||||||
REP #$10
|
REP #$10
|
||||||
LDX.w RandoOverworldEdgeAddr
|
LDX.w RandoOverworldEdgeAddr
|
||||||
PHB : PHK : PLB
|
PHB : PHK : PLB
|
||||||
@@ -1488,7 +1657,7 @@ dw $0b28, $0b38, $0010, $0b30, $1515, $1018, $0001, $000e
|
|||||||
dw $0b70, $0ba0, $0030, $0b88, $1515, $1020, $0000, $000f
|
dw $0b70, $0ba0, $0030, $0b88, $1515, $1020, $0000, $000f
|
||||||
dw $0a40, $0b10, $00d0, $0aa8, $1d1d, $1006, $0000, $0010
|
dw $0a40, $0b10, $00d0, $0aa8, $1d1d, $1006, $0000, $0010
|
||||||
dw $0350, $0390, $0040, $0370, $1821, $2060, $0000, $0011
|
dw $0350, $0390, $0040, $0370, $1821, $2060, $0000, $0011
|
||||||
dw $0670, $06a8, $0038, $068c, $1b23, $2002, $0000, $0012
|
dw $0670, $06a8, $0038, $068c, $1b23, $2004, $0000, $0012
|
||||||
dw $0898, $09b0, $0118, $0924, $1b24, $2054, $0000, $0013
|
dw $0898, $09b0, $0118, $0924, $1b24, $2054, $0000, $0013
|
||||||
dw $0a40, $0ba0, $0160, $0af0, $2525, $100e, $0000, $0014
|
dw $0a40, $0ba0, $0160, $0af0, $2525, $100e, $0000, $0014
|
||||||
dw $0c70, $0c90, $0020, $0c80, $1e26, $2002, $0000, $0015
|
dw $0c70, $0c90, $0020, $0c80, $1e26, $2002, $0000, $0015
|
||||||
@@ -1520,7 +1689,7 @@ dw $0b28, $0b38, $0010, $0b30, $5555, $1018, $0001, $002e
|
|||||||
dw $0b70, $0ba0, $0030, $0b88, $5555, $1020, $0000, $002f
|
dw $0b70, $0ba0, $0030, $0b88, $5555, $1020, $0000, $002f
|
||||||
dw $0a40, $0b10, $00d0, $0aa8, $5d5d, $1006, $0000, $0030
|
dw $0a40, $0b10, $00d0, $0aa8, $5d5d, $1006, $0000, $0030
|
||||||
dw $0350, $0390, $0040, $0370, $5861, $2060, $0000, $0031
|
dw $0350, $0390, $0040, $0370, $5861, $2060, $0000, $0031
|
||||||
dw $0670, $06a8, $0038, $068c, $5b63, $2002, $0000, $0032
|
dw $0670, $06a8, $0038, $068c, $5b63, $2004, $0000, $0032
|
||||||
dw $0898, $09b0, $0118, $0924, $5b64, $2054, $0000, $0033
|
dw $0898, $09b0, $0118, $0924, $5b64, $2054, $0000, $0033
|
||||||
dw $0a40, $0ba0, $0160, $0af0, $6565, $100e, $0000, $0034
|
dw $0a40, $0ba0, $0160, $0af0, $6565, $100e, $0000, $0034
|
||||||
dw $0c70, $0c90, $0020, $0c80, $5e66, $2002, $0000, $0035
|
dw $0c70, $0c90, $0020, $0c80, $5e66, $2002, $0000, $0035
|
||||||
@@ -1827,16 +1996,42 @@ db $74, $4e, $10, $b1, $00, $1c
|
|||||||
UWBonkPrizeData:
|
UWBonkPrizeData:
|
||||||
db $ff, $00, $02, $b5, $00, $08
|
db $ff, $00, $02, $b5, $00, $08
|
||||||
|
|
||||||
; temporary fix - murahdahla replaces one of the bonk tree prizes
|
org $AABC80 ;PC 153C80
|
||||||
; so we copy the sprite table here and update the pointer
|
OWMapGridLight:
|
||||||
; longterm solution should be to spawn in murahdahla separately
|
db $00, $01, $02, $03, $04, $05, $06, $07
|
||||||
org $89AE2A
|
db $08, $09, $0A, $0B, $0C, $0D, $0E, $0F
|
||||||
Overworld_Sprites_Screen1A_2:
|
db $10, $11, $12, $13, $14, $15, $16, $17
|
||||||
db $08, $0F, $41 ; yx:{ 0x080, 0x0F0 }
|
db $18, $19, $1A, $1B, $1C, $1D, $1E, $1F
|
||||||
db $0E, $0C, $41 ; yx:{ 0x0E0, 0x0C0 }
|
db $20, $21, $22, $23, $24, $25, $26, $27
|
||||||
db $11, $0D, $E3 ; yx:{ 0x110, 0x0D0 }
|
db $28, $29, $2A, $2B, $2C, $2D, $2E, $2F
|
||||||
db $18, $0A, $D8 ; yx:{ 0x180, 0x0A0 }
|
db $30, $31, $32, $33, $34, $35, $36, $37
|
||||||
db $18, $0F, $45 ; yx:{ 0x180, 0x0F0 }
|
db $38, $39, $3A, $3B, $3C, $3D, $3E, $3F
|
||||||
db $FF ; END
|
OWMapGridDark:
|
||||||
org $89CA55
|
db $40, $41, $42, $43, $44, $45, $46, $47
|
||||||
dw Overworld_Sprites_Screen1A_2&$FFFF
|
db $48, $49, $4A, $4B, $4C, $4D, $4E, $4F
|
||||||
|
db $50, $51, $52, $53, $54, $55, $56, $57
|
||||||
|
db $58, $59, $5A, $5B, $5C, $5D, $5E, $5F
|
||||||
|
db $60, $61, $62, $63, $64, $65, $66, $67
|
||||||
|
db $68, $69, $6A, $6B, $6C, $6D, $6E, $6F
|
||||||
|
db $70, $71, $72, $73, $74, $75, $76, $77
|
||||||
|
db $78, $79, $7A, $7B, $7C, $7D, $7E, $7F
|
||||||
|
|
||||||
|
org $AABD00 ;PC 153D00
|
||||||
|
OWMapGridLightPositionByAbsolutePosition:
|
||||||
|
db $00, $01, $02, $03, $04, $05, $06, $07
|
||||||
|
db $08, $09, $0A, $0B, $0C, $0D, $0E, $0F
|
||||||
|
db $10, $11, $12, $13, $14, $15, $16, $17
|
||||||
|
db $18, $19, $1A, $1B, $1C, $1D, $1E, $1F
|
||||||
|
db $20, $21, $22, $23, $24, $25, $26, $27
|
||||||
|
db $28, $29, $2A, $2B, $2C, $2D, $2E, $2F
|
||||||
|
db $30, $31, $32, $33, $34, $35, $36, $37
|
||||||
|
db $38, $39, $3A, $3B, $3C, $3D, $3E, $3F
|
||||||
|
OWMapGridDarkPositionByAbsolutePosition:
|
||||||
|
db $00, $01, $02, $03, $04, $05, $06, $07
|
||||||
|
db $08, $09, $0A, $0B, $0C, $0D, $0E, $0F
|
||||||
|
db $10, $11, $12, $13, $14, $15, $16, $17
|
||||||
|
db $18, $19, $1A, $1B, $1C, $1D, $1E, $1F
|
||||||
|
db $20, $21, $22, $23, $24, $25, $26, $27
|
||||||
|
db $28, $29, $2A, $2B, $2C, $2D, $2E, $2F
|
||||||
|
db $30, $31, $32, $33, $34, $35, $36, $37
|
||||||
|
db $38, $39, $3A, $3B, $3C, $3D, $3E, $3F
|
||||||
|
|||||||
22
ram.asm
22
ram.asm
@@ -114,8 +114,6 @@ RoomIndex = $7E00A0 ; Underworld room index. Word length. High byt
|
|||||||
; Not zeroed on exit to overworld.
|
; Not zeroed on exit to overworld.
|
||||||
PreviousRoom = $7E00A2 ; Stores previous value of RoomIndex
|
PreviousRoom = $7E00A2 ; Stores previous value of RoomIndex
|
||||||
;
|
;
|
||||||
CurrentFloor = $7E00A4 ; Current floor in dungeos
|
|
||||||
;
|
|
||||||
CameraBoundH = $7E00A6 ; Which set of camera boundaries to use.
|
CameraBoundH = $7E00A6 ; Which set of camera boundaries to use.
|
||||||
CameraBoundV = $7E00A7 ;
|
CameraBoundV = $7E00A7 ;
|
||||||
;
|
;
|
||||||
@@ -196,8 +194,6 @@ BottleMenuCounter = $7E0205 ; Step counter for opening bottle menu
|
|||||||
MenuFrameCounter = $7E0206 ; Incremented every menu frame. Never read.
|
MenuFrameCounter = $7E0206 ; Incremented every menu frame. Never read.
|
||||||
MenuBlink = $7E0207 ; Incremented every frame and masked with $10 to blink cursor
|
MenuBlink = $7E0207 ; Incremented every frame and masked with $10 to blink cursor
|
||||||
;
|
;
|
||||||
DungeonMapCurrentFloor = $7E020E ;
|
|
||||||
;
|
|
||||||
RaceGameFlag = $7E021B ;
|
RaceGameFlag = $7E021B ;
|
||||||
;
|
;
|
||||||
MessageJunk = $7E0223 ; Zeroed but never used (?)
|
MessageJunk = $7E0223 ; Zeroed but never used (?)
|
||||||
@@ -235,6 +231,8 @@ CurrentYItem = $7E0303 ;
|
|||||||
AButtonAct = $7E0308 ; Bitfield for A-actions. $80 = Carry/toss | $02 Prayer | $01 = Tree pull
|
AButtonAct = $7E0308 ; Bitfield for A-actions. $80 = Carry/toss | $02 Prayer | $01 = Tree pull
|
||||||
CarryAct = $7E0309 ; Bitfield for carrying. $02 = Tossing | $01 = Lifting
|
CarryAct = $7E0309 ; Bitfield for carrying. $02 = Tossing | $01 = Lifting
|
||||||
;
|
;
|
||||||
|
LinkIFrames = $7E031F ; Countdown for Link's invincibility frames after taking damage.
|
||||||
|
;
|
||||||
LinkSwimDirection = $7E0340 ; Bitfield for swim direction. (.... udlr)
|
LinkSwimDirection = $7E0340 ; Bitfield for swim direction. (.... udlr)
|
||||||
;
|
;
|
||||||
LinkDeepWater = $7E0345 ; Set when Link is in deep water.
|
LinkDeepWater = $7E0345 ; Set when Link is in deep water.
|
||||||
@@ -351,7 +349,6 @@ DynamicDropGFXSlots = $7E07F1 ; Assume future use of this up to $0E bytes, t
|
|||||||
; which item gfx is currently occupying each slot
|
; which item gfx is currently occupying each slot
|
||||||
OAMBuffer = $7E0800 ; Main OAM buffer sent to OAM. $200 bytes.
|
OAMBuffer = $7E0800 ; Main OAM buffer sent to OAM. $200 bytes.
|
||||||
OAMBuffer2 = $7E0A00 ;
|
OAMBuffer2 = $7E0A00 ;
|
||||||
OAMBufferAux = $7E0A20 ; high X-bit and size bit sent to OAM, one byte per sprite
|
|
||||||
;
|
;
|
||||||
TransparencyFlag = $7E0ABD ; Flags transparency effects e.g. in Thieves Town Hellway
|
TransparencyFlag = $7E0ABD ; Flags transparency effects e.g. in Thieves Town Hellway
|
||||||
;
|
;
|
||||||
@@ -473,8 +470,6 @@ RoomStripes = $7E1100 ; Used for room drawing.
|
|||||||
;
|
;
|
||||||
MirrorPortalPosXH = $7E1ACF ; Mirror portal position. (High byte of X coordinate)
|
MirrorPortalPosXH = $7E1ACF ; Mirror portal position. (High byte of X coordinate)
|
||||||
;
|
;
|
||||||
FluteSelection = $7E1AF0 ; Currently selected flute spot (zero-indexed)
|
|
||||||
;
|
|
||||||
IrisPtr = $7E1B00 ; Spotlight pointers for HDMA. $1C0 bytes (?).
|
IrisPtr = $7E1B00 ; Spotlight pointers for HDMA. $1C0 bytes (?).
|
||||||
;
|
;
|
||||||
MessageSubModule = $7E1CD8 ;
|
MessageSubModule = $7E1CD8 ;
|
||||||
@@ -565,17 +560,6 @@ PegColor = $7EC172 ;
|
|||||||
;
|
;
|
||||||
GameOverSongCache = $7EC227 ;
|
GameOverSongCache = $7EC227 ;
|
||||||
;
|
;
|
||||||
CachedDungeonID = $7EC22A ; Cached while opening dungeon map
|
|
||||||
CachedCurrentFloor = $7EC22B ; to restore when closing
|
|
||||||
;
|
|
||||||
CurrentDisplayedRoom = $7EC22C ; 2 bytes, used by dungeon map
|
|
||||||
DisplayedRoomDoorIndex = $7EC22E ; 2 bytes, used by dungeon map
|
|
||||||
;
|
|
||||||
DoorSlots = $7EC230 ; $32 bytes, used by dungeon map
|
|
||||||
DoorSlotScratch = $7EC262 ; 6 bytes, used by dungeon map
|
|
||||||
DoorSlotCursor = $7EC268 ; 2 bytes, used by dungeon map
|
|
||||||
CurrentDoorEntrance = $7EC26A ; 2 bytes, used by dungeon map
|
|
||||||
;
|
|
||||||
LastBGSet = $7EC2F8 ; Lists loaded sheets to check for decompression. 4 bytes.
|
LastBGSet = $7EC2F8 ; Lists loaded sheets to check for decompression. 4 bytes.
|
||||||
;
|
;
|
||||||
PaletteBufferAux = $7EC300 ; Secondary and main palette buffer. See symbols_wram.asm
|
PaletteBufferAux = $7EC300 ; Secondary and main palette buffer. See symbols_wram.asm
|
||||||
@@ -874,6 +858,8 @@ endmacro
|
|||||||
%assertRAM(UseY1, $7E0301)
|
%assertRAM(UseY1, $7E0301)
|
||||||
%assertRAM(CurrentYItem, $7E0303)
|
%assertRAM(CurrentYItem, $7E0303)
|
||||||
%assertRAM(AButtonAct, $7E0308)
|
%assertRAM(AButtonAct, $7E0308)
|
||||||
|
%assertRAM(CarryAct, $7E0309)
|
||||||
|
%assertRAM(LinkIFrames, $7E031F)
|
||||||
%assertRAM(LinkSwimDirection, $7E0340)
|
%assertRAM(LinkSwimDirection, $7E0340)
|
||||||
%assertRAM(LinkDeepWater, $7E0345)
|
%assertRAM(LinkDeepWater, $7E0345)
|
||||||
%assertRAM(TileActIce, $7E0348)
|
%assertRAM(TileActIce, $7E0348)
|
||||||
|
|||||||
5
sram.asm
5
sram.asm
@@ -190,10 +190,7 @@ ItemLimitCounts: skip 16 ; Keeps track of limited non-progressive items s
|
|||||||
; See: ItemSubstitutionRules in tables.asm
|
; See: ItemSubstitutionRules in tables.asm
|
||||||
; Right now this is only used for three items but extra space is
|
; Right now this is only used for three items but extra space is
|
||||||
; reserved
|
; reserved
|
||||||
skip 34 ; Unused
|
skip 37 ; Unused
|
||||||
FluteBitfield: skip 1 ;
|
|
||||||
SpecialWeaponLevel: skip 1 ; keeps track of level in special weapon modes
|
|
||||||
ItemOnB: skip 1 ; NYI
|
|
||||||
ProgressIndicator: skip 1 ; $00 = Pre-Uncle | $01 = Post-Uncle item | $02 = Zelda Rescued
|
ProgressIndicator: skip 1 ; $00 = Pre-Uncle | $01 = Post-Uncle item | $02 = Zelda Rescued
|
||||||
; $03 = Agahnim 1 defeated
|
; $03 = Agahnim 1 defeated
|
||||||
; $04 and above don't do anything. $00-$02 used in standard mode
|
; $04 and above don't do anything. $00-$02 used in standard mode
|
||||||
|
|||||||
@@ -98,20 +98,11 @@ RTL
|
|||||||
;================================================================================
|
;================================================================================
|
||||||
CheckGanonHammerDamage:
|
CheckGanonHammerDamage:
|
||||||
LDA.l HammerableGanon : BEQ +
|
LDA.l HammerableGanon : BEQ +
|
||||||
LDA.w SpriteTypeTable, X : CMP.b #$D8 ; original behavior except ganon
|
LDA.w SpriteTypeTable, X : CMP.b #$D8 ; original behavior except ganon
|
||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
LDA.l GanonVulnerabilityItem : CMP.b #$0C : BEQ .hammer_silvers
|
|
||||||
LDA.w SpriteTypeTable, X : CMP.b #$D6 ; original behavior
|
LDA.w SpriteTypeTable, X : CMP.b #$D6 ; original behavior
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
.hammer_silvers
|
|
||||||
LDA.w SpriteTypeTable, X : CMP.b #$D8 : BCC +
|
|
||||||
RTL
|
|
||||||
+ CMP.b #$D6 : BNE +
|
|
||||||
RTL
|
|
||||||
+ CLC
|
|
||||||
RTL
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
GetSmithSword:
|
GetSmithSword:
|
||||||
JSL ItemCheck_SmithSword : BEQ + : JML Smithy_AlreadyGotSword : +
|
JSL ItemCheck_SmithSword : BEQ + : JML Smithy_AlreadyGotSword : +
|
||||||
|
|||||||
61
tables.asm
61
tables.asm
@@ -91,39 +91,7 @@ SmithSword:
|
|||||||
db $02 ; #$02 = Tempered Sword (default)
|
db $02 ; #$02 = Tempered Sword (default)
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; 0x18002B (Unused)
|
; 0x18002B- 0x180030 (Unused)
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
; 0x18002C (Reserved for Allowed Item on B)
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $B0802D
|
|
||||||
ChallengeModes:
|
|
||||||
; p--- mmdd
|
|
||||||
; p - permadeath
|
|
||||||
; m - movement modes (0 - normal, 1 - permanent ice physics)
|
|
||||||
; d - damage modes (0 - normal, 1 - ohko, 2 - gloom)
|
|
||||||
db $00
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $B0802E
|
|
||||||
GanonVulnerabilityItem:
|
|
||||||
db $00 ; $00 = default behavior (silver arrows)
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $B0902F
|
|
||||||
SpecialWeapons:
|
|
||||||
db #$00
|
|
||||||
; s - - - m m m m (bitfield) - NYI
|
|
||||||
; s - only swords damage can hurt enemies
|
|
||||||
; m - special weapon mode
|
|
||||||
; $00 = Off (default)
|
|
||||||
; $01 = Bomb mode
|
|
||||||
; $02 = Pseudosword
|
|
||||||
; $03 = Byrna mode
|
|
||||||
; $04 = Somaria mode
|
|
||||||
; $05 = Canes mode
|
|
||||||
; $06 = Bee mode
|
|
||||||
; $07 = Unused
|
|
||||||
; $08 = Bugnet mode
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
; 0x180030 (Unused)
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $B08031 ; PC 0x180031
|
org $B08031 ; PC 0x180031
|
||||||
EnableEasterEggs:
|
EnableEasterEggs:
|
||||||
@@ -143,7 +111,7 @@ dw $000A ; #$0A - Default (10 decimal)
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $B08038 ; PC 0x180038
|
org $B08038 ; PC 0x180038
|
||||||
LampCone:
|
LampCone:
|
||||||
db $01 ; #$00 = Off - #$01 = On in Sewers (default) - #$10 = On Always - #$20 = No Dark Rooms
|
db $01 ; #$00 = Off - #$01 = Sewers only (default) - #$11 = Always On
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $B08039 ; PC 0x180039
|
org $B08039 ; PC 0x180039
|
||||||
ItemCounterHUD:
|
ItemCounterHUD:
|
||||||
@@ -455,23 +423,7 @@ db $01 ; #$00 = Original Behavior - #$01 = Randomizer Behavior (Default)
|
|||||||
Bugfix_PodEG:
|
Bugfix_PodEG:
|
||||||
db $01 ; #$00 = Original Behavior - #$01 = Randomizer Behavior (Default)
|
db $01 ; #$00 = Original Behavior - #$01 = Randomizer Behavior (Default)
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $B080A5 ; PC 0x1800A5
|
; 0x1800A5 - 0x1800AF (unused)
|
||||||
MimicDash:
|
|
||||||
db $00 ; #$00 = Original Behavior (default) - #$01 = Mimics move when link dashes
|
|
||||||
CrystalSwitchBook:
|
|
||||||
db $00 ; #$00 = Original Behavior (default) - #$01 = Book can flip crystal switch
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
; 0x1800A7 - 0x1800AE (unused)
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
; 0x1800AF
|
|
||||||
; m-ff ffff
|
|
||||||
;
|
|
||||||
; m - 0 = only shorten timer on multiworld items, 1 = shorten all items
|
|
||||||
; f - number of frames to show items
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
org $B080AF ; PC 0x1800AF
|
|
||||||
JunkItemTimer:
|
|
||||||
db $00 ; number of frames to show junk items (#$00 = no change)
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $B080B0 ; 0x1800B0-0x1800BF
|
org $B080B0 ; 0x1800B0-0x1800BF
|
||||||
StaticDecryptionKey:
|
StaticDecryptionKey:
|
||||||
@@ -789,7 +741,7 @@ HeartContainer_Vitreous:
|
|||||||
HeartContainer_Trinexx:
|
HeartContainer_Trinexx:
|
||||||
db $3E
|
db $3E
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; 0x18015A - 0x18015F (unused) [encrypted]
|
; 0x180159 - 0x18015F (unused) [encrypted]
|
||||||
;================================================================================
|
;================================================================================
|
||||||
org $B08160 ; PC 0x180160 - 0x180162
|
org $B08160 ; PC 0x180160 - 0x180162
|
||||||
BonkKey_Desert:
|
BonkKey_Desert:
|
||||||
@@ -1584,7 +1536,6 @@ dw $0000
|
|||||||
; STAIRS3
|
; STAIRS3
|
||||||
; STAIRS4
|
; STAIRS4
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $B0DA00
|
|
||||||
RoomHeaders:
|
RoomHeaders:
|
||||||
org $B0DA00 : RoomHeader_0000: ; pc 0x185A00
|
org $B0DA00 : RoomHeader_0000: ; pc 0x185A00
|
||||||
db $41, $21, $13, $22, $07, $3D, $00, $00, $00, $10, $C0, $00, $00, $04
|
db $41, $21, $13, $22, $07, $3D, $00, $00, $00, $10, $C0, $00, $00, $04
|
||||||
@@ -2664,7 +2615,7 @@ db #$00, #$00, #$00, #$00, #$00, #$00, #$00, #$00, #$00, #$00, #$00, #$00, #$00,
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $B0EFE0 ; PC 0x186FE0-0x186FEF
|
org $B0EFE0 ; PC 0x186FE0-0x186FEF
|
||||||
CrystalPendantFlags_3:
|
CrystalPendantFlags_3:
|
||||||
db $00 ; Sewers
|
db $00 ; Sewers
|
||||||
db $00 ; Hyrule Castle
|
db $00 ; Hyrule Castle
|
||||||
db $08 ; Eastern Palace
|
db $08 ; Eastern Palace
|
||||||
db $09 ; Desert Palace
|
db $09 ; Desert Palace
|
||||||
@@ -2672,7 +2623,7 @@ CrystalPendantFlags_3:
|
|||||||
db $02 ; Swamp Palace
|
db $02 ; Swamp Palace
|
||||||
db $01 ; Palace of Darkness
|
db $01 ; Palace of Darkness
|
||||||
db $06 ; Misery Mire
|
db $06 ; Misery Mire
|
||||||
db $03 ; Skull Woods
|
db $03 ; Skull Woods
|
||||||
db $05 ; Ice Palace
|
db $05 ; Ice Palace
|
||||||
db $0A ; Tower of Hera
|
db $0A ; Tower of Hera
|
||||||
db $04 ; Thieves' Town
|
db $04 ; Thieves' Town
|
||||||
|
|||||||
33
timer.asm
33
timer.asm
@@ -7,25 +7,25 @@
|
|||||||
!FRAMES_PER_HOUR = 60*60*60
|
!FRAMES_PER_HOUR = 60*60*60
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
macro DecIncr(value)
|
macro DecIncr(value)
|
||||||
LDA.l <value> : INC
|
LDA.w <value> : INC
|
||||||
CMP.w #$000A : !BLT ?noIncr
|
CMP.w #$000A : !BLT ?noIncr
|
||||||
LDA.l <value>+2 : INC : STA.l <value>+2
|
LDA.w <value>+2 : INC : STA.w <value>+2
|
||||||
LDA.w #$0000
|
LDA.w #$0000
|
||||||
?noIncr:
|
?noIncr:
|
||||||
STA.l <value>
|
STA.w <value>
|
||||||
endmacro
|
endmacro
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
macro Sub32(minuend,subtrahend,result)
|
macro Sub32(minuend,subtrahend,result)
|
||||||
LDA.l <minuend>
|
LDA.l <minuend>
|
||||||
!SUB.l <subtrahend> ; perform subtraction on the LSBs
|
!SUB.l <subtrahend> ; perform subtraction on the LSBs
|
||||||
STA.l <result>
|
STA.w <result>
|
||||||
LDA.l <minuend>+2 ; do the same for the MSBs, with carry
|
LDA.l <minuend>+2 ; do the same for the MSBs, with carry
|
||||||
SBC.l <subtrahend>+2 ; set according to the previous result
|
SBC.l <subtrahend>+2 ; set according to the previous result
|
||||||
STA.l <result>+2
|
STA.w <result>+2
|
||||||
endmacro
|
endmacro
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
macro Blt32(value1,value2)
|
macro Blt32(value1,value2)
|
||||||
LDA.l <value1>+2
|
LDA.w <value1>+2
|
||||||
CMP.l <value2>+2
|
CMP.l <value2>+2
|
||||||
!BLT ?done
|
!BLT ?done
|
||||||
BNE ?done
|
BNE ?done
|
||||||
@@ -50,7 +50,7 @@ CalculateTimer:
|
|||||||
%Sub32(ChallengeTimer,NMIFrames,ClockBuffer)
|
%Sub32(ChallengeTimer,NMIFrames,ClockBuffer)
|
||||||
++
|
++
|
||||||
|
|
||||||
%Blt32(ClockBuffer,.halfCycle) : !BGE +++ : JMP + : +++
|
%Blt32(ClockBuffer,.halfCycle) : !BLT +
|
||||||
LDA.l TimeoutBehavior : AND.w #$00FF : BNE ++ ; DNF
|
LDA.l TimeoutBehavior : AND.w #$00FF : BNE ++ ; DNF
|
||||||
LDA.w #$0002 : STA.l ClockStatus ; Set DNF Mode
|
LDA.w #$0002 : STA.l ClockStatus ; Set DNF Mode
|
||||||
LDA.l NMIFrames : STA.l ChallengeTimer
|
LDA.l NMIFrames : STA.l ChallengeTimer
|
||||||
@@ -66,17 +66,6 @@ CalculateTimer:
|
|||||||
LDA.l NMIFrames : STA.l ChallengeTimer
|
LDA.l NMIFrames : STA.l ChallengeTimer
|
||||||
LDA.l NMIFrames+2 : STA.l ChallengeTimer+2
|
LDA.l NMIFrames+2 : STA.l ChallengeTimer+2
|
||||||
RTS
|
RTS
|
||||||
++ CMP.w #$0004 : BNE ++ ; Drop Into Ganon
|
|
||||||
LDA.w $048E
|
|
||||||
BEQ .already_ganon
|
|
||||||
LDA.w #$0002 : STA.l ClockStatus ; Set DNF Mode
|
|
||||||
LDA.w #$0011 : STA.b GameMode
|
|
||||||
SEP #$20
|
|
||||||
LDA.b #$7B
|
|
||||||
STA.w $010E
|
|
||||||
REP #$20
|
|
||||||
.already_ganon
|
|
||||||
RTS
|
|
||||||
++ ; End Game
|
++ ; End Game
|
||||||
SEP #$30
|
SEP #$30
|
||||||
JSL ActivateGoal
|
JSL ActivateGoal
|
||||||
@@ -144,13 +133,6 @@ DrawChallengeTimer:
|
|||||||
LDA.w #$247F : STA.l HUDTileMapBuffer+$98
|
LDA.w #$247F : STA.l HUDTileMapBuffer+$98
|
||||||
STA.l HUDTileMapBuffer+$9A
|
STA.l HUDTileMapBuffer+$9A
|
||||||
BRA +++
|
BRA +++
|
||||||
++ CMP.w #$0004 : BNE ++ ; Ganon
|
|
||||||
LDA.w #$247F : STA.l HUDTileMapBuffer+$92
|
|
||||||
STA.l HUDTileMapBuffer+$94
|
|
||||||
STA.l HUDTileMapBuffer+$96
|
|
||||||
STA.l HUDTileMapBuffer+$98
|
|
||||||
STA.l HUDTileMapBuffer+$9A
|
|
||||||
BRA +++
|
|
||||||
++ ; OHKO
|
++ ; OHKO
|
||||||
LDA.w #$280A : STA.l HUDTileMapBuffer+$94
|
LDA.w #$280A : STA.l HUDTileMapBuffer+$94
|
||||||
LDA.w #$280B : STA.l HUDTileMapBuffer+$96
|
LDA.w #$280B : STA.l HUDTileMapBuffer+$96
|
||||||
@@ -181,7 +163,6 @@ RTL
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
OHKOTimer:
|
OHKOTimer:
|
||||||
LDA.l OHKOFlag : BNE .kill
|
LDA.l OHKOFlag : BNE .kill
|
||||||
LDA.l ChallengeModes : AND.b #$03 : CMP.b #$01 : BEQ .kill
|
|
||||||
LDA.l TimeoutBehavior : CMP.b #$02 : BNE +
|
LDA.l TimeoutBehavior : CMP.b #$02 : BNE +
|
||||||
LDA.l ClockStatus : AND.b #$02 : BEQ +
|
LDA.l ClockStatus : AND.b #$02 : BEQ +
|
||||||
.kill
|
.kill
|
||||||
|
|||||||
@@ -99,6 +99,7 @@ HandleFollowersAfterMirroring = $87AA8B
|
|||||||
LinkHop_FindArbitraryLandingSpot = $87E359
|
LinkHop_FindArbitraryLandingSpot = $87E359
|
||||||
Link_HandleMovingAnimation_FullLongEntry = $87E68F
|
Link_HandleMovingAnimation_FullLongEntry = $87E68F
|
||||||
Link_CheckForEdgeScreenTransition = $87F413
|
Link_CheckForEdgeScreenTransition = $87F413
|
||||||
|
Link_CheckForEdgeScreenTransition_prevent_transition = $87F42C
|
||||||
Sprite_CheckIfPlayerPreoccupied = $87F4AA
|
Sprite_CheckIfPlayerPreoccupied = $87F4AA
|
||||||
FlashGanonTowerPalette_next_thunder = $87FA81
|
FlashGanonTowerPalette_next_thunder = $87FA81
|
||||||
FlashGanonTowerPalette_bright_white = $87FAAC
|
FlashGanonTowerPalette_bright_white = $87FAAC
|
||||||
@@ -221,6 +222,8 @@ Ancilla29_MilestoneItemReceipt_skip_crystal_sfx = $88CAE5
|
|||||||
Ancilla29_MilestoneItemReceipt_no_sparkle = $88CB2E
|
Ancilla29_MilestoneItemReceipt_no_sparkle = $88CB2E
|
||||||
Ancilla_SetOAM_XY = $88F6F3
|
Ancilla_SetOAM_XY = $88F6F3
|
||||||
Ancilla_AddAncilla = $899CCE
|
Ancilla_AddAncilla = $899CCE
|
||||||
|
WorldMap_CalculateOAMCoordinates_exit_successfully = $8AC51F
|
||||||
|
WorldMap_MultiplyAxB = $8AC57F
|
||||||
UpdateHUD = $8DDFA9
|
UpdateHUD = $8DDFA9
|
||||||
UpdateEquippedItem = $8DDFAF
|
UpdateEquippedItem = $8DDFAF
|
||||||
DrawProgressIcons = $8DE9C8
|
DrawProgressIcons = $8DE9C8
|
||||||
@@ -274,33 +277,22 @@ GFXSheetPointers_background_bank = $80CFC0
|
|||||||
GFXSheetPointers_background_high = $80D09F
|
GFXSheetPointers_background_high = $80D09F
|
||||||
GFXSheetPointers_background_low = $80D17E
|
GFXSheetPointers_background_low = $80D17E
|
||||||
LayerOfDestination = $81C31F
|
LayerOfDestination = $81C31F
|
||||||
RoomData_ChestItems = $81E96C
|
|
||||||
AnimatedTileSheets = $82802E
|
AnimatedTileSheets = $82802E
|
||||||
Module1B_SpawnSelect_spawns = $828481
|
Module1B_SpawnSelect_spawns = $828481
|
||||||
Overworld_ActualScreenID = $82A4E3
|
Overworld_ActualScreenID = $82A4E3
|
||||||
UnderworldTransitionLandingCoordinate = $82C034
|
UnderworldTransitionLandingCoordinate = $82C034
|
||||||
Overworld_FinalizeEntryOntoScreen_Data = $82C176
|
Overworld_FinalizeEntryOntoScreen_Data = $82C176
|
||||||
EntranceData_room_id = $82C577
|
|
||||||
EntranceData_y_coordinate = $82CCBD
|
|
||||||
EntranceData_x_coordinate = $82CDC7
|
|
||||||
EntranceData_dungeon_id = $82D1EF
|
|
||||||
EntranceData_layer = $82D2F9
|
|
||||||
EntranceData_song = $82D592
|
EntranceData_song = $82D592
|
||||||
SpawnPointData_room_id = $82D8D2
|
SpawnPointData_room_id = $82D8D2
|
||||||
Overworld_CheckForSpecialOverworldTrigger_Direction = $84E879
|
Overworld_CheckForSpecialOverworldTrigger_Direction = $84E879
|
||||||
RoomHeaderPointers = $84F1E2
|
|
||||||
Sprite_ShowSolicitedMessage_Direction = $85E1A3
|
Sprite_ShowSolicitedMessage_Direction = $85E1A3
|
||||||
FluteMenuNumbers_bits = $8AB7A3
|
|
||||||
WorldMap_RedXChars = $8ABF70
|
WorldMap_RedXChars = $8ABF70
|
||||||
WorldMap_CalculateOAMCoordinates = $8AC3B1
|
WorldMap_CalculateOAMCoordinates = $8AC3B1
|
||||||
WorldMap_HandleSpriteBlink = $8AC52E
|
WorldMap_HandleSpriteBlink = $8AC52E
|
||||||
WorldMapIcon_AdjustCoordinate = $8AC59B
|
WorldMapIcon_AdjustCoordinate = $8AC59B
|
||||||
|
WorldMap_LightWorldTilemap = $8AC739
|
||||||
WorldMap_DarkWorldTilemap = $8AD739
|
WorldMap_DarkWorldTilemap = $8AD739
|
||||||
DungeonMapRoomMarkerYBase = $8AE803
|
|
||||||
DungeonMapBossRooms = $8AE817
|
DungeonMapBossRooms = $8AE817
|
||||||
DungeonMapFloorCountData = $8AF5E9
|
|
||||||
DungeonMapFloorToDataOffset = $8AF605
|
|
||||||
DungeonMapRoomPointers = $8AF615
|
|
||||||
DamageSubclassValue = $8DB8F1
|
DamageSubclassValue = $8DB8F1
|
||||||
TextCharMasks = $8EB844
|
TextCharMasks = $8EB844
|
||||||
Credits_ScrollScene_target_y = $8EC308
|
Credits_ScrollScene_target_y = $8EC308
|
||||||
|
|||||||
Reference in New Issue
Block a user