diff --git a/.gitmodules b/.gitmodules index 1f76b5370..e5177ea1e 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ [submodule "extras"] path = extras - url = git://github.com/kanzure/pokemon-reverse-engineering-tools.git + url = git://github.com/pret/pokemon-reverse-engineering-tools.git diff --git a/constants.asm b/constants.asm index 2d3c19fa2..944d15fd0 100644 --- a/constants.asm +++ b/constants.asm @@ -26,3 +26,5 @@ INCLUDE "constants/misc_constants.asm" INCLUDE "constants/std_constants.asm" INCLUDE "constants/deco_constants.asm" INCLUDE "constants/radio_constants.asm" +INCLUDE "constants/sprite_constants.asm" +INCLUDE "constants/tilemap_constants.asm" diff --git a/constants/map_constants.asm b/constants/map_constants.asm index 2ea5cea7e..201f3560c 100644 --- a/constants/map_constants.asm +++ b/constants/map_constants.asm @@ -474,188 +474,6 @@ MAP_NONE EQU 0 shift_const SOUTH shift_const NORTH -; sprites - const_def - const SPRITE_NONE ; 00 - const SPRITE_CHRIS ; 01 - const SPRITE_CHRIS_BIKE ; 02 - const SPRITE_GAMEBOY_KID ; 03 - const SPRITE_SILVER ; 04 - const SPRITE_OAK ; 05 - const SPRITE_RED ; 06 - const SPRITE_BLUE ; 07 - const SPRITE_BILL ; 08 - const SPRITE_ELDER ; 09 - const SPRITE_JANINE ; 0a - const SPRITE_KURT ; 0b - const SPRITE_MOM ; 0c - const SPRITE_BLAINE ; 0d - const SPRITE_REDS_MOM ; 0e - const SPRITE_DAISY ; 0f - const SPRITE_ELM ; 10 - const SPRITE_WILL ; 11 - const SPRITE_FALKNER ; 12 - const SPRITE_WHITNEY ; 13 - const SPRITE_BUGSY ; 14 - const SPRITE_MORTY ; 15 - const SPRITE_CHUCK ; 16 - const SPRITE_JASMINE ; 17 - const SPRITE_PRYCE ; 18 - const SPRITE_CLAIR ; 19 - const SPRITE_BROCK ; 1a - const SPRITE_KAREN ; 1b - const SPRITE_BRUNO ; 1c - const SPRITE_MISTY ; 1d - const SPRITE_LANCE ; 1e - const SPRITE_SURGE ; 1f - const SPRITE_ERIKA ; 20 - const SPRITE_KOGA ; 21 - const SPRITE_SABRINA ; 22 - const SPRITE_COOLTRAINER_M ; 23 - const SPRITE_COOLTRAINER_F ; 24 - const SPRITE_BUG_CATCHER ; 25 - const SPRITE_TWIN ; 26 - const SPRITE_YOUNGSTER ; 27 - const SPRITE_LASS ; 28 - const SPRITE_TEACHER ; 29 - const SPRITE_BUENA ; 2a - const SPRITE_SUPER_NERD ; 2b - const SPRITE_ROCKER ; 2c - const SPRITE_POKEFAN_M ; 2d - const SPRITE_POKEFAN_F ; 2e - const SPRITE_GRAMPS ; 2f - const SPRITE_GRANNY ; 30 - const SPRITE_SWIMMER_GUY ; 31 - const SPRITE_SWIMMER_GIRL ; 32 - const SPRITE_BIG_SNORLAX ; 33 - const SPRITE_SURFING_PIKACHU ; 34 - const SPRITE_ROCKET ; 35 - const SPRITE_ROCKET_GIRL ; 36 - const SPRITE_NURSE ; 37 - const SPRITE_LINK_RECEPTIONIST ; 38 - const SPRITE_CLERK ; 39 - const SPRITE_FISHER ; 3a - const SPRITE_FISHING_GURU ; 3b - const SPRITE_SCIENTIST ; 3c - const SPRITE_KIMONO_GIRL ; 3d - const SPRITE_SAGE ; 3e - const SPRITE_UNUSED_GUY ; 3f - const SPRITE_GENTLEMAN ; 40 - const SPRITE_BLACK_BELT ; 41 - const SPRITE_RECEPTIONIST ; 42 - const SPRITE_OFFICER ; 43 - const SPRITE_CAL ; 44 - const SPRITE_SLOWPOKE ; 45 - const SPRITE_CAPTAIN ; 46 - const SPRITE_BIG_LAPRAS ; 47 - const SPRITE_GYM_GUY ; 48 - const SPRITE_SAILOR ; 49 - const SPRITE_BIKER ; 4a - const SPRITE_PHARMACIST ; 4b - const SPRITE_MONSTER ; 4c - const SPRITE_FAIRY ; 4d - const SPRITE_BIRD ; 4e - const SPRITE_DRAGON ; 4f - const SPRITE_BIG_ONIX ; 50 - const SPRITE_N64 ; 51 - const SPRITE_SUDOWOODO ; 52 - const SPRITE_SURF ; 53 - const SPRITE_POKE_BALL ; 54 - const SPRITE_POKEDEX ; 55 - const SPRITE_PAPER ; 56 - const SPRITE_VIRTUAL_BOY ; 57 - const SPRITE_OLD_LINK_RECEPTIONIST ; 58 - const SPRITE_ROCK ; 59 - const SPRITE_BOULDER ; 5a - const SPRITE_SNES ; 5b - const SPRITE_FAMICOM ; 5c - const SPRITE_FRUIT_TREE ; 5d - const SPRITE_GOLD_TROPHY ; 5e - const SPRITE_SILVER_TROPHY ; 5f - const SPRITE_KRIS ; 60 - const SPRITE_KRIS_BIKE ; 61 - const SPRITE_KURT_OUTSIDE ; 62 - const SPRITE_SUICUNE ; 63 - const SPRITE_ENTEI ; 64 - const SPRITE_RAIKOU ; 65 - const SPRITE_STANDING_YOUNGSTER ; 66 - -const_value SET $80 - -SPRITE_POKEMON EQU const_value - const SPRITE_UNOWN ; 80 - const SPRITE_GEODUDE ; 81 - const SPRITE_GROWLITHE ; 82 - const SPRITE_WEEDLE ; 83 - const SPRITE_SHELLDER ; 84 - const SPRITE_ODDISH ; 85 - const SPRITE_GENGAR ; 86 - const SPRITE_ZUBAT ; 87 - const SPRITE_MAGIKARP ; 88 - const SPRITE_SQUIRTLE ; 89 - const SPRITE_TOGEPI ; 8a - const SPRITE_BUTTERFREE ; 8b - const SPRITE_DIGLETT ; 8c - const SPRITE_POLIWAG ; 8d - const SPRITE_PIKACHU ; 8e - const SPRITE_CLEFAIRY ; 8f - const SPRITE_CHARMANDER ; 90 - const SPRITE_JYNX ; 91 - const SPRITE_STARMIE ; 92 - const SPRITE_BULBASAUR ; 93 - const SPRITE_JIGGLYPUFF ; 94 - const SPRITE_GRIMER ; 95 - const SPRITE_EKANS ; 96 - const SPRITE_PARAS ; 97 - const SPRITE_TENTACOOL ; 98 - const SPRITE_TAUROS ; 99 - const SPRITE_MACHOP ; 9a - const SPRITE_VOLTORB ; 9b - const SPRITE_LAPRAS ; 9c - const SPRITE_RHYDON ; 9d - const SPRITE_MOLTRES ; 9e - const SPRITE_SNORLAX ; 9f - const SPRITE_GYARADOS ; a0 - const SPRITE_LUGIA ; a1 - const SPRITE_HO_OH ; a2 - -const_value SET $e0 - const SPRITE_DAYCARE_MON_1 ; e0 - const SPRITE_DAYCARE_MON_2 ; e1 - -const_value SET $f0 -SPRITE_VARS EQU const_value - const SPRITE_CONSOLE ; f0 - const SPRITE_DOLL_1 ; f1 - const SPRITE_DOLL_2 ; f2 - const SPRITE_BIG_DOLL ; f3 - const SPRITE_WEIRD_TREE ; f4 - const SPRITE_OLIVINE_RIVAL ; f5 - const SPRITE_AZALEA_ROCKET ; f6 - const SPRITE_FUCHSIA_GYM_1 ; f7 - const SPRITE_FUCHSIA_GYM_2 ; f8 - const SPRITE_FUCHSIA_GYM_3 ; f9 - const SPRITE_FUCHSIA_GYM_4 ; fa - const SPRITE_COPYCAT ; fb - const SPRITE_JANINE_IMPERSONATOR ; fc - -; sprite types -const_value SET 1 - const WALKING_SPRITE - const STANDING_SPRITE - const STILL_SPRITE - -; sprite palettes - const_def - const PAL_OW_RED - const PAL_OW_BLUE - const PAL_OW_GREEN - const PAL_OW_BROWN - const PAL_OW_PINK - const PAL_OW_SILVER - const PAL_OW_TREE - const PAL_OW_ROCK - ; permissions const_value SET 1 const TOWN @@ -795,42 +613,6 @@ const_value = -1 const SPAWN_FAST_SHIP NUM_SPAWNS EQU const_value - const_def - const SPRITEMOVEFN_00 - const SPRITEMOVEFN_01 - const SPRITEMOVEFN_02 - const SPRITEMOVEFN_03 - const SPRITEMOVEFN_04 - const SPRITEMOVEFN_05 - const SPRITEMOVEFN_06 - const SPRITEMOVEFN_07 - const SPRITEMOVEFN_08 - const SPRITEMOVEFN_09 - const SPRITEMOVEFN_0A - const SPRITEMOVEFN_0B - const SPRITEMOVEFN_0C - const SPRITEMOVEFN_0D - const SPRITEMOVEFN_0E - const SPRITEMOVEFN_0F - const SPRITEMOVEFN_10 - const SPRITEMOVEFN_11 - const SPRITEMOVEFN_12 - const SPRITEMOVEFN_13 - const SPRITEMOVEFN_14 - const SPRITEMOVEFN_15 - const SPRITEMOVEFN_16 - const SPRITEMOVEFN_17 - const SPRITEMOVEFN_18 - const SPRITEMOVEFN_19 - const SPRITEMOVEFN_1A - const SPRITEMOVEFN_1B - const SPRITEMOVEFN_1C - const SPRITEMOVEFN_1D - const SPRITEMOVEFN_1E - const SPRITEMOVEFN_1F - const SPRITEMOVEFN_20 - const SPRITEMOVEFN_21 - const_def const PALETTE_AUTO const PALETTE_DAY diff --git a/constants/sprite_constants.asm b/constants/sprite_constants.asm new file mode 100644 index 000000000..f0fb8d6ad --- /dev/null +++ b/constants/sprite_constants.asm @@ -0,0 +1,219 @@ + +; sprites + const_def + const SPRITE_NONE ; 00 + const SPRITE_CHRIS ; 01 + const SPRITE_CHRIS_BIKE ; 02 + const SPRITE_GAMEBOY_KID ; 03 + const SPRITE_SILVER ; 04 + const SPRITE_OAK ; 05 + const SPRITE_RED ; 06 + const SPRITE_BLUE ; 07 + const SPRITE_BILL ; 08 + const SPRITE_ELDER ; 09 + const SPRITE_JANINE ; 0a + const SPRITE_KURT ; 0b + const SPRITE_MOM ; 0c + const SPRITE_BLAINE ; 0d + const SPRITE_REDS_MOM ; 0e + const SPRITE_DAISY ; 0f + const SPRITE_ELM ; 10 + const SPRITE_WILL ; 11 + const SPRITE_FALKNER ; 12 + const SPRITE_WHITNEY ; 13 + const SPRITE_BUGSY ; 14 + const SPRITE_MORTY ; 15 + const SPRITE_CHUCK ; 16 + const SPRITE_JASMINE ; 17 + const SPRITE_PRYCE ; 18 + const SPRITE_CLAIR ; 19 + const SPRITE_BROCK ; 1a + const SPRITE_KAREN ; 1b + const SPRITE_BRUNO ; 1c + const SPRITE_MISTY ; 1d + const SPRITE_LANCE ; 1e + const SPRITE_SURGE ; 1f + const SPRITE_ERIKA ; 20 + const SPRITE_KOGA ; 21 + const SPRITE_SABRINA ; 22 + const SPRITE_COOLTRAINER_M ; 23 + const SPRITE_COOLTRAINER_F ; 24 + const SPRITE_BUG_CATCHER ; 25 + const SPRITE_TWIN ; 26 + const SPRITE_YOUNGSTER ; 27 + const SPRITE_LASS ; 28 + const SPRITE_TEACHER ; 29 + const SPRITE_BUENA ; 2a + const SPRITE_SUPER_NERD ; 2b + const SPRITE_ROCKER ; 2c + const SPRITE_POKEFAN_M ; 2d + const SPRITE_POKEFAN_F ; 2e + const SPRITE_GRAMPS ; 2f + const SPRITE_GRANNY ; 30 + const SPRITE_SWIMMER_GUY ; 31 + const SPRITE_SWIMMER_GIRL ; 32 + const SPRITE_BIG_SNORLAX ; 33 + const SPRITE_SURFING_PIKACHU ; 34 + const SPRITE_ROCKET ; 35 + const SPRITE_ROCKET_GIRL ; 36 + const SPRITE_NURSE ; 37 + const SPRITE_LINK_RECEPTIONIST ; 38 + const SPRITE_CLERK ; 39 + const SPRITE_FISHER ; 3a + const SPRITE_FISHING_GURU ; 3b + const SPRITE_SCIENTIST ; 3c + const SPRITE_KIMONO_GIRL ; 3d + const SPRITE_SAGE ; 3e + const SPRITE_UNUSED_GUY ; 3f + const SPRITE_GENTLEMAN ; 40 + const SPRITE_BLACK_BELT ; 41 + const SPRITE_RECEPTIONIST ; 42 + const SPRITE_OFFICER ; 43 + const SPRITE_CAL ; 44 + const SPRITE_SLOWPOKE ; 45 + const SPRITE_CAPTAIN ; 46 + const SPRITE_BIG_LAPRAS ; 47 + const SPRITE_GYM_GUY ; 48 + const SPRITE_SAILOR ; 49 + const SPRITE_BIKER ; 4a + const SPRITE_PHARMACIST ; 4b + const SPRITE_MONSTER ; 4c + const SPRITE_FAIRY ; 4d + const SPRITE_BIRD ; 4e + const SPRITE_DRAGON ; 4f + const SPRITE_BIG_ONIX ; 50 + const SPRITE_N64 ; 51 + const SPRITE_SUDOWOODO ; 52 + const SPRITE_SURF ; 53 + const SPRITE_POKE_BALL ; 54 + const SPRITE_POKEDEX ; 55 + const SPRITE_PAPER ; 56 + const SPRITE_VIRTUAL_BOY ; 57 + const SPRITE_OLD_LINK_RECEPTIONIST ; 58 + const SPRITE_ROCK ; 59 + const SPRITE_BOULDER ; 5a + const SPRITE_SNES ; 5b + const SPRITE_FAMICOM ; 5c + const SPRITE_FRUIT_TREE ; 5d + const SPRITE_GOLD_TROPHY ; 5e + const SPRITE_SILVER_TROPHY ; 5f + const SPRITE_KRIS ; 60 + const SPRITE_KRIS_BIKE ; 61 + const SPRITE_KURT_OUTSIDE ; 62 + const SPRITE_SUICUNE ; 63 + const SPRITE_ENTEI ; 64 + const SPRITE_RAIKOU ; 65 + const SPRITE_STANDING_YOUNGSTER ; 66 + +const_value SET $80 + +SPRITE_POKEMON EQU const_value + const SPRITE_UNOWN ; 80 + const SPRITE_GEODUDE ; 81 + const SPRITE_GROWLITHE ; 82 + const SPRITE_WEEDLE ; 83 + const SPRITE_SHELLDER ; 84 + const SPRITE_ODDISH ; 85 + const SPRITE_GENGAR ; 86 + const SPRITE_ZUBAT ; 87 + const SPRITE_MAGIKARP ; 88 + const SPRITE_SQUIRTLE ; 89 + const SPRITE_TOGEPI ; 8a + const SPRITE_BUTTERFREE ; 8b + const SPRITE_DIGLETT ; 8c + const SPRITE_POLIWAG ; 8d + const SPRITE_PIKACHU ; 8e + const SPRITE_CLEFAIRY ; 8f + const SPRITE_CHARMANDER ; 90 + const SPRITE_JYNX ; 91 + const SPRITE_STARMIE ; 92 + const SPRITE_BULBASAUR ; 93 + const SPRITE_JIGGLYPUFF ; 94 + const SPRITE_GRIMER ; 95 + const SPRITE_EKANS ; 96 + const SPRITE_PARAS ; 97 + const SPRITE_TENTACOOL ; 98 + const SPRITE_TAUROS ; 99 + const SPRITE_MACHOP ; 9a + const SPRITE_VOLTORB ; 9b + const SPRITE_LAPRAS ; 9c + const SPRITE_RHYDON ; 9d + const SPRITE_MOLTRES ; 9e + const SPRITE_SNORLAX ; 9f + const SPRITE_GYARADOS ; a0 + const SPRITE_LUGIA ; a1 + const SPRITE_HO_OH ; a2 + +const_value SET $e0 + const SPRITE_DAYCARE_MON_1 ; e0 + const SPRITE_DAYCARE_MON_2 ; e1 + +const_value SET $f0 +SPRITE_VARS EQU const_value + const SPRITE_CONSOLE ; f0 + const SPRITE_DOLL_1 ; f1 + const SPRITE_DOLL_2 ; f2 + const SPRITE_BIG_DOLL ; f3 + const SPRITE_WEIRD_TREE ; f4 + const SPRITE_OLIVINE_RIVAL ; f5 + const SPRITE_AZALEA_ROCKET ; f6 + const SPRITE_FUCHSIA_GYM_1 ; f7 + const SPRITE_FUCHSIA_GYM_2 ; f8 + const SPRITE_FUCHSIA_GYM_3 ; f9 + const SPRITE_FUCHSIA_GYM_4 ; fa + const SPRITE_COPYCAT ; fb + const SPRITE_JANINE_IMPERSONATOR ; fc + +; sprite types +const_value SET 1 + const WALKING_SPRITE + const STANDING_SPRITE + const STILL_SPRITE + +; sprite palettes + const_def + const PAL_OW_RED + const PAL_OW_BLUE + const PAL_OW_GREEN + const PAL_OW_BROWN + const PAL_OW_PINK + const PAL_OW_SILVER + const PAL_OW_TREE + const PAL_OW_ROCK + +; sprite movements + const_def + const SPRITEMOVEFN_00 + const SPRITEMOVEFN_01 + const SPRITEMOVEFN_02 + const SPRITEMOVEFN_03 + const SPRITEMOVEFN_04 + const SPRITEMOVEFN_05 + const SPRITEMOVEFN_06 + const SPRITEMOVEFN_07 + const SPRITEMOVEFN_08 + const SPRITEMOVEFN_09 + const SPRITEMOVEFN_0A + const SPRITEMOVEFN_0B + const SPRITEMOVEFN_0C + const SPRITEMOVEFN_0D + const SPRITEMOVEFN_0E + const SPRITEMOVEFN_0F + const SPRITEMOVEFN_10 + const SPRITEMOVEFN_11 + const SPRITEMOVEFN_12 + const SPRITEMOVEFN_13 + const SPRITEMOVEFN_14 + const SPRITEMOVEFN_15 + const SPRITEMOVEFN_16 + const SPRITEMOVEFN_17 + const SPRITEMOVEFN_18 + const SPRITEMOVEFN_19 + const SPRITEMOVEFN_1A + const SPRITEMOVEFN_1B + const SPRITEMOVEFN_1C + const SPRITEMOVEFN_1D + const SPRITEMOVEFN_1E + const SPRITEMOVEFN_1F + const SPRITEMOVEFN_20 + const SPRITEMOVEFN_21 diff --git a/constants/tilemap_constants.asm b/constants/tilemap_constants.asm new file mode 100644 index 000000000..e47a1b269 --- /dev/null +++ b/constants/tilemap_constants.asm @@ -0,0 +1,5 @@ +LANDTILE EQU 0 +WALLTILE EQU 1 +WATRTILE EQU 15 + +TALK EQU 1 << 4 diff --git a/engine/pack.asm b/engine/pack.asm index 7da0e4605..f39a6e528 100644 --- a/engine/pack.asm +++ b/engine/pack.asm @@ -4,7 +4,7 @@ Pack: ; 10000 set 4, [hl] call Function1068a .loop - call Functiona57 + call JoyTextDelay ld a, [wcf63] bit 7, a jr nz, .done @@ -651,7 +651,7 @@ BattlePack: ; 10493 set 4, [hl] call Function1068a .asm_1049b - call Functiona57 + call JoyTextDelay ld a, [wcf63] bit 7, a jr nz, .asm_104ad diff --git a/engine/pokedex.asm b/engine/pokedex.asm index 1f4f786d2..5c86aace1 100644 --- a/engine/pokedex.asm +++ b/engine/pokedex.asm @@ -27,7 +27,7 @@ Pokedex: ; 40000 call DelayFrame .main - call Functiona57 + call JoyTextDelay ld a, [wcf63] bit 7, a jr nz, .exit diff --git a/event/buena.asm b/event/buena.asm index 31ce0a895..d7aaa5305 100644 --- a/event/buena.asm +++ b/event/buena.asm @@ -141,7 +141,7 @@ SpecialBuenaPrize: ; 8afd4 call WriteBackup ld hl, UnknownText_0x8b08b call PrintText - call Functiona36 + call JoyWaitAorB call PlayClickSFX ret ; 8b072 diff --git a/event/mom.asm b/event/mom.asm index a659eddd4..e994d9e43 100644 --- a/event/mom.asm +++ b/event/mom.asm @@ -491,7 +491,7 @@ Function1656b: ; 1656b Function16571: ; 16571 .loop - call Functiona57 + call JoyTextDelay ld hl, hJoyPressed ld a, [hl] and B_BUTTON diff --git a/event/poke_seer.asm b/event/poke_seer.asm index cb1e23966..f785e378c 100644 --- a/event/poke_seer.asm +++ b/event/poke_seer.asm @@ -11,7 +11,7 @@ SEER_LEVEL_ONLY EQU 7 SpecialPokeSeer: ; 4f0bc ld a, SEER_INTRO call PrintSeerText - call Functiona36 + call JoyWaitAorB ld b, $6 callba SelectMonFromParty diff --git a/event/unown.asm b/event/unown.asm index 03ebbbaff..d0456f896 100644 --- a/event/unown.asm +++ b/event/unown.asm @@ -151,7 +151,7 @@ endr add hl, bc call Function8aee9 call Function3200 - call Functiona36 + call JoyWaitAorB call PlayClickSFX call WriteBackup ret diff --git a/home.asm b/home.asm index f59175bd0..69dba62fd 100644 --- a/home.asm +++ b/home.asm @@ -615,11 +615,11 @@ Function3246:: ; 3246 jr c, .wait di - ld a, $1 + ld a, 1 ; BANK(VTiles3) ld [rVBK], a hlcoord 0, 0, AttrMap call Function327b - ld a, $0 + ld a, 0 ; BANK(VTiles0) ld [rVBK], a hlcoord 0, 0 call Function327b @@ -639,7 +639,7 @@ Function3246:: ; 3246 Function327b:: ; 327b ld [hSPBuffer], sp ld sp, hl - ld a, [$ffd7] + ld a, [hBGMapAddress + 1] ld h, a ld l, 0 ld a, 18 @@ -1188,7 +1188,7 @@ Function354b:: ; 354b push af ld a, $1 ld [hInMenu], a - call Functiona57 + call JoyTextDelay pop af ld [hInMenu], a diff --git a/home/copy.asm b/home/copy.asm index bd944aa0b..ed5f3cc64 100644 --- a/home/copy.asm +++ b/home/copy.asm @@ -211,6 +211,7 @@ endr Request2bpp:: ; eba +; Load 2bpp at b:de to occupy c tiles of hl. ld a, [hBGMapMode] push af xor a @@ -228,14 +229,14 @@ Request2bpp:: ; eba ld [$ffd3], a ld a, [InLinkBattle] cp $4 - jr nz, .asm_edc + jr nz, .okay ld a, [$ffe9] and a - jr nz, .asm_edc + jr nz, .okay ld a, $6 ld [$ffd3], a -.asm_edc +.okay ld a, e ld [Requested2bppSource], a ld a, d @@ -245,11 +246,11 @@ Request2bpp:: ; eba ld a, h ld [Requested2bppDest + 1], a -.asm_eec +.loop ld a, c ld hl, $ffd3 cp [hl] - jr nc, .asm_f08 + jr nc, .iterate ld [Requested2bpp], a .wait @@ -268,19 +269,19 @@ Request2bpp:: ; eba ld [hBGMapMode], a ret -.asm_f08 +.iterate ld a, [$ffd3] ld [Requested2bpp], a -.asm_f0d +.wait2 call DelayFrame ld a, [Requested2bpp] and a - jr nz, .asm_f0d + jr nz, .wait2 ld a, c ld hl, $ffd3 sub [hl] ld c, a - jr .asm_eec + jr .loop ; f1e @@ -302,14 +303,14 @@ Request1bpp:: ; f1e ld [$ffd3], a ld a, [InLinkBattle] cp $4 - jr nz, .asm_f40 + jr nz, .NotMobile ld a, [$ffe9] and a - jr nz, .asm_f40 + jr nz, .NotMobile ld a, $6 ld [$ffd3], a -.asm_f40 +.NotMobile ld a, e ld [Requested1bppSource], a ld a, d @@ -318,11 +319,11 @@ Request1bpp:: ; f1e ld [Requested1bppDest], a ld a, h ld [Requested1bppDest + 1], a -.asm_f50 +.loop ld a, c ld hl, $ffd3 cp [hl] - jr nc, .asm_f6c + jr nc, .iterate ld [Requested1bpp], a .wait @@ -341,19 +342,21 @@ Request1bpp:: ; f1e ld [hBGMapMode], a ret -.asm_f6c +.iterate ld a, [$ffd3] ld [Requested1bpp], a -.asm_f71 + +.wait2 call DelayFrame ld a, [Requested1bpp] and a - jr nz, .asm_f71 + jr nz, .wait2 + ld a, c ld hl, $ffd3 sub [hl] ld c, a - jr .asm_f50 + jr .loop ; f82 diff --git a/home/joypad.asm b/home/joypad.asm index b16b716ac..6d9bd743e 100644 --- a/home/joypad.asm +++ b/home/joypad.asm @@ -273,42 +273,44 @@ StopAutoInput:: ; a0a ; a1b -Functiona1b:: ; a1b +JoyTitleScreenInput:: ; a1b +.loop call DelayFrame push bc - call Functiona57 + call JoyTextDelay pop bc ld a, [hJoyDown] cp D_UP | SELECT | B_BUTTON - jr z, .asm_a34 + jr z, .keycombo ld a, [hJoyLast] and START | A_BUTTON - jr nz, .asm_a34 + jr nz, .keycombo dec c - jr nz, Functiona1b + jr nz, .loop and a ret -.asm_a34 +.keycombo scf ret ; a36 -Functiona36:: ; a36 +JoyWaitAorB:: ; a36 +.loop call DelayFrame call GetJoypad ld a, [hJoyPressed] and A_BUTTON | B_BUTTON ret nz call RTC - jr Functiona36 + jr .loop ; a46 CloseText:: ; a46 @@ -317,13 +319,13 @@ CloseText:: ; a46 ld a, 1 ld [hOAMUpdate], a call WaitBGMap - call Functiona36 + call JoyWaitAorB pop af ld [hOAMUpdate], a ret ; a57 -Functiona57:: ; a57 +JoyTextDelay:: ; a57 call GetJoypad ld a, [hInMenu] and a @@ -367,7 +369,7 @@ Functiona80:: ; a80 hlcoord 18, 17 call Functionb06 pop hl - call Functiona57 + call JoyTextDelay ld a, [hJoyLast] and $3 jr z, .asm_a8d @@ -379,7 +381,7 @@ Functiona80:: ; a80 ; aa5 Functionaa5:: ; aa5 - call Functiona57 + call JoyTextDelay ld a, [hJoyLast] and A_BUTTON | B_BUTTON jr z, Functionaa5 @@ -413,7 +415,7 @@ Functionac6:: ; ac6 callba Function1de28a .asm_ad9 call Functionaf5 - call Functiona57 + call JoyTextDelay ld a, [hJoyPressed] and $3 jr nz, .asm_af1 diff --git a/items/item_effects.asm b/items/item_effects.asm index fb76856ca..b68c7c85c 100644 --- a/items/item_effects.asm +++ b/items/item_effects.asm @@ -2181,7 +2181,7 @@ Functionf3df: ; f3df (3:73df) call Functionf1db ld a, $f5 call Functionf24a - call Functiona36 + call JoyWaitAorB .asm_f413 ld a, b inc a diff --git a/main.asm b/main.asm index 22a6a0286..c16169942 100644 --- a/main.asm +++ b/main.asm @@ -947,7 +947,7 @@ ShrinkPlayer: ; 610f ld c, 3 call DelayFrames - call Function61cd + call Intro_PlacePlayerSprite call Functione5f ld c, 50 @@ -1020,7 +1020,7 @@ ShrinkFrame: ; 61b4 ret ; 61cd -Function61cd: ; 61cd +Intro_PlacePlayerSprite: ; 61cd callba GetPlayerIcon ld c, $c @@ -1028,7 +1028,7 @@ Function61cd: ; 61cd call Request2bpp ld hl, Sprites - ld de, .data_61fe + ld de, .sprites ld a, [de] inc de @@ -1058,12 +1058,12 @@ Function61cd: ; 61cd ret ; 61fe -.data_61fe ; 61fe +.sprites ; 61fe db 4 - db $4c, $48, $00 - db $4c, $50, $01 - db $54, $48, $02 - db $54, $50, $03 + db $4c, $48, 0 + db $4c, $50, 1 + db $54, $48, 2 + db $54, $50, 3 ; 620b @@ -1123,7 +1123,7 @@ endr dw Function6389 dw Function620b dw Function620b - dw Function6392 + dw ResetClock ; 6274 @@ -1378,18 +1378,19 @@ Function6389: ; 6389 jp Init ; 6392 -Function6392: ; 6392 - callba Function4d3b1 +ResetClock: ; 6392 + callba _ResetClock jp Init ; 639b Function639b: ; 639b + ; If bit 0 or 1 of [wcf65] is set, we don't need to be here. ld a, [wcf65] and $3 ret nz ld bc, wc3a4 ld hl, $000a - add hl, bc + add hl, bc ; over-the-top compicated way to load wc3ae into hl ld l, [hl] ld h, 0 rept 2 @@ -1397,8 +1398,9 @@ rept 2 endr ld de, Data63ca add hl, de + ; If bit 2 of [wcf65] is set, get the second dw; else, get the first dw ld a, [wcf65] - and $4 + and %00000100 srl a srl a ld e, a @@ -1417,12 +1419,12 @@ endr ; 63ca Data63ca: ; 63ca - db $5c, $50, $00, $00 - db $5c, $68, $5c, $58 - db $5c, $68, $5c, $78 - db $5c, $88, $5c, $78 - db $00, $00, $5c, $78 - db $00, $00, $5c, $58 + dw $505c, $0000 + dw $685c, $585c + dw $685c, $785c + dw $885c, $785c + dw $0000, $785c + dw $0000, $585c ; 63e2 Copyright: ; 63e2 @@ -10752,7 +10754,7 @@ Function118ca: ; 118ca ; 11915 Function11915: ; 11915 - call Functiona57 + call JoyTextDelay ld a, [wcf63] bit 7, a jr nz, .asm_11930 @@ -11492,7 +11494,7 @@ Function11fa9: ; 11fa9 (4:5fa9) ret Function11fc0: ; 11fc0 (4:5fc0) - call Functiona57 + call JoyTextDelay ld a, [wcf63] bit 7, a jr nz, .asm_11fdb @@ -18956,7 +18958,7 @@ Function15cef: ; 15cef call TakeMoney ld a, $4 call Function15c7d - call Functiona36 + call JoyWaitAorB .asm_15d68 call SpeechTextBox @@ -18970,14 +18972,14 @@ Function15cef: ; 15cef .asm_15d6f ld a, $3 call Function15c7d - call Functiona36 + call JoyWaitAorB and a ret .asm_15d79 ld a, $2 call Function15c7d - call Functiona36 + call JoyWaitAorB and a ret ; 15d83 @@ -19036,7 +19038,7 @@ endr .asm_15dd8 ld a, $5 call Function15c7d - call Functiona36 + call JoyWaitAorB scf ret ; 15de2 @@ -19341,7 +19343,7 @@ Function15efd: ; 15efd call PrintTextBoxText call Function15fc3 callba Function24af0 - call Functiona36 + call JoyWaitAorB .asm_15f6e call ExitMenu @@ -19435,7 +19437,7 @@ Function15fc3: ; 15fc3 Function15fcd: ; 15fcd call MenuTextBox - call Functiona36 + call JoyWaitAorB call ExitMenu ret ; 15fd7 @@ -20490,7 +20492,7 @@ Function16be4: ; 16be4 call Function32f9 .asm_16c6b - call Functiona57 + call JoyTextDelay ld a, [hJoyPressed] and B_BUTTON @@ -22364,7 +22366,7 @@ Function24259: ; 24259 callab Function8cf62 .asm_24266 - call Functiona57 + call JoyTextDelay call Function1bdd and a ret z @@ -24765,7 +24767,7 @@ Function25105: ; 25105 call Function2513b .asm_25117 call UpdateTime - call Functiona57 + call JoyTextDelay ld a, [wcf63] bit 7, a jr nz, .asm_25132 @@ -25367,7 +25369,7 @@ ProfOaksPC: ; 0x265d3 .shutdown ld hl, OakPCText4 call PrintText - call Functiona36 + call JoyWaitAorB call ExitMenu ret ; 0x265ee @@ -25377,7 +25379,7 @@ ProfOaksPCBoot ; 0x265ee call PrintText call Rate call PlaySFX ; sfx loaded by previous Rate function call - call Functiona36 + call JoyWaitAorB call WaitSFX ret ; 0x26601 @@ -25389,7 +25391,7 @@ Function26601: ; 0x26601 call PlayMusic pop de call PlaySFX - call Functiona36 + call JoyWaitAorB call WaitSFX ret ; 0x26616 @@ -25409,7 +25411,7 @@ Rate: ; 0x26616 call ClearOakRatingBuffers ld hl, OakPCText3 call PrintText - call Functiona36 + call JoyWaitAorB ld a, [wd003] ld hl, OakRatings call FindOakRating @@ -28742,7 +28744,7 @@ Function28ade: ; 28ade ld a, $ed ldcoord 9, 17 .asm_28ae3 - call Functiona57 + call JoyTextDelay ld a, [hJoyLast] and a jr z, .asm_28ae3 @@ -37593,7 +37595,7 @@ Function4876f: ; 4876f (12:476f) ld a, [wd473] push af .asm_487c6 - call Functiona57 + call JoyTextDelay call Function4880e jr nc, .asm_487c6 ld a, $1 @@ -37791,7 +37793,7 @@ Function488d3: ; 488d3 (12:48d3) asm_48922: ; 48922 (12:4922) push bc - call Functiona57 + call JoyTextDelay ld a, [hJoyDown] ; $ff00+$a8 and a jp z, Function4896e @@ -40596,7 +40598,7 @@ Function4a28a: ; 4a28a (12:628a) call CloseSRAM ld hl, UnknownText_0x4a35d call PrintText - call Functiona36 + call JoyWaitAorB .asm_4a338 call ExitMenu .asm_4a33b @@ -42407,59 +42409,59 @@ TileCollisionTable:: ; 4ce1f ; 11 talkable water ; 1f talkable wall - db $00, $00, $00, $00, $00, $00, $00, $0f - db $00, $00, $00, $00, $00, $00, $00, $0f - db $00, $00, $1f, $00, $00, $1f, $00, $00 - db $00, $00, $1f, $00, $00, $1f, $00, $00 - db $01, $01, $11, $00, $11, $01, $01, $0f - db $01, $01, $11, $00, $11, $01, $01, $0f - db $01, $01, $01, $01, $01, $01, $01, $01 - db $01, $01, $01, $01, $01, $01, $01, $01 + db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + WATRTILE + db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + WATRTILE + db NULL + LANDTILE, NULL + LANDTILE, TALK + WATRTILE, NULL + LANDTILE, NULL + LANDTILE, TALK + WATRTILE, NULL + LANDTILE, NULL + LANDTILE + db NULL + LANDTILE, NULL + LANDTILE, TALK + WATRTILE, NULL + LANDTILE, NULL + LANDTILE, TALK + WATRTILE, NULL + LANDTILE, NULL + LANDTILE + db NULL + WALLTILE, NULL + WALLTILE, TALK + WALLTILE, NULL + LANDTILE, TALK + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WATRTILE + db NULL + WALLTILE, NULL + WALLTILE, TALK + WALLTILE, NULL + LANDTILE, TALK + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WATRTILE + db NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE + db NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE - db $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $0f, $00, $00, $00, $00, $00 - db $00, $00, $0f, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 + db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE + db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE + db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE + db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE + db NULL + LANDTILE, NULL + LANDTILE, NULL + WATRTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE + db NULL + LANDTILE, NULL + LANDTILE, NULL + WATRTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE + db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE + db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE - db $0f, $0f, $0f, $0f, $0f, $00, $00, $00 - db $0f, $0f, $0f, $0f, $0f, $00, $00, $00 - db $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f - db $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f - db $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 + db NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE + db NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE + db NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE + db NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE, NULL + WATRTILE + db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE + db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE + db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE + db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE - db $01, $01, $01, $01, $01, $01, $01, $01 - db $01, $01, $01, $01, $01, $01, $01, $01 - db $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $0f + db NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE + db NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE, NULL + WALLTILE + db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE + db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE + db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE + db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE + db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE + db NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + LANDTILE, NULL + WATRTILE ; 4cf1f -Function4cf1f: ; 4cf1f +EmptyAllSRAMBanks: ; 4cf1f ld a, $0 - call Function4cf34 + call .EmptyBank ld a, $1 - call Function4cf34 + call .EmptyBank ld a, $2 - call Function4cf34 + call .EmptyBank ld a, $3 - call Function4cf34 + call .EmptyBank ret ; 4cf34 -Function4cf34: ; 4cf34 +.EmptyBank: ; 4cf34 call GetSRAMBank - ld hl, sScratch - ld bc, StackBottom - sScratch + ld hl, SRAM_Begin + ld bc, SRAM_End - SRAM_Begin xor a call ByteFill call CloseSRAM @@ -42471,6 +42473,8 @@ Function4cf45: ; 4cf45 (13:4f45) ld a, [hCGB] ; $ff00+$e6 and a jp z, WaitBGMap + +; The following is a modified version of Function3246. ld a, [hBGMapMode] ; $ff00+$d4 push af xor a @@ -42479,24 +42483,26 @@ Function4cf45: ; 4cf45 (13:4f45) push af xor a ld [$ffde], a -.asm_4cf57 +.WaitLY ld a, [rLY] ; $ff00+$44 cp $60 - jr c, .asm_4cf57 + jr c, .WaitLY + di - ld a, $1 + ld a, 1 ; BANK(VBGMap2) ld [rVBK], a ; $ff00+$4f hlcoord 0, 0, AttrMap call Function4cf80 - ld a, $0 + ld a, 0 ; BANK(VBGMap0) ld [rVBK], a ; $ff00+$4f hlcoord 0, 0 call Function4cf80 -.asm_4cf72 +.WaitLY2 ld a, [rLY] ; $ff00+$44 cp $60 - jr c, .asm_4cf72 + jr c, .WaitLY2 ei + pop af ld [$ffde], a pop af @@ -42508,111 +42514,35 @@ Function4cf80: ; 4cf80 (13:4f80) ld sp, hl ld a, [hBGMapAddress + 1] ld h, a - ld l, $0 - ld a, $12 + ld l, 0 + ld a, 18 ld [$ffd3], a - ld b, $2 - ld c, $41 -.asm_4cf91 + ld b, 1 << 1 + ld c, rSTAT % $100 + +.loop +rept 20 / 2 pop de -.asm_4cf92 +.loop\@ ld a, [$ff00+c] and b - jr nz, .asm_4cf92 + jr nz, .loop\@ ld [hl], e inc l ld [hl], d inc l - pop de -.asm_4cf9b - ld a, [$ff00+c] - and b - jr nz, .asm_4cf9b - ld [hl], e - inc l - ld [hl], d - inc l - pop de -.asm_4cfa4 - ld a, [$ff00+c] - and b - jr nz, .asm_4cfa4 - ld [hl], e - inc l - ld [hl], d - inc l - pop de -.asm_4cfad - ld a, [$ff00+c] - and b - jr nz, .asm_4cfad - ld [hl], e - inc l - ld [hl], d - inc l - pop de -.asm_4cfb6 - ld a, [$ff00+c] - and b - jr nz, .asm_4cfb6 - ld [hl], e - inc l - ld [hl], d - inc l - pop de -.asm_4cfbf - ld a, [$ff00+c] - and b - jr nz, .asm_4cfbf - ld [hl], e - inc l - ld [hl], d - inc l - pop de -.asm_4cfc8 - ld a, [$ff00+c] - and b - jr nz, .asm_4cfc8 - ld [hl], e - inc l - ld [hl], d - inc l - pop de -.asm_4cfd1 - ld a, [$ff00+c] - and b - jr nz, .asm_4cfd1 - ld [hl], e - inc l - ld [hl], d - inc l - pop de -.asm_4cfda - ld a, [$ff00+c] - and b - jr nz, .asm_4cfda - ld [hl], e - inc l - ld [hl], d - inc l - pop de -.asm_4cfe3 - ld a, [$ff00+c] - and b - jr nz, .asm_4cfe3 - ld [hl], e - inc l - ld [hl], d - inc l - ld de, $c +endr + + ld de, 32 - 20 add hl, de ld a, [$ffd3] dec a ld [$ffd3], a - jr nz, .asm_4cf91 + jr nz, .loop + ld a, [hSPBuffer] ; $ff00+$d9 ld l, a - ld a, [$ffda] + ld a, [hSPBuffer + 1] ld h, a ld sp, hl ret @@ -42627,15 +42557,15 @@ Function4cffe:: ; 4cffe ld c, a call CloseSRAM ld a, b - cp $63 - jr nz, .asm_4d01b + cp 99 + jr nz, .ok ld a, c - cp $7f - jr nz, .asm_4d01b + cp " " + jr nz, .ok ld c, $1 ret -.asm_4d01b +.ok ld c, $0 ret ; 4d01e @@ -42690,6 +42620,8 @@ Function4d188: ; 4d188 ld a, [wc2ce] cp $0 jp z, WaitBGMap + +; What follows is a modified version of Function3246. ld a, [hBGMapMode] push af xor a @@ -42698,24 +42630,26 @@ Function4d188: ; 4d188 push af xor a ld [$ffde], a -.asm_4d1a2 +.wait ld a, [rLY] cp $8f - jr c, .asm_4d1a2 + jr c, .wait + di - ld a, $1 + ld a, 1 ; BANK(VBGMap2) ld [rVBK], a hlcoord 0, 0, AttrMap call Function4d1cb - ld a, $0 + ld a, 0 ; BANK(VBGMap0) ld [rVBK], a hlcoord 0, 0 call Function4d1cb -.asm_4d1bd +.wait2 ld a, [rLY] cp $8f - jr c, .asm_4d1bd + jr c, .wait2 ei + pop af ld [$ffde], a pop af @@ -42728,111 +42662,35 @@ Function4d1cb: ; 4d1cb ld sp, hl ld a, [hBGMapAddress + 1] ld h, a - ld l, $0 - ld a, $12 + ld l, 0 + ld a, 18 ld [$ffd3], a - ld b, $2 - ld c, $41 -.asm_4d1dc + ld b, 1 << 1 ; not in v/hblank + ld c, rSTAT % $100 + +.loop +rept 20 / 2 pop de -.asm_4d1dd +.loop\@ ld a, [$ff00+c] and b - jr nz, .asm_4d1dd + jr nz, .loop\@ ld [hl], e inc l ld [hl], d inc l - pop de -.asm_4d1e6 - ld a, [$ff00+c] - and b - jr nz, .asm_4d1e6 - ld [hl], e - inc l - ld [hl], d - inc l - pop de -.asm_4d1ef - ld a, [$ff00+c] - and b - jr nz, .asm_4d1ef - ld [hl], e - inc l - ld [hl], d - inc l - pop de -.asm_4d1f8 - ld a, [$ff00+c] - and b - jr nz, .asm_4d1f8 - ld [hl], e - inc l - ld [hl], d - inc l - pop de -.asm_4d201 - ld a, [$ff00+c] - and b - jr nz, .asm_4d201 - ld [hl], e - inc l - ld [hl], d - inc l - pop de -.asm_4d20a - ld a, [$ff00+c] - and b - jr nz, .asm_4d20a - ld [hl], e - inc l - ld [hl], d - inc l - pop de -.asm_4d213 - ld a, [$ff00+c] - and b - jr nz, .asm_4d213 - ld [hl], e - inc l - ld [hl], d - inc l - pop de -.asm_4d21c - ld a, [$ff00+c] - and b - jr nz, .asm_4d21c - ld [hl], e - inc l - ld [hl], d - inc l - pop de -.asm_4d225 - ld a, [$ff00+c] - and b - jr nz, .asm_4d225 - ld [hl], e - inc l - ld [hl], d - inc l - pop de -.asm_4d22e - ld a, [$ff00+c] - and b - jr nz, .asm_4d22e - ld [hl], e - inc l - ld [hl], d - inc l - ld de, $000c +endr + + ld de, 32 - 20 add hl, de ld a, [$ffd3] dec a ld [$ffd3], a - jr nz, .asm_4d1dc + jr nz, .loop + ld a, [hSPBuffer] ld l, a - ld a, [$ffda] + ld a, [hSPBuffer + 1] ld h, a ld sp, hl ret @@ -42889,19 +42747,19 @@ rept 2 inc c endr ld a, $7 -.asm_4d36e +.row push bc push hl -.asm_4d370 +.col ld [hli], a dec c - jr nz, .asm_4d370 + jr nz, .col pop hl ld de, SCREEN_WIDTH add hl, de pop bc dec b - jr nz, .asm_4d36e + jr nz, .row ret ; 4d37e @@ -42916,36 +42774,36 @@ Function4d37e: ; 4d37e pop hl ld de, SCREEN_WIDTH add hl, de -.asm_4d38d +.loop push hl - ld a, $79 + ld a, "┌" ld [hli], a - ld a, $7f + ld a, " " call Function4d3ab - ld [hl], $7a + ld [hl], "─" pop hl ld de, SCREEN_WIDTH add hl, de dec b - jr nz, .asm_4d38d - ld a, $7b + jr nz, .loop + ld a, "┐" ld [hli], a - ld a, $7c + ld a, "│" call Function4d3ab - ld [hl], $7d + ld [hl], "└" ret ; 4d3ab Function4d3ab: ; 4d3ab ld d, c -.asm_4d3ac +.loop ld [hli], a dec d - jr nz, .asm_4d3ac + jr nz, .loop ret ; 4d3b1 -Function4d3b1: ; 4d3b1 +_ResetClock: ; 4d3b1 callba Function8000 ld b, $8 call GetSGBLayout @@ -42953,67 +42811,67 @@ Function4d3b1: ; 4d3b1 call Functione5f ld de, MUSIC_MAIN_MENU call PlayMusic - ld hl, UnknownText_0x4d408 + ld hl, .text_askreset call PrintText - ld hl, MenuDataHeader_0x4d40d + ld hl, .NoYes_MenuDataHeader call CopyMenuDataHeader call InterpretMenu2 ret c ld a, [wcfa9] cp $1 ret z - call Function4d41e - jr c, .asm_4d3f7 + call ClockResetPassword + jr c, .wrongpassword ld a, BANK(s0_ac60) call GetSRAMBank ld a, $80 ld [s0_ac60], a call CloseSRAM - ld hl, UnknownText_0x4d3fe + ld hl, .text_okay call PrintText ret -.asm_4d3f7 - ld hl, UnknownText_0x4d403 +.wrongpassword + ld hl, .text_wrong call PrintText ret ; 4d3fe -UnknownText_0x4d3fe: ; 0x4d3fe +.text_okay: ; 0x4d3fe ; Password OK. Select CONTINUE & reset settings. text_jump UnknownText_0x1c55db db "@" ; 0x4d403 -UnknownText_0x4d403: ; 0x4d403 +.text_wrong: ; 0x4d403 ; Wrong password! text_jump UnknownText_0x1c560b db "@" ; 0x4d408 -UnknownText_0x4d408: ; 0x4d408 +.text_askreset: ; 0x4d408 ; Reset the clock? text_jump UnknownText_0x1c561c db "@" ; 0x4d40d -MenuDataHeader_0x4d40d: ; 0x4d40d +.NoYes_MenuDataHeader: ; 0x4d40d db $00 ; flags db 07, 14 ; start coords db 11, 19 ; end coords - dw MenuData2_0x4d415 + dw .NoYes_MenuData2 db 1 ; default option ; 0x4d415 -MenuData2_0x4d415: ; 0x4d415 +.NoYes_MenuData2: ; 0x4d415 db $c0 ; flags db 2 ; items db "NO@" db "YES@" ; 0x4d41e -Function4d41e: ; 4d41e - call Function4d50f +ClockResetPassword: ; 4d41e + call .CalculatePassword push de ld hl, StringBuffer2 ld bc, 5 @@ -43021,58 +42879,58 @@ Function4d41e: ; 4d41e call ByteFill ld a, $4 ld [StringBuffer2 + 5], a - ld hl, UnknownText_0x4d463 + ld hl, .pleaseenterpasswordtext call PrintText -.asm_4d437 - call Function4d468 -.asm_4d43a - call Functiona57 +.loop + call .updateIDdisplay +.loop2 + call JoyTextDelay ld a, [hJoyLast] ld b, a and A_BUTTON - jr nz, .asm_4d453 + jr nz, .confirm ld a, b and D_PAD - jr z, .asm_4d43a - call Function4d490 + jr z, .loop2 + call .dpadinput ld c, $3 call DelayFrames - jr .asm_4d437 + jr .loop -.asm_4d453 - call Function4d4e0 +.confirm + call .ConvertDecIDToBytes pop de ld a, e cp l - jr nz, .asm_4d461 + jr nz, .nope ld a, d cp h - jr nz, .asm_4d461 + jr nz, .nope and a ret -.asm_4d461 +.nope scf ret ; 4d463 -UnknownText_0x4d463: ; 0x4d463 +.pleaseenterpasswordtext: ; 0x4d463 ; Please enter the password. text_jump UnknownText_0x1c562e db "@" ; 0x4d468 -Function4d468: ; 4d468 +.updateIDdisplay: ; 4d468 hlcoord 14, 15 ld de, StringBuffer2 - ld c, $5 -.asm_4d470 + ld c, 5 +.loop3 ld a, [de] - add $f6 + add "0" ld [hli], a inc de dec c - jr nz, .asm_4d470 + jr nz, .loop3 hlcoord 14, 16 ld bc, 5 ld a, " " @@ -43086,22 +42944,22 @@ Function4d468: ; 4d468 ret ; 4d490 -Function4d490: ; 4d490 +.dpadinput: ; 4d490 ld a, b - and $20 - jr nz, .asm_4d4a5 + and D_LEFT + jr nz, .left ld a, b - and $10 - jr nz, .asm_4d4af + and D_RIGHT + jr nz, .right ld a, b - and $40 - jr nz, .asm_4d4ba + and D_UP + jr nz, .up ld a, b - and $80 - jr nz, .asm_4d4c8 + and D_DOWN + jr nz, .down ret -.asm_4d4a5 +.left ld a, [StringBuffer2 + 5] and a ret z @@ -43109,7 +42967,7 @@ Function4d490: ; 4d490 ld [StringBuffer2 + 5], a ret -.asm_4d4af +.right ld a, [StringBuffer2 + 5] cp $4 ret z @@ -43117,34 +42975,34 @@ Function4d490: ; 4d490 ld [StringBuffer2 + 5], a ret -.asm_4d4ba - call Function4d4d5 +.up + call .getcurrentdigit ld a, [hl] - cp $9 - jr z, .asm_4d4c5 + cp 9 + jr z, .wraparound_up inc a ld [hl], a ret -.asm_4d4c5 +.wraparound_up ld [hl], $0 ret -.asm_4d4c8 - call Function4d4d5 +.down + call .getcurrentdigit ld a, [hl] and a - jr z, .asm_4d4d2 + jr z, .wraparound_down dec a ld [hl], a ret -.asm_4d4d2 - ld [hl], $9 +.wraparound_down + ld [hl], 9 ret ; 4d4d5 -Function4d4d5: ; 4d4d5 +.getcurrentdigit: ; 4d4d5 ld a, [StringBuffer2 + 5] ld e, a ld d, $0 @@ -43153,19 +43011,19 @@ Function4d4d5: ; 4d4d5 ret ; 4d4e0 -Function4d4e0: ; 4d4e0 +.ConvertDecIDToBytes: ; 4d4e0 ld hl, 0 ld de, StringBuffer2 + 4 ld bc, 1 - call Function4d501 + call .ConvertToBytes ld bc, 10 - call Function4d501 + call .ConvertToBytes ld bc, 100 - call Function4d501 + call .ConvertToBytes ld bc, 1000 - call Function4d501 + call .ConvertToBytes ld bc, 10000 -Function4d501: ; 4d501 +.ConvertToBytes: ; 4d501 ld a, [de] dec de push hl @@ -43178,25 +43036,24 @@ Function4d501: ; 4d501 ret ; 4d50f -Function4d50f: ; 4d50f +.CalculatePassword: ; 4d50f ld a, BANK(sPlayerData) call GetSRAMBank ld de, $0000 - ld hl, sPlayerData + PlayerID - wPlayerData + ld hl, sPlayerData + (PlayerID - wPlayerData) ld c, $2 - call Function4d533 - ld hl, sPlayerData + PlayerName - wPlayerData + call .ComponentFromNumber + ld hl, sPlayerData + (PlayerName - wPlayerData) ld c, $5 - call Function4d53e - ld hl, sPlayerData + Money - wPlayerData + call .ComponentFromString + ld hl, sPlayerData + (Money - wPlayerData) ld c, $3 - call Function4d533 + call .ComponentFromNumber call CloseSRAM ret ; 4d533 -Function4d533: ; 4d533 -.asm_4d533 +.ComponentFromNumber: ; 4d533 ld a, [hli] add e ld e, a @@ -43204,12 +43061,11 @@ Function4d533: ; 4d533 adc d ld d, a dec c - jr nz, .asm_4d533 + jr nz, .ComponentFromNumber ret ; 4d53e -Function4d53e: ; 4d53e -.asm_4d53e +.ComponentFromString: ; 4d53e ld a, [hli] cp "@" ret z @@ -43219,7 +43075,7 @@ Function4d53e: ; 4d53e adc d ld d, a dec c - jr nz, .asm_4d53e + jr nz, .ComponentFromString ret ; 4d54c @@ -43240,7 +43096,7 @@ Function4d54c: ; 4d54c ld a, [wcfa9] cp $1 ret z - callba Function4cf1f + callba EmptyAllSRAMBanks ret ; 4d580 @@ -45520,7 +45376,7 @@ Function4e779: ; 4e779 .asm_4e779 call DelayFrame push bc - call Functiona57 + call JoyTextDelay ld a, [hJoyDown] pop bc and B_BUTTON @@ -50592,7 +50448,7 @@ Palette_81a34: ; 81a34 ; 81a74 Function81a74: ; 81a74 - call Functiona57 + call JoyTextDelay ld a, [wcf63] cp $4 jr nc, .asm_81a8b @@ -52438,7 +52294,7 @@ Function843e6: ; 843e6 (21:43e6) Function843f0: ; 843f0 .asm_843f0 - call Functiona57 + call JoyTextDelay call Function846f6 jr c, .asm_8440f ld a, [wcf63] @@ -52656,7 +52512,7 @@ Function84560: ; 84560 ld a, $9 ld [wcf65], a .asm_84597 - call Functiona57 + call JoyTextDelay call Function846f6 jr c, .asm_845c0 ld a, [wcf63] @@ -53652,7 +53508,7 @@ Function86665: ; 86665 call Function86692 jr c, .asm_86690 .asm_8666e - call Functiona57 + call JoyTextDelay ld hl, hJoyLast ld a, [hl] and B_BUTTON @@ -56601,6 +56457,7 @@ endr add hl, bc ld a, [wc3b4] ld [hli], a +; read from the table ld a, [de] ld [hli], a inc de @@ -56611,6 +56468,7 @@ endr call Function8d109 ld [hli], a pop de + ld hl, $0004 add hl, bc ld a, e @@ -56908,6 +56766,8 @@ endr ; 8d189 Function8d189: ; 8d189 + ; Get the [bc+10]th entry in the data table + ; indexed at [bc+1] in Unknown_8d6e6 ld hl, $0001 add hl, bc ld e, [hl] @@ -56962,51 +56822,51 @@ endr ; 8d1c4 Unknown_8d1c4: ; 8d1c4 - db $01, $01, $00 - db $07, $04, $00 - db $08, $05, $05 - db $0a, $06, $00 - db $0b, $07, $06 - db $0c, $08, $06 - db $0d, $09, $07 - db $0e, $0a, $07 - db $10, $0b, $07 - db $08, $0c, $05 - db $11, $00, $00 - db $12, $0d, $08 - db $12, $0e, $08 - db $12, $0f, $08 - db $13, $10, $00 - db $15, $00, $00 - db $16, $11, $00 - db $17, $12, $00 - db $18, $12, $00 - db $19, $13, $00 - db $1a, $14, $00 - db $1b, $00, $00 - db $1d, $15, $00 - db $1e, $00, $00 - db $1d, $17, $00 - db $1f, $00, $00 - db $24, $19, $00 - db $25, $00, $00 - db $20, $13, $00 - db $26, $1a, $00 - db $2d, $00, $00 - db $2e, $00, $00 - db $2f, $00, $00 - db $30, $00, $00 - db $31, $00, $00 - db $32, $1b, $00 - db $33, $1c, $00 - db $34, $00, $00 - db $35, $1d, $00 - db $37, $1e, $00 - db $38, $1e, $00 - db $39, $20, $00 - db $3f, $21, $00 - db $3e, $22, $00 - db $40, $00, $00 + db $01, $01, $00 ; 00 + db $07, $04, $00 ; 01 + db $08, $05, $05 ; 02 + db $0a, $06, $00 ; 03 + db $0b, $07, $06 ; 04 + db $0c, $08, $06 ; 05 + db $0d, $09, $07 ; 06 + db $0e, $0a, $07 ; 07 + db $10, $0b, $07 ; 08 + db $08, $0c, $05 ; 09 + db $11, $00, $00 ; 0a + db $12, $0d, $08 ; 0b + db $12, $0e, $08 ; 0c + db $12, $0f, $08 ; 0d + db $13, $10, $00 ; 0e + db $15, $00, $00 ; 0f + db $16, $11, $00 ; 10 + db $17, $12, $00 ; 11 + db $18, $12, $00 ; 12 + db $19, $13, $00 ; 13 + db $1a, $14, $00 ; 14 + db $1b, $00, $00 ; 15 + db $1d, $15, $00 ; 16 + db $1e, $00, $00 ; 17 + db $1d, $17, $00 ; 18 + db $1f, $00, $00 ; 19 + db $24, $19, $00 ; 1a + db $25, $00, $00 ; 1b + db $20, $13, $00 ; 1c + db $26, $1a, $00 ; 1d + db $2d, $00, $00 ; 1e + db $2e, $00, $00 ; 1f + db $2f, $00, $00 ; 20 + db $30, $00, $00 ; 21 + db $31, $00, $00 ; 22 + db $32, $1b, $00 ; 23 + db $33, $1c, $00 ; 24 + db $34, $00, $00 ; 25 + db $35, $1d, $00 ; 26 + db $37, $1e, $00 ; 27 + db $38, $1e, $00 ; 28 + db $39, $20, $00 ; 29 + db $3f, $21, $00 ; 2a + db $3e, $22, $00 ; 2b + db $40, $00, $00 ; 2c ; 8d24b @@ -59253,19 +59113,16 @@ Unknown_8e6a5: ; 8e6a5 ; 8e706 -Unknown_8e706: ; 8e706 - dbbw $80, $01, Unknown_8e72a - dbbw $80, $01, Unknown_8e72a - dbbw $80, $01, Unknown_8e72a - dbbw $80, $01, Unknown_8e72a - dbbw $10, $37, Unknown_8e72a - dbbw $10, $11, Unknown_8e72a - dbbw $10, $39, Unknown_8e72a - dbbw $10, $24, Unknown_8e72a - dbbw $10, $21, Unknown_8e72a - -Unknown_8e72a: - ; nothing to see here +Unknown_8e706: ; Broken 2bpp pointers + dbbw $80, $01, $672a ; 128-tile 2bpp at 1:672a (inside Multiply) + dbbw $80, $01, $672a + dbbw $80, $01, $672a + dbbw $80, $01, $672a + dbbw $10, $37, $672a ; 16-tile 2bpp at 37:672a (within Tileset11GFX) + dbbw $10, $11, $672a ; 16-tile 2bpp at 11:672a (empty data) + dbbw $10, $39, $672a ; 16-tile 2bpp at 39:672a (empty data) + dbbw $10, $24, $672a ; 16-tile 2bpp at 24:672a (inside Function926f7) + dbbw $10, $21, $672a ; 16-tile 2bpp at 21:672a (inside Function8671c) Function8e72a: ; 8e72a add $10 @@ -59281,7 +59138,7 @@ Function8e72c: ; 8e72c and $1f call Function8e741 ld a, h - xor $ff + xor $ff ; cpl inc a ret ; 8e741 @@ -60780,7 +60637,7 @@ Function90672: ; 90672 (24:4672) ld c, $a call DelayFrames .asm_9070d - call Functiona57 + call JoyTextDelay call Function90795 jr nc, .asm_9070d ld a, [wc608 + 20] @@ -60807,7 +60664,7 @@ Function90672: ; 90672 (24:4672) ld c, 10 call DelayFrames .asm_90752 - call Functiona57 + call JoyTextDelay call Function90810 jr nc, .asm_90752 ld a, [BattleMonNick + 5] @@ -61151,7 +61008,7 @@ Special_SetDayOfWeek: ; 90913 ld c, $a call DelayFrames .asm_9096a - call Functiona57 + call JoyTextDelay call Function90993 jr nc, .asm_9096a call ExitMenu @@ -61498,7 +61355,7 @@ Function90b8d: ; 90b8d (24:4b8d) .loop call UpdateTime - call Functiona57 + call JoyTextDelay ld a, [wcf63] bit 7, a jr nz, .done @@ -62654,7 +62511,7 @@ Function91342: ; 91342 (24:5342) .asm_91398 push de - call Functiona57 + call JoyTextDelay pop de ld hl, hJoyPressed ld a, [hl] @@ -62978,7 +62835,7 @@ Function9191c: ; 9191c Function919b0: ; 919b0 .asm_919b0 - call Functiona57 + call JoyTextDelay ld hl, hJoyPressed ld a, [hl] and B_BUTTON @@ -63081,7 +62938,7 @@ PlayRadio: ; 91a53 ld c, 100 call DelayFrames .loop - call Functiona57 + call JoyTextDelay ld a, [hJoyPressed] and A_BUTTON | B_BUTTON jr nz, .stop @@ -63200,7 +63057,7 @@ _FlyMap: ; 91af3 call GetSGBLayout call Function32f9 .loop - call Functiona57 + call JoyTextDelay ld hl, hJoyPressed ld a, [hl] and B_BUTTON @@ -63626,7 +63483,7 @@ Function91d11: ; 91d11 xor a call Function91e1e .asm_91d6e - call Functiona57 + call JoyTextDelay ld hl, hJoyPressed ld a, [hl] and A_BUTTON | B_BUTTON @@ -64132,7 +63989,7 @@ Function92311: ; 92311 call GetSGBLayout call Function32f9 .loop - call Functiona57 + call JoyTextDelay ld hl, hJoyPressed ld a, [hl] and B_BUTTON @@ -68894,7 +68751,7 @@ endr xor a ld [wcf66], a .loop - call Functiona57 + call JoyTextDelay ld a, [hJoyLast] and A_BUTTON jr nz, .next @@ -68948,7 +68805,7 @@ endr ld hl, .PlaceYourBetText call Functione0489 .betloop - call Functiona57 + call JoyTextDelay ld a, [hJoyLast] and A_BUTTON jr nz, .betdone @@ -70472,7 +70329,7 @@ Functione1190: ; e1190 ld [wd0ec], a call DelayFrame .asm_e1217 - call Functiona57 + call JoyTextDelay ld a, [wcf63] bit 7, a jr nz, .asm_e123d @@ -71793,7 +71650,7 @@ Functione21a1: ; e21a1 (38:61a1) ld a, [wcf63] cp $7 jr nc, .asm_e21c8 - call Functiona57 + call JoyTextDelay ld hl, hJoypadPressed ; $ffa3 ld a, [hl] and A_BUTTON @@ -71900,7 +71757,7 @@ Functione2391: ; e2391 (38:6391) ld [wcb2e], a call DelayFrame .asm_e23b4 - call Functiona57 + call JoyTextDelay ld a, [wcf63] bit 7, a jr nz, .asm_e23c6 @@ -72162,7 +72019,7 @@ Functione2583: ; e2583 (38:6583) ld [wcb2e], a call DelayFrame .asm_e25a7 - call Functiona57 + call JoyTextDelay ld a, [wcf63] bit 7, a jr nz, .asm_e25b9 @@ -72411,7 +72268,7 @@ Functione2759: ; e2759 ld [wcb2e], a call DelayFrame .asm_e2781 - call Functiona57 + call JoyTextDelay ld a, [wcf63] bit 7, a jr nz, .asm_e2793 @@ -74578,7 +74435,7 @@ _OptionsMenu: ; e41d0 call GetSGBLayout call Function32f9 .asm_e4217 - call Functiona57 + call JoyTextDelay ld a, [hJoyPressed] and START | B_BUTTON jr nz, .ExitOptions @@ -75154,7 +75011,7 @@ Functione4579: ; e4579 callba GBCOnlyScreen call Functione45e8 .asm_e45c0 - call Functiona57 + call JoyTextDelay ld a, [hJoyLast] and BUTTONS jr nz, .asm_e45de @@ -75502,7 +75359,7 @@ CrystalIntro: ; e48ac push af call Functione4901 .loop: ; e48bc - call Functiona57 + call JoyTextDelay ld a, [hJoyLast] and BUTTONS jr nz, .ShutOffMusic @@ -75596,7 +75453,7 @@ IntroScenes: ; e491e (39:491e) NextIntroScene: ; e4956 (39:4956) - ld hl, wcf63 + ld hl, wIntroSceneIndex inc [hl] ret @@ -75647,32 +75504,32 @@ IntroScene1: ; e495b (39:495b) callba Function8cf53 call Functione549e xor a - ld [wcf64], a + ld [wIntroSceneFrameCounter], a ld [wcf65], a call NextIntroScene ret IntroScene2: ; e49d6 (39:49d6) ; First Unown (A) fades in, pulses, then fades out. - ld hl, wcf64 + ld hl, wIntroSceneFrameCounter ld a, [hl] inc [hl] cp $80 - jr nc, .asm_e49f9 + jr nc, .endscene cp $60 - jr nz, .asm_e49f1 + jr nz, .DontPlaySound push af ld de, $5858 call Functione51dc ld de, SFX_INTRO_UNOWN_1 call PlaySFX pop af -.asm_e49f1 +.DontPlaySound ld [wcf65], a xor a call Functione5223 ret -.asm_e49f9 +.endscene call NextIntroScene ret @@ -75720,20 +75577,20 @@ IntroScene3: ; e49fd (39:49fd) call Functione5516 call Functione549e xor a - ld [wcf64], a + ld [wIntroSceneFrameCounter], a call NextIntroScene ret IntroScene4: ; e4a69 (39:4a69) ; Scroll the outdoor panorama for a bit. call Functione552f - ld hl, wcf64 + ld hl, wIntroSceneFrameCounter ld a, [hl] cp $80 - jr z, .asm_e4a76 + jr z, .endscene inc [hl] ret -.asm_e4a76 +.endscene call NextIntroScene ret @@ -75796,39 +75653,39 @@ IntroScene6: ; e4af7 (39:4af7) ld a, [hl] inc [hl] cp $80 - jr nc, .asm_e4b3b + jr nc, .endscene cp $60 - jr z, .asm_e4b24 + jr z, .SecondUnown cp $40 - jr nc, .asm_e4b32 + jr nc, .StopUnown cp $20 - jr z, .asm_e4b0e - jr .asm_e4b1c -.asm_e4b0e + jr z, .FirstUnown + jr .NoUnown +.FirstUnown push af ld de, $3878 call Functione51dc ld de, SFX_INTRO_UNOWN_2 call PlaySFX pop af -.asm_e4b1c +.NoUnown ld [wcf65], a xor a call Functione5223 ret -.asm_e4b24 +.SecondUnown push af ld de, $7030 call Functione51dc ld de, SFX_INTRO_UNOWN_1 call PlaySFX pop af -.asm_e4b32 +.StopUnown ld [wcf65], a ld a, $1 call Functione5223 ret -.asm_e4b3b +.endscene call NextIntroScene ret @@ -75888,14 +75745,14 @@ IntroScene7: ; e4b3f (39:4b3f) ld [wc3c0], a call Functione549e xor a - ld [wcf64], a + ld [wIntroSceneFrameCounter], a ld [wcf65], a call NextIntroScene ret IntroScene8: ; e4bd3 (39:4bd3) ; Scroll the scene, then show Suicune running across the screen. - ld hl, wcf64 + ld hl, wIntroSceneFrameCounter ld a, [hl] inc [hl] cp $40 @@ -76032,7 +75889,7 @@ IntroScene11: ; e4c86 (39:4c86) callba Function8cf53 call Functione549e xor a - ld [wcf64], a + ld [wIntroSceneFrameCounter], a ld [wcf65], a call NextIntroScene ret @@ -76040,7 +75897,7 @@ IntroScene11: ; e4c86 (39:4c86) IntroScene12: ; e4cfa (39:4cfa) ; Even more Unown. call Functione4d36 - ld hl, wcf64 + ld hl, wIntroSceneFrameCounter ld a, [hl] inc [hl] cp $c0 @@ -76074,20 +75931,20 @@ IntroScene12: ; e4cfa (39:4cfa) ret Functione4d36: ; e4d36 (39:4d36) - ld a, [wcf64] + ld a, [wIntroSceneFrameCounter] ld c, a - ld hl, Unknown_e4d54 -.asm_e4d3d + ld hl, .UnownSounds +.loop ld a, [hli] - cp $ff + cp -1 ret z cp c - jr z, .asm_e4d48 + jr z, .playsound rept 2 inc hl endr - jr .asm_e4d3d -.asm_e4d48 + jr .loop +.playsound ld a, [hli] ld d, [hl] ld e, a @@ -76098,7 +75955,7 @@ endr ret ; e4d54 (39:4d54) -Unknown_e4d54: ; e4d54 +.UnownSounds: ; e4d54 dbw $00, SFX_INTRO_UNOWN_3 dbw $20, SFX_INTRO_UNOWN_2 dbw $40, SFX_INTRO_UNOWN_1 @@ -76633,7 +76490,7 @@ IntroScene28: ; e5152 (39:5152) ret .done - ld hl, wcf63 + ld hl, wIntroSceneIndex set 7, [hl] ret @@ -80056,16 +79913,16 @@ endr ; 1042b2 Function1042b2:: ; 1042b2 -.asm_1042b2 +.loop ld a, c cp $10 - jp c, Function1042d6 - jp z, Function1042d6 + jp c, .asm_1042d6 + jp z, .asm_1042d6 push bc push hl push de ld c, $10 - call Function1042d6 + call .asm_1042d6 pop de ld hl, $0080 add hl, de @@ -80078,10 +79935,10 @@ Function1042b2:: ; 1042b2 ld a, c sub $10 ld c, a - jr .asm_1042b2 + jr .loop ; 1042d6 -Function1042d6: ; 1042d6 +.asm_1042d6: ; 1042d6 ld a, [rSVBK] push af ld a, $6 diff --git a/misc/crystal_misc.asm b/misc/crystal_misc.asm index 4fe1476ff..a752e9e83 100644 --- a/misc/crystal_misc.asm +++ b/misc/crystal_misc.asm @@ -155,7 +155,7 @@ Function17a781: ; 17a781 (5e:6781) push af ld a, $1 ld [hInMenu], a - call Functiona57 + call JoyTextDelay pop af ld [hInMenu], a ret diff --git a/misc/mobile_22.asm b/misc/mobile_22.asm index 3dcb595f0..91daa912e 100644 --- a/misc/mobile_22.asm +++ b/misc/mobile_22.asm @@ -194,7 +194,7 @@ Function8921f: ; 8921f (22:521f) ret Function89235: ; 89235 (22:5235) - call Functiona36 + call JoyWaitAorB call PlayClickSFX ret @@ -3655,7 +3655,7 @@ Function8a78c: ; 8a78c (22:678c) call InitName call CloseSRAM call DelayFrame - call Functiona57 + call JoyTextDelay call Function891de call WhiteBGMap call Function893cc @@ -3731,7 +3731,7 @@ Function8a818: ; 8a818 (22:6818) ld de, .string_8a868 call PlaceString call WaitBGMap - call Functiona36 + call JoyWaitAorB .asm_8a863 call CloseSRAM scf @@ -3750,7 +3750,7 @@ Function8a818: ; 8a818 (22:6818) hlcoord 1, 13 call PlaceString call WaitBGMap - call Functiona36 + call JoyWaitAorB and a ret ; 8a88b (22:688b) @@ -3805,7 +3805,7 @@ Function8a8c3: ; 8a8c3 (22:68c3) ld de, String_8a926 call PlaceString call WaitBGMap - call Functiona36 + call JoyWaitAorB .asm_8a90f call Function89448 call Function891fe @@ -4057,7 +4057,7 @@ Function8aab6: ; 8aab6 (22:6ab6) ld de, String_8aaf0 call PlaceString call WaitBGMap - call Functiona36 + call JoyWaitAorB .asm_8aaeb call CloseSRAM scf diff --git a/misc/mobile_40.asm b/misc/mobile_40.asm index c3931c53e..140045eb8 100644 --- a/misc/mobile_40.asm +++ b/misc/mobile_40.asm @@ -332,7 +332,7 @@ Function100232: ; 100232 pop de call PlaceString call Function100320 - call Functiona36 + call JoyWaitAorB ret ; 10024d @@ -432,7 +432,7 @@ Function100301: ; 100301 callba Function10202c callba Function115dd3 call Function100320 - call Functiona36 + call JoyWaitAorB ret ; 100320 @@ -4979,7 +4979,7 @@ Function102142: ; 102142 call MenuTextBox ld de, SFX_LEVEL_UP call PlaySFX - call Functiona36 + call JoyWaitAorB call ExitMenu call Function10219f ld hl, UnknownText_0x1021d6 @@ -5022,7 +5022,7 @@ Function10219f: ; 10219f call Function10218d ld de, $c608 + 1 callba Function8ac4e - call Functiona36 + call JoyWaitAorB call PlayClickSFX call Function1013aa ret @@ -5056,7 +5056,7 @@ UnknownText_0x1021db: ; 1021d1 Function1021e0: ; 1021e0 call MenuTextBox - call Functiona36 + call JoyWaitAorB call ExitMenu ret ; 1021ea @@ -7749,7 +7749,7 @@ Mobile_SelectThreeMons: ; 10366e jr c, .asm_103696 callba Function8b1e1 jr nc, .asm_103690 - call Functiona36 + call JoyWaitAorB jr .asm_103696 .asm_103690 @@ -7772,7 +7772,7 @@ Mobile_SelectThreeMons: ; 10366e call YesNoBox jr c, .asm_1036b5 call Function1036f9 - call Functiona36 + call JoyWaitAorB .asm_1036b5 call Function103700 @@ -7794,7 +7794,7 @@ Mobile_SelectThreeMons: ; 10366e .asm_1036d9 callba Function8b1e1 jr nc, .asm_1036e6 - call Functiona36 + call JoyWaitAorB jr .asm_1036f4 .asm_1036e6 @@ -7804,7 +7804,7 @@ Mobile_SelectThreeMons: ; 10366e .asm_1036ec call Function1036f9 - call Functiona36 + call JoyWaitAorB jr .asm_1036b5 .asm_1036f4 @@ -7859,7 +7859,7 @@ Function103700: ; 103700 .asm_10373c ld hl, UnknownText_0x10377b call PrintText - call Functiona36 + call JoyWaitAorB scf ret ; 103747 @@ -7981,10 +7981,10 @@ Function1037eb: ; 1037eb jr nc, .asm_103807 ld hl, UnknownText_0x103819 call PrintText - call Functiona36 + call JoyWaitAorB ld hl, UnknownText_0x10381e call PrintText - call Functiona36 + call JoyWaitAorB xor a ld [ScriptVar], a ret @@ -8042,7 +8042,7 @@ endr ld [hl], a ld hl, UnknownText_0x103876 call PrintText - call Functiona36 + call JoyWaitAorB callba Script_reloadmappart callba Function4a94e jr c, .asm_103870 @@ -8074,7 +8074,7 @@ Function10387b: ; 10387b ld [StringBuffer2], a ld hl, UnknownText_0x103898 call PrintText - call Functiona36 + call JoyWaitAorB ret ; 103898 diff --git a/misc/mobile_45.asm b/misc/mobile_45.asm index 533990cec..935544f93 100644 --- a/misc/mobile_45.asm +++ b/misc/mobile_45.asm @@ -7716,7 +7716,7 @@ Function117699: ; 117699 (45:7699) ret Function1176ee: ; 1176ee (45:76ee) - call Functiona57 + call JoyTextDelay ld a, [wcd49] bit 7, a jr nz, .asm_117709 @@ -8189,7 +8189,7 @@ Function117ab4: ; 0x117ab4 ; 0x117acd Function117acd: ; 0x117acd - call Functiona57 + call JoyTextDelay ld a, [wcf63] bit 7, a jr nz, .asm_117ae2 ; 0x117ad5 $b @@ -8493,7 +8493,7 @@ asm_11800b ld a, $3 ld [rSVBK], a .asm_118024 - call Functiona57 + call JoyTextDelay call Function118473 ld a, [wcf66] cp $1b @@ -8534,7 +8534,7 @@ Function11805f: ; 11805f ld a, $3 ld [rSVBK], a .asm_11807d - call Functiona57 + call JoyTextDelay call Function118473 ld a, [wcf66] cp $1b @@ -8572,7 +8572,7 @@ Function1180b8: ; 1180b8 ld a, $3 ld [rSVBK], a .asm_1180d1 - call Functiona57 + call JoyTextDelay call Function118473 ld a, [wcf66] cp $28 @@ -8627,7 +8627,7 @@ Function118125: ; 118125 ld a, $3 ld [rSVBK], a .asm_11813e - call Functiona57 + call JoyTextDelay call Function118473 ld a, [wcf66] cp $f @@ -8712,7 +8712,7 @@ Function1181da: ; 1181da ld a, $3 ld [rSVBK], a .asm_1181f8 - call Functiona57 + call JoyTextDelay call Function118473 ld a, [wcf66] cp $28 @@ -8750,7 +8750,7 @@ Function118233: ; 118233 ld a, $3 ld [rSVBK], a .asm_11824c - call Functiona57 + call JoyTextDelay call Function118473 ld a, [wcf66] cp $1e @@ -8787,7 +8787,7 @@ Function118284: ; 118284 ld a, $3 ld [rSVBK], a ; $ff00+$70 .asm_11829d - call Functiona57 + call JoyTextDelay call Function118473 ld a, [wcf66] cp $20 @@ -8824,7 +8824,7 @@ Function1182d5: ; 1182d5 ld a, $3 ld [rSVBK], a .asm_1182ee - call Functiona57 + call JoyTextDelay call Function118473 ld a, [wcf66] cp $1b @@ -8862,7 +8862,7 @@ Function118329: ; 118329 ld a, $3 ld [rSVBK], a .asm_118342 - call Functiona57 + call JoyTextDelay call Function118473 ld a, [wcf66] cp $18 @@ -8899,7 +8899,7 @@ Function11837a: ; 11837a ld a, $3 ld [rSVBK], a .asm_118393 - call Functiona57 + call JoyTextDelay call Function118473 ld a, [wcf66] cp $19 @@ -14342,7 +14342,7 @@ Function11ac51: ; 11ac51 call Function11ad1b call DelayFrame .asm_11ac82 - call Functiona57 + call JoyTextDelay ld a, [wcf63] bit 7, a jr nz, .asm_11aca8 @@ -16935,7 +16935,7 @@ Function11c277: ; 11c277 (47:4277) Function11c283: ; 11c283 .asm_11c283 - call Functiona57 + call JoyTextDelay ld a, [hJoyPressed] ld [hJoypadPressed], a ld a, [wcf63] @@ -22187,7 +22187,7 @@ Function16d43b: ; 16d43b call GetSGBLayout call Function32f9 call WaitBGMap - call Functiona36 + call JoyWaitAorB call Function1d7d ret ; 16d465 @@ -22518,7 +22518,7 @@ Function16d7e7: ; 16d7e7 callba Function8cf62 .asm_16d7f4 - call Functiona57 + call JoyTextDelay call Function16d713 and a ret z @@ -23228,7 +23228,7 @@ Function1704f1: ; 1704f1 call ClearSprites call ClearScreen .asm_1704fa - call Functiona57 + call JoyTextDelay ld a, [wcf63] bit 7, a jr nz, .asm_17050f @@ -24539,7 +24539,7 @@ Function1719ed: ; 1719ed (5c:59ed) ret Function171a11: ; 171a11 (5c:5a11) - call Functiona57 + call JoyTextDelay ld a, [wcd49] bit 7, a jr nz, .asm_171a2c diff --git a/misc/mobile_5f.asm b/misc/mobile_5f.asm index 5bf223626..06cd74a7b 100644 --- a/misc/mobile_5f.asm +++ b/misc/mobile_5f.asm @@ -714,7 +714,7 @@ Function17d405: Function17d45a: ; 17d45a .asm_17d45a - call Functiona57 + call JoyTextDelay ld a, [wcd77] bit 7, a jr nz, .asm_17d46f @@ -3144,7 +3144,7 @@ Function17e3f0: ; 17e3f0 call Function17e415 call Function17e41e .asm_17e3f6 - call Functiona57 + call JoyTextDelay ld hl, hJoyPressed ld a, [hl] and $1 @@ -4678,7 +4678,7 @@ Function17f53d: ; 17f53d Function17f555: ; 17f555 .asm_17f555 - call Functiona57 + call JoyTextDelay call Function17f5ae ld a, [wc303] bit 7, a diff --git a/misc/unused_title.asm b/misc/unused_title.asm index 88c2331e2..6783f98a0 100644 --- a/misc/unused_title.asm +++ b/misc/unused_title.asm @@ -546,7 +546,7 @@ UnusedTitleFG_OAM: ; 10ecb1 Function10ed51: ; 10ed51 call _TitleScreen .loop - call Functiona57 + call JoyTextDelay ld a, [hJoyLast] ld b, a and 1 diff --git a/sram.asm b/sram.asm index 1201925d9..25d40e9b5 100644 --- a/sram.asm +++ b/sram.asm @@ -1,5 +1,5 @@ SECTION "Scratch", SRAM, BANK [0] - +SRAM_Begin:: sScratch:: @@ -49,6 +49,8 @@ sBackupGameDataEnd:: sBackupChecksum:: ds 2 s0_bf0f:: ds 1 sStackTop:: ds 2 + ds $ee +SRAM_End:: SECTION "SRAM Bank 1", SRAM, BANK [1] diff --git a/vram.asm b/vram.asm new file mode 100644 index 000000000..d434fd097 --- /dev/null +++ b/vram.asm @@ -0,0 +1,13 @@ +SECTION "VRAM0", VRAM, BANK [0] +VTiles0:: ds $800 +VTiles1:: ds $800 +VTiles2:: ds $800 +VBGMap0:: ds $400 +VBGMap1:: ds $400 + +SECTION "VRAM1", VRAM, BANK [1] +VTiles3:: ds $800 +VTiles4:: ds $800 +VTiles5:: ds $800 +VBGMap2:: ds $400 +VBGMap3:: ds $400 diff --git a/wram.asm b/wram.asm index dd97a450e..6eb1b78d1 100644 --- a/wram.asm +++ b/wram.asm @@ -130,18 +130,7 @@ channel_struct: MACRO ds 1 ; c132 ENDM -SECTION "CHR0", VRAM [$8000], BANK [0] -VTiles0:: -SECTION "CHR1", VRAM [$8800], BANK [0] -VTiles1:: -SECTION "CHR2", VRAM [$9000], BANK [0] -VTiles2:: -SECTION "BG0", VRAM [$9800], BANK [0] -VBGMap0:: -SECTION "BG1", VRAM [$9C00], BANK [0] -VBGMap1:: - - +INCLUDE "vram.asm" SECTION "Stack", WRAM0 wc000:: @@ -1191,14 +1180,18 @@ CurSpecies:: ; cf60 ds 1 wcf61:: ds 2 +wIntroSceneIndex:: wcf63:: ds 1 wNrOfBeatenBattleTowerTrainers:: wMomBankDigitCursorPosition:: +wIntroSceneFrameCounter:: wcf64:: ds 1 IF !DEF(CRYSTAL11) wPokedexStatus:: ENDC +wTitleScreenTimerLo:: wcf65:: ds 1 +wTitleScreenTimerHi:: wcf66:: ds 1 Requested2bpp:: ; cf67