diff options
-rw-r--r-- | data/predef_pointers.inc | 2 | ||||
-rw-r--r-- | home/math.asm | 25 | ||||
-rw-r--r-- | home/mon_stats.asm | 82 | ||||
-rw-r--r-- | home/scrolling_menu.asm | 93 | ||||
-rw-r--r-- | home/unknown_388f.asm | 101 | ||||
-rw-r--r-- | hram.asm | 4 | ||||
-rw-r--r-- | shim.sym | 22 | ||||
-rw-r--r-- | wram.asm | 14 |
8 files changed, 336 insertions, 7 deletions
diff --git a/data/predef_pointers.inc b/data/predef_pointers.inc index 2bf7e95..58b2de9 100644 --- a/data/predef_pointers.inc +++ b/data/predef_pointers.inc @@ -43,7 +43,7 @@ GiveItemPredef:: add_predef Function28c98 add_predef Function2d663 add_predef Function3d5ce - add_predef Function3f019 + add_predef PlaceGraphic add_predef Function3f068 ; 20 add_predef Function3f04a add_predef Function3d08c diff --git a/home/math.asm b/home/math.asm new file mode 100644 index 0000000..8b3db6f --- /dev/null +++ b/home/math.asm @@ -0,0 +1,25 @@ +include "constants.asm" + +if DEBUG +SECTION "Math utility functions", ROM0 [$3380] +else +SECTION "Math utility functions", ROM0 [$3344] +endc + +Multiply:: + push hl + push bc + callab _Multiply + pop bc + pop hl + ret + +Divide:: + push hl + push de + push bc + homecall _Divide + pop bc + pop de + pop hl + ret diff --git a/home/mon_stats.asm b/home/mon_stats.asm new file mode 100644 index 0000000..8d702e8 --- /dev/null +++ b/home/mon_stats.asm @@ -0,0 +1,82 @@ +include "constants.asm" + +if DEBUG +SECTION "Mon Stats", ROM0 [$394b] +else +SECTION "Mon Stats", ROM0 [$390f] +endc + +DrawBattleHPBar:: + push hl + push de + push bc + ld a, $60 + ld [hli], a + ld a, $61 + ld [hli], a + push hl + ld a, $62 +.asm_3957: ; 00:3957 + ld [hli], a + dec d + jr nz, .asm_3957 + ld a, $6b + add b + ld [hl], a + pop hl + ld a, e + and a + jr nz, .asm_396a + ld a, c + and a + jr z, .asm_397d + ld e, $1 +.asm_396a: ; 00:396a + ld a, e + sub $8 + jr c, .asm_3979 + ld e, a + ld a, $6a + ld [hli], a + ld a, e + and a + jr z, .asm_397d + jr .asm_396a + +.asm_3979: ; 00:3979 + ld a, $62 + add e + ld [hl], a +.asm_397d: ; 00:397d + pop bc + pop de + pop hl + ret + +PrepMonFrontpic:: + ld a, $1 + ld [wSpriteFlipped], a +_PrepMonFrontpic:: + ld a, [wMonDexIndex] + and a + jr z, .asm_39a8 + cp 252 + jr nc, .asm_39a8 + push hl + ld de, $9000 + call LoadMonFrontSprite + pop hl + xor a + ldh [hGraphicStartTile], a + lb bc, 7, 7 + predef PlaceGraphic + xor a + ld [wSpriteFlipped], a + ret + +.asm_39a8: ; 00:39a8 + xor a + ld [wSpriteFlipped], a + inc a + ld [wMonDexIndex], a + ret diff --git a/home/scrolling_menu.asm b/home/scrolling_menu.asm new file mode 100644 index 0000000..28d3d3e --- /dev/null +++ b/home/scrolling_menu.asm @@ -0,0 +1,93 @@ +include "constants.asm" + +if DEBUG +SECTION "Scrolling Menu", ROM0 [$3810] +else +SECTION "Scrolling Menu", ROM0 [$37D4] +endc + +Function3810:: + ld e, [hl] + inc hl + ld d, [hl] + inc hl + push hl + ld h, d + ld l, e + call CopyMenuHeader + pop hl + ld e, [hl] + inc hl + ld d, [hl] + inc hl + ld a, [de] + ld [wMenuCursorBuffer], a + push de + ld e, [hl] + inc hl + ld d, [hl] + inc hl + ld a, [de] + ld [wMenuScrollPosition], a + push de + call ScrollingMenu + pop de + ld a, [wMenuScrollPosition] + ld [de], a + pop de + ld a, [wMenuCursorY] + ld [de], a + ld a, [wMenuJoypad] + ret + +ScrollingMenu:: ; 00:383e + call CopyMenuData + ldh a, [hROMBank] + push af + + ld a, BANK(_InitScrollingMenu) ; and BANK(_ScrollingMenu) + call Bankswitch + + call _InitScrollingMenu + call SetPalettes + call _ScrollingMenu + + pop af + call Bankswitch + + ld a, [wMenuJoypad] + ret + +Function385a:: + push hl + jr asm_3865 + +Function385d:: + callab Function_8f1cb +asm_3865: ; 00:3865 + pop hl + call MenuTextBox + ld c, $0 + call Function3872 + call CloseWindow + ret + +Function3872:: ; 00:3872 + push bc + jr asm_387d + +Function3875:: + callab Function8cd0c +asm_387d: ; 00:387d + pop bc + call GetJoypad + ldh a, [hJoyDown] + and A_BUTTON | B_BUTTON + jr nz, .asm_388e + ld a, c + and a + jr z, Function3872 + dec c + jr z, Function3872 +.asm_388e: ; 00:388e + ret diff --git a/home/unknown_388f.asm b/home/unknown_388f.asm new file mode 100644 index 0000000..54aea4d --- /dev/null +++ b/home/unknown_388f.asm @@ -0,0 +1,101 @@ +include "constants.asm" + +if DEBUG +SECTION "Unknown 388F", ROM0 [$388F] +else +SECTION "Unknown 388F", ROM0 [$3853] +endc + + +Function388f:: + ret + +Function3890:: + callba Function14cac + ret + +Function3899:: + callba Function14dac + ret + +Function38a2:: + callba Function14dc4 + ret + +Function38ab:: + callba Function14ddd + ret + +Function38b4:: + callba Function14e00 + ret + +Function38bd:: + callba Function14e5f + ret + +Function38c6:: + callba Function14e27 + ret + +Function38cf:: + callba Function14e4a + ret + +Function38d8:: + ld hl, wc5ed + set 7, [hl] + ld a, $8 + ld [wd637], a + ret + +Function38e3:: + ldh a, [hJoyState] + and $f0 + ret z + call Function3233 + jp nz, Function323e + callab Function3ee3e + ld a, [wBattleMode] + and a + ret z + ld a, $3 + call Function2117 + call Function3240 + ret + +Function3904:: + predef Function3ef19 + ld a, $f3 + ldh [hMapEntryMethod], a + ld hl, wd4a9 + set 5, [hl] + ld hl, wJoypadFlags + set 4, [hl] + set 6, [hl] + ld a, $b + call Function2117 + ret + +Function391f:: + ret + +Function3910:: + ld a, [wcd5d] + cp $1 + jr z, .asm_392d + ld a, $4 + call Function2117 + ret + +.asm_392d: ; 00:392d + ld hl, wJoypadFlags + res 4, [hl] + ld hl, .text + call Function3111 + call RotateFourPalettesLeft + jp Init + +.text: + text "つぎは がんばるぞ!!" + done @@ -57,7 +57,9 @@ hJoyDebounceSrc:: db ; ffa5 hJoypadState2:: db ; ffa6 - ds 8 ; TODO + ds 6 ; TODO +hGraphicStartTile:: db ; ffad +hMoveMon:: db UNION @@ -17,11 +17,15 @@ 00:1CEB MenuBox 00:1D2D MenuBoxCoord2Tile 00:202C Function202c - +00:2117 Function2117 00:23DC LoadWildMons 00:23E5 FadeIn ; This is not OverworldFadeIn, but I don't know what it is 00:2C05 StartMenuCheck +00:3111 Function3111 00:3171 Function3171 +00:3233 Function3233 +00:323E Function323e +00:3240 Function3240 00:39BA PlayCry 00:3D86 WaitSFX 00:3D87 WaitSFX.wait @@ -116,6 +120,17 @@ ; ptr Copied to c5eb ; word Unknown (2 bytes) 05:470E UnknownMapBufferPointers +05:4CAC Function14cac +05:4DAC Function14dac +05:4DC4 Function14dc4 +05:4DDD Function14ddd +05:4E00 Function14e00 +05:4E5F Function14e5f +05:4E27 Function14e27 +05:4E4A Function14e4a + +09:426A _InitScrollingMenu +09:4287 _ScrollingMenu 0A:4C98 Function28c98 0A:4D6E Function28d6e @@ -135,8 +150,9 @@ 0F:691E Function3e91e 0F:6963 Function3e963 0F:69A9 _LoadWildMons +0F:6E3E Function3ee3e 0F:6F19 Function3ef19 -0F:7019 Function3f019 +0F:7019 PlaceGraphic 0F:704A Function3f04a 0F:7068 Function3f068 @@ -175,7 +191,9 @@ 23:44BE Function8c4be 23:4940 Function8c940 23:49C6 Function8c9c6 +23:4D0C Function8cd0c 23:60CC MenuMonIconGfx +23:71CB Function_8f1cb 24:4000 SetClockDialog 24:4239 SlotMachineGame @@ -100,7 +100,8 @@ wMapBuffer:: wMapScriptNumber:: db ; c5e8 wMapScriptNumberLocation:: dw ; c5e9 wUnknownMapPointer:: dw ; c5eb ; TODO - ds 19 ; TODO +wc5ed:: db ; c5ed + ds 18 ; TODO wMapBufferEnd:: ; c600 @@ -384,7 +385,10 @@ wFarCallBCBuffer:: ; cd54 dw ds 3 ; TODO -wVramState:: db +wVramState:: db ; cd59 + + ds 3 ; TODO +wcd5d:: db ; cd5d SECTION "CD72", WRAM0[$CD72] wcd72:: dw ; cd72 @@ -618,8 +622,10 @@ wBallQuantities:: db ; d1df SECTION "Rival's Name", WRAM0[$D258] wRivalsName:: ds 6 ; d258 -SECTION "D4AB", WRAM0[$D4AB] +SECTION "D4AB", WRAM0[$D4A9] +wd4a9:: db ; d4a9 + ds 1 ; TODO wJoypadFlags:: db ; d4ab ; 76543210 ; ||||\__/ @@ -652,6 +658,8 @@ ENDR wCurrMapObjectCount:: ; d5f6 db +SECTION "D637", WRAM0[$D637] +wd637:: db ; d637 SECTION "Used sprites", WRAM0[$D643] |