diff options
Diffstat (limited to 'engine')
83 files changed, 16213 insertions, 12452 deletions
diff --git a/engine/anim_hp_bar.asm b/engine/anim_hp_bar.asm new file mode 100755 index 000000000..3075ef323 --- /dev/null +++ b/engine/anim_hp_bar.asm @@ -0,0 +1,430 @@ +_AnimateHPBar: ; d627 + call Functiond65f + jr c, .do_player + call Functiond670 +.enemy_loop + push bc + push hl + call Functiond6e2 + pop hl + pop bc + push af + push bc + push hl + call Functiond730 + call Functiond7c9 + pop hl + pop bc + pop af + jr nc, .enemy_loop + ret + +.do_player + call Functiond670 +.player_loop + push bc + push hl + call Functiond6f5 + pop hl + pop bc + ret c + push af + push bc + push hl + call Functiond749 + call Functiond7c9 + pop hl + pop bc + pop af + jr nc, .player_loop + ret +; d65f + +Functiond65f: ; d65f + ld a, [Buffer2] + and a + jr nz, .player + ld a, [Buffer1] + cp 6 * 8 + jr nc, .player + and a + ret + +.player + scf + ret +; d670 + +Functiond670: ; d670 +; Buffer1-2: Max HP +; Buffer3-4: Old HP +; Buffer5-6: New HP + push hl + ld hl, Buffer1 + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + ld a, [hli] + ld c, a + ld a, [hli] + ld b, a + pop hl + call ComputeHPBarPixels + ld a, e + ld [wd1f1], a + + ld a, [Buffer5] + ld c, a + ld a, [Buffer6] + ld b, a + ld a, [Buffer1] + ld e, a + ld a, [Buffer2] + ld d, a + call ComputeHPBarPixels + ld a, e + ld [wd1f2], a + + push hl + ld hl, Buffer3 + ld a, [hli] + ld c, a + ld a, [hli] + ld b, a + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + pop hl + ld a, e + sub c + ld e, a + ld a, d + sbc b + ld d, a + jr c, .asm_d6c1 + ld a, [Buffer3] + ld [wd1f5], a + ld a, [Buffer5] + ld [wd1f6], a + ld bc, 1 + jr .asm_d6d9 + +.asm_d6c1 + ld a, [Buffer3] + ld [wd1f6], a + ld a, [Buffer5] + ld [wd1f5], a + ld a, e + xor $ff + inc a + ld e, a + ld a, d + xor $ff + ld d, a + ld bc, rIE +.asm_d6d9 + ld a, d + ld [wd1f3], a + ld a, e + ld [wd1f4], a + ret +; d6e2 + +Functiond6e2: ; d6e2 + ld hl, wd1f1 + ld a, [wd1f2] + cp [hl] + jr nz, .asm_d6ed + scf + ret + +.asm_d6ed + ld a, c + add [hl] + ld [hl], a + call Functiond839 + and a + ret +; d6f5 + +Functiond6f5: ; d6f5 +.asm_d6f5 + ld hl, Buffer3 + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + ld a, e + cp [hl] + jr nz, .asm_d707 + inc hl + ld a, d + cp [hl] + jr nz, .asm_d707 + scf + ret + +.asm_d707 + ld l, e + ld h, d + add hl, bc + ld a, l + ld [Buffer3], a + ld a, h + ld [wd1ed], a + push hl + push de + push bc + ld hl, Buffer1 + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + ld a, [hli] + ld c, a + ld a, [hli] + ld b, a + call ComputeHPBarPixels + pop bc + pop de + pop hl + ld a, e + ld hl, wd1f1 + cp [hl] + jr z, .asm_d6f5 + ld [hl], a + and a + ret +; d730 + +Functiond730: ; d730 + call Functiond784 + ld d, $6 + ld a, [wd10a] + and $1 + ld b, a + ld a, [wd1f1] + ld e, a + ld c, a + push de + call Functiond771 + pop de + call Functiond7b4 + ret +; d749 + +Functiond749: ; d749 + call Functiond784 + ld a, [Buffer3] + ld c, a + ld a, [wd1ed] + ld b, a + ld a, [Buffer1] + ld e, a + ld a, [Buffer2] + ld d, a + call ComputeHPBarPixels + ld c, e + ld d, $6 + ld a, [wd10a] + and $1 + ld b, a + push de + call Functiond771 + pop de + call Functiond7b4 + ret +; d771 + +Functiond771: ; d771 + ld a, [wd10a] + cp $2 + jr nz, .skip + ld a, $28 + add l + ld l, a + ld a, $0 + adc h + ld h, a +.skip + call DrawBattleHPBar + ret +; d784 + +Functiond784: ; d784 + ld a, [wd10a] + and a + ret z + cp $1 + jr z, .load_15 + ld de, $16 + jr .loaded_de + +.load_15 + ld de, $15 +.loaded_de + push hl + add hl, de + ld a, " " +rept 2 + ld [hli], a +endr + ld [hld], a + dec hl + ld a, [Buffer3] + ld [StringBuffer2 + 1], a + ld a, [wd1ed] + ld [StringBuffer2], a + ld de, StringBuffer2 + lb bc, 2, 3 + call PrintNum + pop hl + ret +; d7b4 + +Functiond7b4: ; d7b4 + ld a, [hCGB] + and a + ret z + ld hl, wd1f0 + call SetHPPal + ld a, [wd1f0] + ld c, a + callba Function8c43 + ret +; d7c9 + +Functiond7c9: ; d7c9 + ld a, [hCGB] + and a + jr nz, .cgb + call DelayFrame + call DelayFrame + ret + +.cgb + ld a, [wd10a] + and a + jr z, .load_0 + cp $1 + jr z, .load_1 + ld a, [CurPartyMon] + cp $3 + jr nc, .c_is_1 + ld c, $0 + jr .c_is_0 + +.c_is_1 + ld c, $1 +.c_is_0 + push af + cp $2 + jr z, .skip_delay + cp $5 + jr z, .skip_delay + ld a, $2 + ld [hBGMapMode], a + ld a, c + ld [hBGMapThird], a + call DelayFrame +.skip_delay + ld a, $1 + ld [hBGMapMode], a + ld a, c + ld [hBGMapThird], a + call DelayFrame + pop af + cp $2 + jr z, .two_frames + cp $5 + jr z, .two_frames + ret + +.two_frames + inc c + ld a, $2 + ld [hBGMapMode], a + ld a, c + ld [hBGMapThird], a + call DelayFrame + ld a, $1 + ld [hBGMapMode], a + ld a, c + ld [hBGMapThird], a + call DelayFrame + ret + +.load_0 + ld c, $0 + jr .finish + +.load_1 + ld c, $1 +.finish + call DelayFrame + ld a, c + ld [hBGMapThird], a + call DelayFrame + ret +; d839 + +Functiond839: ; d839 + ld a, [Buffer1] + ld c, a + ld b, 0 + ld hl, 0 + ld a, [wd1f1] + cp 6 * 8 + jr nc, .coppy_buffer + and a + jr z, .return_zero + call AddNTimes + ld b, 0 +.loop + ld a, l + sub 6 * 8 + ld l, a + ld a, h + sbc $0 + ld h, a + jr c, .done + inc b + jr .loop + +.done + push bc + ld bc, $80 + add hl, bc + pop bc + ld a, l + sub 6 * 8 + ld l, a + ld a, h + sbc $0 + ld h, a + jr c, .no_carry + inc b +.no_carry + ld a, [wd1f5] + cp b + jr nc, .finish + ld a, [wd1f6] + cp b + jr c, .finish + ld a, b +.finish + ld [Buffer3], a + ret + +.return_zero + xor a + ld [Buffer3], a + ret + +.coppy_buffer + ld a, [Buffer1] + ld [Buffer3], a + ret +; d88c diff --git a/engine/battle_start.asm b/engine/battle_start.asm index 845af9d2a..929ac04c1 100644 --- a/engine/battle_start.asm +++ b/engine/battle_start.asm @@ -1,11 +1,11 @@ Predef_StartBattle: ; 8c20f call Function8c26d ld a, [rBGP] - ld [wcfc7], a + ld [wBGP], a ld a, [rOBP0] - ld [wcfc8], a + ld [wOBP0], a ld a, [rOBP1] - ld [wcfc9], a + ld [wOBP1], a call DelayFrame ld hl, hVBlank ld a, [hl] @@ -35,7 +35,7 @@ Predef_StartBattle: ; 8c20f ld [rSVBK], a ld a, %11111111 - ld [wcfc7], a + ld [wBGP], a call DmgToCgbBGPals call DelayFrame xor a @@ -120,7 +120,7 @@ Function8c2cf: ; 8c2cf ld a, $6 ld [rSVBK], a push hl - ld hl, w6_d000 + ld hl, wDecompressScratch ld bc, $28 * $10 .loop @@ -132,7 +132,7 @@ Function8c2cf: ; 8c2cf jr nz, .loop pop hl - ld de, w6_d000 + ld de, wDecompressScratch ld b, BANK(Function8c2cf) ; BANK(@) ld c, $28 call Request2bpp @@ -264,8 +264,8 @@ StartTrainerBattle_Flash: ; 8c3ab (23:43ab) ret .DoFlashAnimation: ; 8c3b3 (23:43b3) - ld a, [wd847] - cp -1 + ld a, [wTimeOfDayPalset] + cp %11111111 ; dark cave jr z, .done ld hl, wcf64 ld a, [hl] @@ -278,7 +278,7 @@ StartTrainerBattle_Flash: ; 8c3ab (23:43ab) ld a, [hl] cp %00000001 jr z, .done - ld [wcfc7], a + ld [wBGP], a call DmgToCgbBGPals and a ret diff --git a/engine/billspc.asm b/engine/billspc.asm index a4dd02876..14f0509b2 100755 --- a/engine/billspc.asm +++ b/engine/billspc.asm @@ -13,19 +13,19 @@ _DepositPKMN: ; e2391 (38:6391) ld [hInMenu], a xor a ld [hMapAnims], a - call Functione2963 + call BillsPC_InitRAM xor a - ld [wcb2e], a + ld [wBillsPC_LoadedBox], a call DelayFrame -.asm_e23b4 +.loop call JoyTextDelay ld a, [wJumptableIndex] bit 7, a - jr nz, .asm_e23c6 - call Functione23d5 + jr nz, .done + call .RunJumptable call DelayFrame - jr .asm_e23b4 -.asm_e23c6 + jr .loop +.done call ClearSprites pop af ld [hInMenu], a @@ -35,106 +35,108 @@ _DepositPKMN: ; e2391 (38:6391) ld [Options], a ret -Functione23d5: ; e23d5 (38:63d5) +.RunJumptable: ; e23d5 (38:63d5) ld a, [wJumptableIndex] - ld hl, Jumptable_e23df - call Functione33df + ld hl, .Jumptable + call BillsPC_Jumptable jp [hl] -Jumptable_e23df: ; e23df (38:63df) - dw Functione23e9 - dw Functione241a - dw Functione245d - dw Functione247d - dw Functione2992 +.Jumptable: ; e23df (38:63df) + jumptable_start + jumptable .Init + jumptable .HandleJoypad + jumptable .WhatsUp + jumptable .Submenu + jumptable BillsPC_EndJumptableLoop -Functione23e9: ; e23e9 (38:63e9) +.Init: ; e23e9 (38:63e9) xor a ld [hBGMapMode], a call ClearSprites - call Functione2d30 - call Functione2a8e + call CopyBoxmonSpecies + call BillsPC_BoxName ld de, PCString_ChooseaPKMN - call Functione2a6e + call BillsPC_PlaceString ld a, $5 - ld [wcb2d], a - call Functione2c2c + ld [wBillsPC_NumMonsOnScreen], a + call BillsPC_RefreshTextboxes call PCMonInfo ld a, $ff ld [CurPartySpecies], a - ld a, $17 - call Functione33d0 + ld a, SCGB_17 + call BillsPC_ApplyPalettes call WaitBGMap - call Functione2e01 - call Functione298d + call BillsPC_UpdateSelectionCursor + call BillsPC_IncrementJumptableIndex ret -Functione241a: ; e241a (38:641a) +.HandleJoypad: ; e241a (38:641a) ld hl, hJoyPressed ; $ffa7 ld a, [hl] and B_BUTTON - jr nz, .asm_e2457 + jr nz, .b_button ld a, [hl] and A_BUTTON - jr nz, .asm_e2443 - call Functione29b5 + jr nz, .a_button + call Withdraw_UpDown and a ret z - call Functione2e01 + call BillsPC_UpdateSelectionCursor xor a ld [hBGMapMode], a - call Functione2c2c + call BillsPC_RefreshTextboxes call PCMonInfo ld a, $1 ld [hBGMapMode], a call DelayFrame call DelayFrame ret -.asm_e2443 - call Functione2def + +.a_button + call BillsPC_GetSelectedPokemonSpecies and a ret z - cp $ff - jr z, .asm_e2457 + cp -1 + jr z, .b_button ld a, $2 ld [wJumptableIndex], a ret ; e2452 (38:6452) -.asm_e2452 +.go_back ld hl, wJumptableIndex dec [hl] ret -.asm_e2457 +.b_button ld a, $4 ld [wJumptableIndex], a ret -Functione245d: ; e245d (38:645d) +.WhatsUp: ; e245d (38:645d) xor a ld [hBGMapMode], a call ClearSprites - call Functione2def + call BillsPC_GetSelectedPokemonSpecies ld [CurPartySpecies], a - ld a, $17 - call Functione33d0 + ld a, SCGB_17 + call BillsPC_ApplyPalettes ld de, PCString_WhatsUp - call Functione2a6e + call BillsPC_PlaceString ld a, $1 - ld [MenuSelection2], a - call Functione298d + ld [wMenuCursorY], a + call BillsPC_IncrementJumptableIndex ret -Functione247d: ; e247d (38:647d) +.Submenu: ; e247d (38:647d) ld hl, BillsPCDepositMenuDataHeader call CopyMenuDataHeader - ld a, [MenuSelection2] - call Function1d4b - call InterpretMenu2 + ld a, [wMenuCursorY] + call StoreTo_wMenuCursorBuffer + call VerticalMenu jp c, BillsPCDepositFuncCancel - ld a, [MenuSelection2] + ld a, [wMenuCursorY] dec a and $3 ld e, a @@ -149,76 +151,79 @@ endr jp [hl] BillsPCDepositJumptable: ; e24a1 (38:64a1) - dw BillsPCDepositFuncDeposit ; Deposit Pokemon - dw BillsPCDepositFuncStats ; Pokemon Stats - dw BillsPCDepositFuncRelease ; Release Pokemon - dw BillsPCDepositFuncCancel ; Cancel + jumptable_start + jumptable BillsPCDepositFuncDeposit ; Deposit Pokemon + jumptable BillsPCDepositFuncStats ; Pokemon Stats + jumptable BillsPCDepositFuncRelease ; Release Pokemon + jumptable BillsPCDepositFuncCancel ; Cancel BillsPCDepositFuncDeposit: ; e24a9 (38:64a9) - call Functione2f18 + call BillsPC_CheckMail_PreventBlackout jp c, BillsPCDepositFuncCancel - call Functione307c - jr c, .no_overflow_31 + call DepositPokemon + jr c, .box_full ld a, $0 ld [wJumptableIndex], a xor a - ld [wcb2b], a - ld [wcb2a], a + ld [wBillsPC_CursorPosition], a + ld [wBillsPC_ScrollPosition], a ret -.no_overflow_31 + +.box_full ld de, PCString_WhatsUp - call Functione2a6e + call BillsPC_PlaceString ret BillsPCDepositFuncStats: ; e24c8 (38:64c8) call LoadStandardMenuDataHeader - call Functione2f7e + call BillsPC_StatsScreen call ExitMenu call PCMonInfo - call Functione2def + call BillsPC_GetSelectedPokemonSpecies ld [CurPartySpecies], a - ld a, $17 - call Functione33d0 + ld a, SCGB_17 + call BillsPC_ApplyPalettes ret BillsPCDepositFuncRelease: ; e24e0 (38:64e0) - call Functione2f18 + call BillsPC_CheckMail_PreventBlackout jr c, BillsPCDepositFuncCancel - call Functione2f5f + call BillsPC_IsMonAnEgg jr c, BillsPCDepositFuncCancel - ld a, [MenuSelection2] + ld a, [wMenuCursorY] push af ld de, PCString_ReleasePKMN - call Functione2a6e + call BillsPC_PlaceString call LoadStandardMenuDataHeader lb bc, 14, 11 call PlaceYesNoBox - ld a, [MenuSelection2] + ld a, [wMenuCursorY] dec a call ExitMenu and a - jr nz, .asm_e252c - ld a, [wcb2b] - ld hl, wcb2a + jr nz, .failed_release + ld a, [wBillsPC_CursorPosition] + ld hl, wBillsPC_ScrollPosition add [hl] ld [CurPartyMon], a xor a ld [wPokemonWithdrawDepositParameter], a - callba Functione039 - call Functione3180 + callba RemoveMonFromPartyOrBox + call ReleasePKMN_ByePKMN ld a, $0 ld [wJumptableIndex], a xor a - ld [wcb2b], a - ld [wcb2a], a + ld [wBillsPC_CursorPosition], a + ld [wBillsPC_ScrollPosition], a pop af ret -.asm_e252c + +.failed_release ld de, PCString_WhatsUp - call Functione2a6e + call BillsPC_PlaceString pop af - ld [MenuSelection2], a + ld [wMenuCursorY], a ret BillsPCDepositFuncCancel: ; e2537 (38:6537) @@ -231,11 +236,11 @@ BillsPCDepositMenuDataHeader: ; 0xe253d (38:653d) db $40 ; flags db 04, 09 ; start coords db 13, 19 ; end coords - dw BillsPCDepositMenuData + dw .MenuData2 db 1 ; default option ; 0xe2545 -BillsPCDepositMenuData: ; 0xe2545 (38:6545) +.MenuData2: ; 0xe2545 (38:6545) db $80 ; flags db 4 ; items db "DEPOSIT@" @@ -244,18 +249,19 @@ BillsPCDepositMenuData: ; 0xe2545 (38:6545) db "CANCEL@" ; 0xe2564 (38:6564) -Functione2564: ; e2564 +BillsPC_ClearThreeBoxes: ; e2564 +; unreferenced hlcoord 0, 0 - ld b, $4 - ld c, $8 + ld b, 4 + ld c, 8 call ClearBox hlcoord 0, 4 - ld b, $a - ld c, $9 + ld b, 10 + ld c, 9 call ClearBox hlcoord 0, 14 - ld b, $2 - ld c, $8 + ld b, 2 + ld c, 8 call ClearBox ret ; e2583 @@ -275,19 +281,19 @@ _WithdrawPKMN: ; e2583 (38:6583) ld [hInMenu], a xor a ld [hMapAnims], a - call Functione2963 - ld a, $f - ld [wcb2e], a + call BillsPC_InitRAM + ld a, NUM_BOXES + 1 + ld [wBillsPC_LoadedBox], a call DelayFrame -.asm_e25a7 +.loop call JoyTextDelay ld a, [wJumptableIndex] bit 7, a - jr nz, .no_overflow_49 - call Functione25c8 + jr nz, .done + call .RunJumptable call DelayFrame - jr .asm_e25a7 -.no_overflow_49 + jr .loop +.done call ClearSprites pop af ld [hInMenu], a @@ -297,109 +303,109 @@ _WithdrawPKMN: ; e2583 (38:6583) ld [Options], a ret -Functione25c8: ; e25c8 (38:65c8) +.RunJumptable: ; e25c8 (38:65c8) ld a, [wJumptableIndex] - ld hl, .jumptable - call Functione33df + ld hl, .Jumptable + call BillsPC_Jumptable jp [hl] -.jumptable: ; e25d2 (38:65d2) - dw Functione25dc - dw Functione2612 - dw Functione2655 - dw BillsPC_Withdraw - dw Functione2992 +.Jumptable: ; e25d2 (38:65d2) + jumptable_start + jumptable .Init + jumptable .Joypad + jumptable .PrepSubmenu + jumptable BillsPC_Withdraw + jumptable BillsPC_EndJumptableLoop -Functione25dc: ; e25dc (38:65dc) - ld a, $f - ld [wcb2e], a +.Init: ; e25dc (38:65dc) + ld a, NUM_BOXES + 1 + ld [wBillsPC_LoadedBox], a xor a ld [hBGMapMode], a call ClearSprites - call Functione2d30 - call Functione2a8e + call CopyBoxmonSpecies + call BillsPC_BoxName ld de, PCString_ChooseaPKMN - call Functione2a6e + call BillsPC_PlaceString ld a, $5 - ld [wcb2d], a - call Functione2c2c + ld [wBillsPC_NumMonsOnScreen], a + call BillsPC_RefreshTextboxes call PCMonInfo ld a, $ff ld [CurPartySpecies], a - ld a, $17 - call Functione33d0 + ld a, SCGB_17 + call BillsPC_ApplyPalettes call WaitBGMap - call Functione2e01 - call Functione298d + call BillsPC_UpdateSelectionCursor + call BillsPC_IncrementJumptableIndex ret -Functione2612: ; e2612 (38:6612) +.Joypad: ; e2612 (38:6612) ld hl, hJoyPressed ; $ffa7 ld a, [hl] and B_BUTTON - jr nz, .asm_e264f + jr nz, .b_button ld a, [hl] and A_BUTTON - jr nz, .asm_e263b - call Functione29b5 + jr nz, .a_button + call Withdraw_UpDown and a ret z - call Functione2e01 + call BillsPC_UpdateSelectionCursor xor a ld [hBGMapMode], a - call Functione2c2c + call BillsPC_RefreshTextboxes call PCMonInfo ld a, $1 ld [hBGMapMode], a call DelayFrame call DelayFrame ret -.asm_e263b - call Functione2def +.a_button + call BillsPC_GetSelectedPokemonSpecies and a ret z - cp $ff - jr z, .asm_e264f + cp -1 + jr z, .b_button ld a, $2 ld [wJumptableIndex], a - ret -; e264a (38:664a) + ret ; e264a (38:664a) -.asm_e264a +.unused ld hl, wJumptableIndex dec [hl] ret -.asm_e264f +.b_button ld a, $4 ld [wJumptableIndex], a ret ; e2655 -Functione2655: ; e2655 (38:6655) +.PrepSubmenu: ; e2655 (38:6655) xor a ld [hBGMapMode], a call ClearSprites - call Functione2def + call BillsPC_GetSelectedPokemonSpecies ld [CurPartySpecies], a - ld a, $17 - call Functione33d0 + ld a, SCGB_17 + call BillsPC_ApplyPalettes ld de, PCString_WhatsUp - call Functione2a6e + call BillsPC_PlaceString ld a, $1 - ld [MenuSelection2], a - call Functione298d + ld [wMenuCursorY], a + call BillsPC_IncrementJumptableIndex ret BillsPC_Withdraw: ; e2675 (38:6675) ld hl, .MenuDataHeader call CopyMenuDataHeader - ld a, [MenuSelection2] - call Function1d4b - call InterpretMenu2 + ld a, [wMenuCursorY] + call StoreTo_wMenuCursorBuffer + call VerticalMenu jp c, .cancel - ld a, [MenuSelection2] + ld a, [wMenuCursorY] dec a and 3 ld e, a @@ -421,67 +427,67 @@ endr .withdraw: ; e26a1 (38:66a1) - call Functione2f18 + call BillsPC_CheckMail_PreventBlackout jp c, .cancel call TryWithdrawPokemon jr c, .FailedWithdraw ld a, $0 ld [wJumptableIndex], a xor a - ld [wcb2b], a - ld [wcb2a], a + ld [wBillsPC_CursorPosition], a + ld [wBillsPC_ScrollPosition], a ret .FailedWithdraw ld de, PCString_WhatsUp - call Functione2a6e + call BillsPC_PlaceString ret .stats: ; e26c0 (38:66c0) call LoadStandardMenuDataHeader - call Functione2f7e + call BillsPC_StatsScreen call ExitMenu call PCMonInfo - call Functione2def + call BillsPC_GetSelectedPokemonSpecies ld [CurPartySpecies], a - ld a, $17 - call Functione33d0 + ld a, SCGB_17 + call BillsPC_ApplyPalettes ret .release: ; e26d8 (38:66d8) - ld a, [MenuSelection2] + ld a, [wMenuCursorY] push af - call Functione2f5f + call BillsPC_IsMonAnEgg jr c, .FailedRelease ld de, PCString_ReleasePKMN - call Functione2a6e + call BillsPC_PlaceString call LoadStandardMenuDataHeader lb bc, 14, 11 call PlaceYesNoBox - ld a, [MenuSelection2] + ld a, [wMenuCursorY] dec a call ExitMenu and a jr nz, .FailedRelease - ld a, [wcb2b] - ld hl, wcb2a + ld a, [wBillsPC_CursorPosition] + ld hl, wBillsPC_ScrollPosition add [hl] ld [CurPartyMon], a ld a, PC_DEPOSIT ld [wPokemonWithdrawDepositParameter], a - callba Functione039 - call Functione3180 + callba RemoveMonFromPartyOrBox + call ReleasePKMN_ByePKMN ld a, $0 ld [wJumptableIndex], a xor a - ld [wcb2b], a - ld [wcb2a], a + ld [wBillsPC_CursorPosition], a + ld [wBillsPC_ScrollPosition], a pop af ret .FailedRelease ld de, PCString_WhatsUp - call Functione2a6e + call BillsPC_PlaceString pop af - ld [MenuSelection2], a + ld [wMenuCursorY], a ret .cancel: ; e272b (38:672b) @@ -522,18 +528,18 @@ _MovePKMNWithoutMail: ; e2759 ld [hInMenu], a xor a ld [hMapAnims], a - call Functione2963 + call BillsPC_InitRAM ld a, [wCurBox] and $f inc a - ld [wcb2e], a + ld [wBillsPC_LoadedBox], a call DelayFrame .asm_e2781 call JoyTextDelay ld a, [wJumptableIndex] bit 7, a jr nz, .asm_e2793 - call Functione27a2 + call .RunJumptable call DelayFrame jr .asm_e2781 @@ -548,61 +554,62 @@ _MovePKMNWithoutMail: ; e2759 ret ; e27a2 -Functione27a2: ; e27a2 +.RunJumptable: ; e27a2 ld a, [wJumptableIndex] - ld hl, Jumptable_e27ac - call Functione33df + ld hl, .Jumptable + call BillsPC_Jumptable jp [hl] ; e27ac -Jumptable_e27ac: ; e27ac - dw Functione27ba - dw Functione27eb - dw Functione283d - dw Functione285d - dw Functione28df - dw Functione2903 - dw Functione2992 +.Jumptable: ; e27ac + jumptable_start + jumptable .Init + jumptable .Joypad + jumptable .PrepSubmenu + jumptable .MoveMonWOMailSubmenu + jumptable .PrepInsertCursor + jumptable .Joypad2 + jumptable BillsPC_EndJumptableLoop ; e27ba -Functione27ba: ; e27ba +.Init: ; e27ba xor a ld [hBGMapMode], a call ClearSprites - call Functione2d30 + call CopyBoxmonSpecies ld de, PCString_ChooseaPKMN - call Functione2a6e - ld a, $5 - ld [wcb2d], a - call Functione2c2c - call Functione2a80 + call BillsPC_PlaceString + ld a, 5 + ld [wBillsPC_NumMonsOnScreen], a + call BillsPC_RefreshTextboxes + call BillsPC_MoveMonWOMail_BoxNameAndArrows call PCMonInfo ld a, $ff ld [CurPartySpecies], a - ld a, $17 - call Functione33d0 + ld a, SCGB_17 + call BillsPC_ApplyPalettes call WaitBGMap - call Functione2e01 - call Functione298d + call BillsPC_UpdateSelectionCursor + call BillsPC_IncrementJumptableIndex ret ; e27eb -Functione27eb: ; e27eb +.Joypad: ; e27eb ld hl, hJoyPressed ld a, [hl] and B_BUTTON - jr nz, .asm_e2837 + jr nz, .b_button ld a, [hl] and A_BUTTON - jr nz, .asm_e2823 - call Functione29d0 - jr c, .asm_e2816 + jr nz, .a_button + call MovePkmnWithoutMail_DPad + jr c, .d_pad and a ret z - call Functione2e01 + call BillsPC_UpdateSelectionCursor xor a ld [hBGMapMode], a - call Functione2c2c + call BillsPC_RefreshTextboxes call PCMonInfo ld a, $1 ld [hBGMapMode], a @@ -610,63 +617,64 @@ Functione27eb: ; e27eb call DelayFrame ret -.asm_e2816 +.d_pad xor a - ld [wcb2b], a - ld [wcb2a], a + ld [wBillsPC_CursorPosition], a + ld [wBillsPC_ScrollPosition], a ld a, $0 ld [wJumptableIndex], a ret -.asm_e2823 - call Functione2def +.a_button + call BillsPC_GetSelectedPokemonSpecies and a ret z - cp $ff - jr z, .asm_e2837 + cp -1 + jr z, .b_button ld a, $2 ld [wJumptableIndex], a ret +.unused ld hl, wJumptableIndex dec [hl] ret -.asm_e2837 +.b_button ld a, $6 ld [wJumptableIndex], a ret ; e283d -Functione283d: ; e283d +.PrepSubmenu: ; e283d xor a ld [hBGMapMode], a call ClearSprites - call Functione2def + call BillsPC_GetSelectedPokemonSpecies ld [CurPartySpecies], a - ld a, $17 - call Functione33d0 + ld a, SCGB_17 + call BillsPC_ApplyPalettes ld de, PCString_WhatsUp - call Functione2a6e + call BillsPC_PlaceString ld a, $1 - ld [MenuSelection2], a - call Functione298d + ld [wMenuCursorY], a + call BillsPC_IncrementJumptableIndex ret ; e285d -Functione285d: ; e285d - ld hl, MenuDataHeader_0xe28c3 +.MoveMonWOMailSubmenu: ; e285d + ld hl, .MenuDataHeader call CopyMenuDataHeader - ld a, [MenuSelection2] - call Function1d4b - call InterpretMenu2 - jp c, Functione28bd - ld a, [MenuSelection2] + ld a, [wMenuCursorY] + call StoreTo_wMenuCursorBuffer + call VerticalMenu + jp c, .Cancel + ld a, [wMenuCursorY] dec a and 3 ld e, a ld d, 0 - ld hl, Jumptable_e2881 + ld hl, .Jumptable2 rept 2 add hl, de endr @@ -676,53 +684,53 @@ endr jp [hl] ; e2881 -Jumptable_e2881: ; e2881 - dw Functione2887 - dw Functione28a5 - dw Functione28bd +.Jumptable2: ; e2881 + dw .Move + dw .Stats + dw .Cancel ; e2887 -Functione2887: ; e2887 - call Functione2f18 - jp c, Functione28bd - ld a, [wcb2a] - ld [wcb2f], a - ld a, [wcb2b] - ld [wcb30], a - ld a, [wcb2e] - ld [wcb31], a +.Move: ; e2887 + call BillsPC_CheckMail_PreventBlackout + jp c, .Cancel + ld a, [wBillsPC_ScrollPosition] + ld [wBillsPC_BackupScrollPosition], a + ld a, [wBillsPC_CursorPosition] + ld [wBillsPC_BackupCursorPosition], a + ld a, [wBillsPC_LoadedBox] + ld [wBillsPC_BackupLoadedBox], a ld a, $4 ld [wJumptableIndex], a ret ; e28a5 -Functione28a5: ; e28a5 +.Stats: ; e28a5 call LoadStandardMenuDataHeader - call Functione2f7e + call BillsPC_StatsScreen call ExitMenu call PCMonInfo - call Functione2def + call BillsPC_GetSelectedPokemonSpecies ld [CurPartySpecies], a - ld a, $17 - call Functione33d0 + ld a, SCGB_17 + call BillsPC_ApplyPalettes ret ; e28bd -Functione28bd: ; e28bd +.Cancel: ; e28bd ld a, $0 ld [wJumptableIndex], a ret ; e28c3 -MenuDataHeader_0xe28c3: ; 0xe28c3 +.MenuDataHeader: ; 0xe28c3 db $40 ; flags db 04, 09 ; start coords db 13, 19 ; end coords - dw MenuData2_0xe28cb + dw .MenuData2 db 1 ; default option ; 0xe28cb -MenuData2_0xe28cb: ; 0xe28cb +.MenuData2: ; 0xe28cb db $80 ; flags db 3 ; items db "MOVE@" @@ -730,84 +738,84 @@ MenuData2_0xe28cb: ; 0xe28cb db "CANCEL@" ; 0xe28df -Functione28df: ; e28df +.PrepInsertCursor: ; e28df xor a ld [hBGMapMode], a - call Functione2d30 + call CopyBoxmonSpecies ld de, PCString_MoveToWhere - call Functione2a6e + call BillsPC_PlaceString ld a, $5 - ld [wcb2d], a - call Functione2c2c - call Functione2a80 + ld [wBillsPC_NumMonsOnScreen], a + call BillsPC_RefreshTextboxes + call BillsPC_MoveMonWOMail_BoxNameAndArrows call ClearSprites - call Functione2e8c + call BillsPC_UpdateInsertCursor call WaitBGMap - call Functione298d + call BillsPC_IncrementJumptableIndex ret ; e2903 -Functione2903: ; e2903 +.Joypad2: ; e2903 ld hl, hJoyPressed ld a, [hl] and B_BUTTON - jr nz, .asm_e294b + jr nz, .b_button_2 ld a, [hl] and A_BUTTON - jr nz, .asm_e2938 - call Functione29f4 - jr c, .asm_e292b + jr nz, .a_button_2 + call MovePkmnWithoutMail_DPad_2 + jr c, .dpad_2 and a ret z - call Functione2e8c + call BillsPC_UpdateInsertCursor xor a ld [hBGMapMode], a - call Functione2c2c + call BillsPC_RefreshTextboxes ld a, $1 ld [hBGMapMode], a call DelayFrame call DelayFrame ret -.asm_e292b +.dpad_2 xor a - ld [wcb2b], a - ld [wcb2a], a + ld [wBillsPC_CursorPosition], a + ld [wBillsPC_ScrollPosition], a ld a, $4 ld [wJumptableIndex], a ret -.asm_e2938 - call Functione2ee5 - jr c, .asm_e2946 - call Functione31e7 +.a_button_2 + call BillsPC_CheckSpaceInDestination + jr c, .no_space + call MovePKMNWitoutMail_InsertMon ld a, $0 ld [wJumptableIndex], a ret -.asm_e2946 +.no_space ld hl, wJumptableIndex dec [hl] ret -.asm_e294b - ld a, [wcb2f] - ld [wcb2a], a - ld a, [wcb30] - ld [wcb2b], a - ld a, [wcb31] - ld [wcb2e], a +.b_button_2 + ld a, [wBillsPC_BackupScrollPosition] + ld [wBillsPC_ScrollPosition], a + ld a, [wBillsPC_BackupCursorPosition] + ld [wBillsPC_CursorPosition], a + ld a, [wBillsPC_BackupLoadedBox] + ld [wBillsPC_LoadedBox], a ld a, $0 ld [wJumptableIndex], a ret ; e2963 -Functione2963: ; e2963 (38:6963) +BillsPC_InitRAM: ; e2963 (38:6963) call ClearBGPalettes call ClearSprites call ClearTileMap - call Functione33e8 - ld hl, OverworldMap + call BillsPC_InitGFX + ld hl, wBillsPCPokemonList ld bc, $338 xor a call ByteFill @@ -816,185 +824,185 @@ Functione2963: ; e2963 (38:6963) ld [wcf64], a ld [wcf65], a ld [wcf66], a - ld [wcb2b], a - ld [wcb2a], a + ld [wBillsPC_CursorPosition], a + ld [wBillsPC_ScrollPosition], a ret -Functione298d: ; e298d (38:698d) +BillsPC_IncrementJumptableIndex: ; e298d (38:698d) ld hl, wJumptableIndex inc [hl] ret -Functione2992: ; e2992 (38:6992) +BillsPC_EndJumptableLoop: ; e2992 (38:6992) ld hl, wJumptableIndex set 7, [hl] ret -Functione2998: ; e2998 (38:6998) - ld a, [wcb2d] +_StatsScreenDPad: ; e2998 (38:6998) + ld a, [wBillsPC_NumMonsOnScreen] ld d, a - ld a, [wcb2c] + ld a, [wBillsPC_NumMonsInBox] and a - jr z, .asm_e29b2 + jr z, .empty dec a cp $1 - jr z, .asm_e29b2 + jr z, .empty ld e, a ld a, [hl] and D_UP - jr nz, Functione2a18 + jr nz, BillsPC_PressUp ld a, [hl] and D_DOWN - jr nz, Functione2a2c -.asm_e29b2 - jp Functione2a65 + jr nz, BillsPC_PressDown +.empty + jp BillsPC_JoypadDidNothing -Functione29b5: ; e29b5 (38:69b5) +Withdraw_UpDown: ; e29b5 (38:69b5) ld hl, hJoyLast - ld a, [wcb2d] + ld a, [wBillsPC_NumMonsOnScreen] ld d, a - ld a, [wcb2c] + ld a, [wBillsPC_NumMonsInBox] ld e, a and a - jr z, .asm_e29cd + jr z, .empty ld a, [hl] and D_UP - jr nz, Functione2a18 + jr nz, BillsPC_PressUp ld a, [hl] and D_DOWN - jr nz, Functione2a2c -.asm_e29cd - jp Functione2a65 + jr nz, BillsPC_PressDown +.empty + jp BillsPC_JoypadDidNothing ; e29d0 (38:69d0) -Functione29d0: ; e29d0 +MovePkmnWithoutMail_DPad: ; e29d0 ld hl, hJoyLast - ld a, [wcb2d] + ld a, [wBillsPC_NumMonsOnScreen] ld d, a - ld a, [wcb2c] + ld a, [wBillsPC_NumMonsInBox] ld e, a and a - jr z, .asm_e29e8 + jr z, .check_left_right ld a, [hl] and D_UP - jr nz, Functione2a18 + jr nz, BillsPC_PressUp ld a, [hl] and D_DOWN - jr nz, Functione2a2c + jr nz, BillsPC_PressDown -.asm_e29e8 +.check_left_right ld a, [hl] and D_LEFT - jr nz, Functione2a48 + jr nz, BillsPC_PressLeft ld a, [hl] and D_RIGHT - jr nz, Functione2a56 - jr Functione2a65 + jr nz, BillsPC_PressRight + jr BillsPC_JoypadDidNothing -Functione29f4: ; e29f4 +MovePkmnWithoutMail_DPad_2: ; e29f4 ld hl, hJoyLast - ld a, [wcb2d] + ld a, [wBillsPC_NumMonsOnScreen] ld d, a - ld a, [wcb2c] + ld a, [wBillsPC_NumMonsInBox] ld e, a and a - jr z, .asm_e2a0c + jr z, .check_left_right ld a, [hl] and D_UP - jr nz, Functione2a18 + jr nz, BillsPC_PressUp ld a, [hl] and D_DOWN - jr nz, Functione2a2c + jr nz, BillsPC_PressDown -.asm_e2a0c +.check_left_right ld a, [hl] and D_LEFT - jr nz, Functione2a48 + jr nz, BillsPC_PressLeft ld a, [hl] and D_RIGHT - jr nz, Functione2a56 - jr Functione2a65 + jr nz, BillsPC_PressRight + jr BillsPC_JoypadDidNothing -Functione2a18: ; e2a18 (38:6a18) - ld hl, wcb2b +BillsPC_PressUp: ; e2a18 (38:6a18) + ld hl, wBillsPC_CursorPosition ld a, [hl] and a - jr z, .asm_e2a22 + jr z, .top dec [hl] - jr Functione2a68 + jr BillsPC_UpDownDidSomething -.asm_e2a22 - ld hl, wcb2a +.top + ld hl, wBillsPC_ScrollPosition ld a, [hl] and a - jr z, Functione2a65 + jr z, BillsPC_JoypadDidNothing dec [hl] - jr Functione2a68 + jr BillsPC_UpDownDidSomething -Functione2a2c: ; e2a2c (38:6a2c) - ld a, [wcb2b] - ld hl, wcb2a +BillsPC_PressDown: ; e2a2c (38:6a2c) + ld a, [wBillsPC_CursorPosition] + ld hl, wBillsPC_ScrollPosition add [hl] inc a cp e - jr nc, Functione2a65 + jr nc, BillsPC_JoypadDidNothing - ld hl, wcb2b + ld hl, wBillsPC_CursorPosition ld a, [hl] inc a cp d - jr nc, .asm_e2a42 + jr nc, .not_bottom inc [hl] - jr Functione2a68 + jr BillsPC_UpDownDidSomething -.asm_e2a42 - ld hl, wcb2a +.not_bottom + ld hl, wBillsPC_ScrollPosition inc [hl] - jr Functione2a68 + jr BillsPC_UpDownDidSomething ; e2a48 (38:6a48) -Functione2a48: ; e2a48 - ld hl, wcb2e +BillsPC_PressLeft: ; e2a48 + ld hl, wBillsPC_LoadedBox ld a, [hl] and a - jr z, .asm_e2a52 + jr z, .wrap_around dec [hl] - jr Functione2a6c + jr BillsPC_LeftRightDidSomething -.asm_e2a52 - ld [hl], $e - jr Functione2a6c +.wrap_around + ld [hl], NUM_BOXES + jr BillsPC_LeftRightDidSomething -Functione2a56: ; e2a56 - ld hl, wcb2e +BillsPC_PressRight: ; e2a56 + ld hl, wBillsPC_LoadedBox ld a, [hl] - cp $e - jr z, .asm_e2a61 + cp NUM_BOXES + jr z, .wrap_around inc [hl] - jr Functione2a6c + jr BillsPC_LeftRightDidSomething -.asm_e2a61 - ld [hl], $0 - jr Functione2a6c +.wrap_around + ld [hl], 0 + jr BillsPC_LeftRightDidSomething -Functione2a65: ; e2a65 (38:6a65) +BillsPC_JoypadDidNothing: ; e2a65 (38:6a65) xor a and a ret -Functione2a68: ; e2a68 (38:6a68) - ld a, $1 +BillsPC_UpDownDidSomething: ; e2a68 (38:6a68) + ld a, TRUE and a ret ; e2a6c (38:6a6c) -Functione2a6c: ; e2a6c +BillsPC_LeftRightDidSomething: ; e2a6c scf ret ; e2a6e -Functione2a6e: ; e2a6e (38:6a6e) +BillsPC_PlaceString: ; e2a6e (38:6a6e) push de hlcoord 0, 15 lb bc, 1, 18 @@ -1005,8 +1013,8 @@ Functione2a6e: ; e2a6e (38:6a6e) ret ; e2a80 (38:6a80) -Functione2a80: ; e2a80 - call Functione2a8e +BillsPC_MoveMonWOMail_BoxNameAndArrows: ; e2a80 + call BillsPC_BoxName hlcoord 8, 1 ld [hl], $5f hlcoord 19, 1 @@ -1014,12 +1022,12 @@ Functione2a80: ; e2a80 ret ; e2a8e -Functione2a8e: ; e2a8e (38:6a8e) +BillsPC_BoxName: ; e2a8e (38:6a8e) hlcoord 8, 0 lb bc, 1, 10 call TextBox - ld a, [wcb2e] + ld a, [wBillsPC_LoadedBox] and a jr z, .party @@ -1038,14 +1046,14 @@ Functione2a8e: ; e2a8e (38:6a8e) jr .print .party - ld de, String_e2abd + ld de, .PartyPKMN .print hlcoord 10, 1 call PlaceString ret ; e2abd (38:6abd) -String_e2abd: +.PartyPKMN: db "PARTY <PK><MN>@" ; e2ac6 @@ -1068,34 +1076,34 @@ PCMonInfo: ; e2ac6 (38:6ac6) lb bc, 1, 3 call ClearBox - call Functione2def + call BillsPC_GetSelectedPokemonSpecies and a ret z - cp $ff + cp -1 ret z ld [wd265], a hlcoord 1, 4 xor a ld b, 7 -.asm_e2ae9 +.row ld c, 7 push af push hl -.asm_e2aed +.col ld [hli], a add 7 dec c - jr nz, .asm_e2aed + jr nz, .col pop hl - ld de, 20 + ld de, SCREEN_WIDTH add hl, de pop af inc a dec b - jr nz, .asm_e2ae9 + jr nz, .row - call Functione2b6d + call BillsPC_LoadMonStats ld a, [wd265] ld [CurPartySpecies], a ld [CurSpecies], a @@ -1105,10 +1113,9 @@ PCMonInfo: ; e2ac6 (38:6ac6) ld de, VTiles2 tile $00 predef GetFrontpic xor a - ld [wcb32], a + ld [wBillsPC_MonHasMail], a ld a, [CurPartySpecies] ld [wd265], a - cp EGG ret z @@ -1122,14 +1129,14 @@ PCMonInfo: ; e2ac6 (38:6ac6) ld a, $3 ld [MonType], a callba GetGender - jr c, .asm_e2b4f + jr c, .skip_gender ld a, "♂" jr nz, .printgender ld a, "♀" .printgender hlcoord 5, 12 ld [hl], a -.asm_e2b4f +.skip_gender ld a, [TempMonItem] and a @@ -1142,28 +1149,28 @@ PCMonInfo: ; e2ac6 (38:6ac6) jr .printitem .mail ld a, $1 - ld [wcb32], a + ld [wBillsPC_MonHasMail], a ld a, $5c ; mail icon .printitem hlcoord 7, 12 ld [hl], a ret -Functione2b6d: ; e2b6d (38:6b6d) - ld a, [wcb2b] - ld hl, wcb2a +BillsPC_LoadMonStats: ; e2b6d (38:6b6d) + ld a, [wBillsPC_CursorPosition] + ld hl, wBillsPC_ScrollPosition add [hl] ld e, a ld d, $0 - ld hl, wc801 + ld hl, wBillsPCPokemonList + 1 rept 3 add hl, de endr ld a, [hl] and a - jr z, .asm_e2bc6 - cp $f - jr z, .asm_e2bf5 + jr z, .party + cp NUM_BOXES + 1 + jr z, .sBox ld b, a call GetBoxPointer ld a, b @@ -1199,7 +1206,8 @@ endr ld [de], a call CloseSRAM ret -.asm_e2bc6 + +.party ld hl, PartyMon1Level ld bc, PARTYMON_STRUCT_LENGTH ld a, e @@ -1224,7 +1232,7 @@ endr ld [de], a ret -.asm_e2bf5 +.sBox ld a, BANK(sBox) call GetSRAMBank ld hl, sBoxMon1Level @@ -1255,7 +1263,7 @@ endr call CloseSRAM ret -Functione2c2c: ; e2c2c (38:6c2c) +BillsPC_RefreshTextboxes: ; e2c2c (38:6c2c) hlcoord 8, 2 lb bc, 10, 10 call TextBox @@ -1265,24 +1273,24 @@ Functione2c2c: ; e2c2c (38:6c2c) hlcoord 19, 2 ld [hl], "┘" - ld a, [wcb2a] + ld a, [wBillsPC_ScrollPosition] ld e, a ld d, 0 - ld hl, OverworldMap + ld hl, wBillsPCPokemonList rept 3 add hl, de endr ld e, l ld d, h hlcoord 9, 4 - ld a, [wcb2d] -.asm_e2c53 + ld a, [wBillsPC_NumMonsOnScreen] +.loop push af push de push hl - call Functione2c6e + call .PlaceNickname pop hl - ld de, $28 + ld de, 2 * SCREEN_WIDTH add hl, de pop de rept 3 @@ -1290,25 +1298,25 @@ rept 3 endr pop af dec a - jr nz, .asm_e2c53 + jr nz, .loop ret ; e2c67 (38:6c67) -String_e2c67: +.CancelString: db "CANCEL@" ; e2c6e -Functione2c6e: ; e2c6e (38:6c6e) +.PlaceNickname: ; e2c6e (38:6c6e) ld a, [de] and a ret z - cp $ff - jr nz, .asm_e2c7c - ld de, String_e2c67 + cp -1 + jr nz, .get_nickname + ld de, .CancelString call PlaceString ret -.asm_e2c7c +.get_nickname inc de ld a, [de] ld b, a @@ -1317,9 +1325,9 @@ Functione2c6e: ; e2c6e (38:6c6e) ld e, a ld a, b and a - jr z, .asm_e2cc8 - cp $f - jr z, .asm_e2cf1 + jr z, .party + cp NUM_BOXES + 1 + jr z, .sBox push hl call GetBoxPointer ld a, b @@ -1333,7 +1341,7 @@ Functione2c6e: ; e2c6e (38:6c6e) ld a, [hl] pop hl and a - jr z, .asm_e2cc2 + jr z, .boxfail ld bc, sBoxMonNicknames - sBox add hl, bc ld bc, PKMN_NAME_LENGTH @@ -1348,19 +1356,19 @@ Functione2c6e: ; e2c6e (38:6c6e) call PlaceString ret -.asm_e2cc2 +.boxfail call CloseSRAM pop hl - jr .asm_e2d23 + jr .placeholder_string -.asm_e2cc8 +.party push hl ld hl, PartySpecies ld d, $0 add hl, de ld a, [hl] and a - jr z, .asm_e2cee + jr z, .partyfail ld hl, PartyMonNicknames ld bc, PKMN_NAME_LENGTH ld a, e @@ -1373,11 +1381,11 @@ Functione2c6e: ; e2c6e (38:6c6e) call PlaceString ret -.asm_e2cee +.partyfail pop hl - jr .asm_e2d23 + jr .placeholder_string -.asm_e2cf1 +.sBox push hl ld a, BANK(sBox) call GetSRAMBank @@ -1386,7 +1394,7 @@ Functione2c6e: ; e2c6e (38:6c6e) add hl, de ld a, [hl] and a - jr z, .asm_e2d1f + jr z, .sBoxFail ld hl, sBoxMonNicknames ld bc, PKMN_NAME_LENGTH ld a, e @@ -1400,47 +1408,29 @@ Functione2c6e: ; e2c6e (38:6c6e) call PlaceString ret -.asm_e2d1f +.sBoxFail call CloseSRAM pop hl -.asm_e2d23 - ld de, String_e2d2a +.placeholder_string + ld de, .Placeholder call PlaceString ret ; e2d2a (38:6d2a) -String_e2d2a: +.Placeholder: db "-----@" ; e2d30 -Functione2d30: ; e2d30 (38:6d30) - xor a - ld hl, OverworldMap - ld bc, $5a - call ByteFill - ld de, OverworldMap - xor a - ld [wd003], a - ld [wd004], a - ld a, [wcb2e] - and a - jr z, .asm_e2d87 - cp $f - jr z, .asm_e2db7 - ld b, a - call GetBoxPointer - ld a, b - call GetSRAMBank - inc hl -.asm_e2d57 +copy_box_data: MACRO +.loop\@ ld a, [hl] - cp $ff - jr z, .asm_e2d79 + cp -1 + jr z, .done\@ and a - jr z, .asm_e2d79 + jr z, .done\@ ld [de], a inc de - ld a, [wcb2e] + ld a, [wBillsPC_LoadedBox] ld [de], a inc de ld a, [wd003] @@ -1452,241 +1442,203 @@ Functione2d30: ; e2d30 (38:6d30) ld a, [wd004] inc a ld [wd004], a - jr .asm_e2d57 + jr .loop\@ -.asm_e2d79 +.done\@ +IF \1 call CloseSRAM - ld a, $ff +ENDC + ld a, -1 ld [de], a ld a, [wd004] inc a - ld [wcb2c], a - ret + ld [wBillsPC_NumMonsInBox], a +endm -.asm_e2d87 - ld hl, PartySpecies -.asm_e2d8a - ld a, [hl] - cp $ff - jr z, .asm_e2dac - and a - jr z, .asm_e2dac - ld [de], a - inc de - ld a, [wcb2e] - ld [de], a - inc de - ld a, [wd003] - ld [de], a - inc a +CopyBoxmonSpecies: ; e2d30 (38:6d30) + xor a + ld hl, wBillsPCPokemonList + ld bc, 3 * 30 + call ByteFill + ld de, wBillsPCPokemonList + xor a ld [wd003], a - inc de - inc hl - ld a, [wd004] - inc a ld [wd004], a - jr .asm_e2d8a + ld a, [wBillsPC_LoadedBox] + and a + jr z, .party + cp NUM_BOXES + 1 + jr z, .sBox + ld b, a + call GetBoxPointer + ld a, b + call GetSRAMBank + inc hl + copy_box_data 1 + ret -.asm_e2dac - ld a, $ff - ld [de], a - ld a, [wd004] - inc a - ld [wcb2c], a +.party + ld hl, PartySpecies + copy_box_data 0 ret -.asm_e2db7 +.sBox ld a, BANK(sBox) call GetSRAMBank ld hl, sBoxSpecies -.asm_e2dbf - ld a, [hl] - cp $ff - jr z, .asm_e2de1 - and a - jr z, .asm_e2de1 - ld [de], a - inc de - ld a, [wcb2e] - ld [de], a - inc de - ld a, [wd003] - ld [de], a - inc a - ld [wd003], a - inc de - inc hl - ld a, [wd004] - inc a - ld [wd004], a - jr .asm_e2dbf - -.asm_e2de1 - call CloseSRAM - ld a, $ff - ld [de], a - ld a, [wd004] - inc a - ld [wcb2c], a + copy_box_data 1 ret -Functione2def: ; e2def (38:6def) - ld a, [wcb2b] - ld hl, wcb2a +BillsPC_GetSelectedPokemonSpecies: ; e2def (38:6def) + ld a, [wBillsPC_CursorPosition] + ld hl, wBillsPC_ScrollPosition add [hl] ld e, a ld d, $0 - ld hl, OverworldMap + ld hl, wBillsPCPokemonList rept 3 add hl, de endr ld a, [hl] ret -Functione2e01: ; e2e01 (38:6e01) - ld a, [wcb2c] +BillsPC_UpdateSelectionCursor: ; e2e01 (38:6e01) + ld a, [wBillsPC_NumMonsInBox] and a - jr nz, .asm_e2e0b + jr nz, .place_cursor call ClearSprites ret -.asm_e2e0b - ld hl, Unknown_e2e2b +.place_cursor + ld hl, .OAM ld de, Sprites .loop ld a, [hl] - cp $ff + cp -1 ret z - ld a, [wcb2b] + ld a, [wBillsPC_CursorPosition] and $7 swap a add [hl] inc hl ld [de], a inc de +rept 3 ld a, [hli] ld [de], a inc de - ld a, [hli] - ld [de], a - inc de - ld a, [hli] - ld [de], a - inc de +endr jr .loop ; e2e2b (38:6e2b) -Unknown_e2e2b: ; e2e2b - db $26, $50, $00, $00 - db $26, $58, $00, $00 - db $26, $60, $00, $00 - db $26, $68, $00, $00 - db $26, $70, $00, $00 - db $26, $78, $00, $00 - db $26, $80, $00, $00 - db $26, $88, $00, $00 - db $26, $90, $00, $00 - db $26, $97, $00, $00 - db $39, $50, $00, $40 - db $39, $58, $00, $40 - db $39, $60, $00, $40 - db $39, $68, $00, $40 - db $39, $70, $00, $40 - db $39, $78, $00, $40 - db $39, $80, $00, $40 - db $39, $88, $00, $40 - db $39, $90, $00, $40 - db $39, $97, $00, $40 - db $2e, $4e, $01, $00 - db $31, $4e, $01, $40 - db $2e, $99, $01, $20 - db $31, $99, $01, $60 - db $ff +.OAM: ; e2e2b + dsprite 4, 6, 10, 0, $00, $00 + dsprite 4, 6, 11, 0, $00, $00 + dsprite 4, 6, 12, 0, $00, $00 + dsprite 4, 6, 13, 0, $00, $00 + dsprite 4, 6, 14, 0, $00, $00 + dsprite 4, 6, 15, 0, $00, $00 + dsprite 4, 6, 16, 0, $00, $00 + dsprite 4, 6, 17, 0, $00, $00 + dsprite 4, 6, 18, 0, $00, $00 + dsprite 4, 6, 18, 7, $00, $00 + dsprite 7, 1, 10, 0, $00, $40 + dsprite 7, 1, 11, 0, $00, $40 + dsprite 7, 1, 12, 0, $00, $40 + dsprite 7, 1, 13, 0, $00, $40 + dsprite 7, 1, 14, 0, $00, $40 + dsprite 7, 1, 15, 0, $00, $40 + dsprite 7, 1, 16, 0, $00, $40 + dsprite 7, 1, 17, 0, $00, $40 + dsprite 7, 1, 18, 0, $00, $40 + dsprite 7, 1, 18, 7, $00, $40 + dsprite 5, 6, 9, 6, $01, $00 + dsprite 6, 1, 9, 6, $01, $40 + dsprite 5, 6, 19, 1, $01, $20 + dsprite 6, 1, 19, 1, $01, $60 + db -1 ; e2e8c -Functione2e8c: ; e2e8c - ld hl, Unknown_e2eac +BillsPC_UpdateInsertCursor: ; e2e8c + ld hl, .OAM ld de, Sprites -.asm_e2e92 +.loop ld a, [hl] - cp $ff + cp -1 ret z - ld a, [wcb2b] + ld a, [wBillsPC_CursorPosition] and $7 swap a add [hl] inc hl ld [de], a inc de +rept 3 ld a, [hli] ld [de], a inc de - ld a, [hli] - ld [de], a - inc de - ld a, [hli] - ld [de], a - inc de - jr .asm_e2e92 +endr + jr .loop ; e2eac -Unknown_e2eac: ; e2eac - db $27, $50, $06, $00 - db $2b, $58, $00, $40 - db $2b, $60, $00, $40 - db $2b, $68, $00, $40 - db $2b, $70, $00, $40 - db $2b, $78, $00, $40 - db $2b, $80, $00, $40 - db $2b, $88, $00, $40 - db $2b, $90, $00, $40 - db $27, $98, $07, $00 - db $ff +.OAM: ; e2eac + dsprite 4, 7, 10, 0, $06, $00 + dsprite 5, 3, 11, 0, $00, $40 + dsprite 5, 3, 12, 0, $00, $40 + dsprite 5, 3, 13, 0, $00, $40 + dsprite 5, 3, 14, 0, $00, $40 + dsprite 5, 3, 15, 0, $00, $40 + dsprite 5, 3, 16, 0, $00, $40 + dsprite 5, 3, 17, 0, $00, $40 + dsprite 5, 3, 18, 0, $00, $40 + dsprite 4, 7, 19, 0, $07, $00 + db -1 ; e2ed5 -Functione2ed5: ; e2ed5 -.asm_e2ed5 +BillsPC_UnusedFillBox: ; e2ed5 +.row push bc push hl -.asm_e2ed7 +.col ld [hli], a dec c - jr nz, .asm_e2ed7 + jr nz, .col pop hl ld bc, SCREEN_WIDTH add hl, bc pop bc dec b - jr nz, .asm_e2ed5 + jr nz, .row ret ; e2ee5 -Functione2ee5: ; e2ee5 - ld hl, wcb2e - ld a, [wcb31] +BillsPC_CheckSpaceInDestination: ; e2ee5 +; If moving within a box, no need to be here. + ld hl, wBillsPC_LoadedBox + ld a, [wBillsPC_BackupLoadedBox] cp [hl] - jr z, .asm_e2f00 - ld a, [wcb2e] - and a - jr z, .asm_e2ef8 - ld e, $15 - jr .asm_e2efa + jr z, .same_box -.asm_e2ef8 - ld e, $7 +; Exceeding box or party capacity is a big no-no. + ld a, [wBillsPC_LoadedBox] + and a + jr z, .party + ld e, MONS_PER_BOX + 1 + jr .compare -.asm_e2efa - ld a, [wcb2c] +.party + ld e, PARTY_LENGTH + 1 +.compare + ld a, [wBillsPC_NumMonsInBox] cp e - jr nc, .asm_e2f02 - -.asm_e2f00 + jr nc, .no_room +.same_box and a ret -.asm_e2f02 +.no_room ld de, PCString_TheresNoRoom - call Functione2a6e + call BillsPC_PlaceString ld de, SFX_WRONG call WaitPlaySFX call WaitSFX @@ -1696,35 +1648,38 @@ Functione2ee5: ; e2ee5 ret ; e2f18 -Functione2f18: ; e2f18 (38:6f18) - ld a, [wcb2e] +BillsPC_CheckMail_PreventBlackout: ; e2f18 (38:6f18) + ld a, [wBillsPC_LoadedBox] and a jr nz, .Okay - ld a, [wcb2c] + ld a, [wBillsPC_NumMonsInBox] cp $3 jr c, .ItsYourLastPokemon - ld a, [wcb2b] - ld hl, wcb2a + ld a, [wBillsPC_CursorPosition] + ld hl, wBillsPC_ScrollPosition add [hl] ld [CurPartyMon], a callba CheckCurPartyMonFainted jr c, .AllOthersFainted - ld a, [wcb32] + ld a, [wBillsPC_MonHasMail] and a jr nz, .HasMail .Okay and a ret + .HasMail ld de, PCString_RemoveMail jr .NotOkay + .AllOthersFainted ld de, PCString_NoMoreUsablePKMN jr .NotOkay + .ItsYourLastPokemon ld de, PCString_ItsYourLastPKMN .NotOkay - call Functione2a6e + call BillsPC_PlaceString ld de, SFX_WRONG call WaitPlaySFX call WaitSFX @@ -1733,15 +1688,16 @@ Functione2f18: ; e2f18 (38:6f18) scf ret -Functione2f5f: ; e2f5f (38:6f5f) +BillsPC_IsMonAnEgg: ; e2f5f (38:6f5f) ld a, [CurPartySpecies] cp EGG - jr z, .asm_e2f68 + jr z, .egg and a ret -.asm_e2f68 + +.egg ld de, PCString_NoReleasingEGGS - call Functione2a6e + call BillsPC_PlaceString ld de, SFX_WRONG call WaitPlaySFX call WaitSFX @@ -1750,60 +1706,60 @@ Functione2f5f: ; e2f5f (38:6f5f) scf ret -Functione2f7e: ; e2f7e (38:6f7e) +BillsPC_StatsScreen: ; e2f7e (38:6f7e) call LowVolume - call Functione2fd6 + call BillsPC_CopyMon ld a, $3 ld [MonType], a predef StatsScreenInit - call Functione33e8 + call BillsPC_InitGFX call MaxVolume ret -Functione2f95: ; e2f95 (38:6f95) +StatsScreenDPad: ; e2f95 (38:6f95) ld hl, hJoyPressed ; $ffa7 ld a, [hl] and A_BUTTON | B_BUTTON | D_RIGHT | D_LEFT - ld [wcf73], a + ld [wMenuJoypad], a jr nz, .pressed_a_b_right_left ld a, [hl] and D_DOWN | D_UP - ld [wcf73], a + ld [wMenuJoypad], a jr nz, .pressed_down_up jr .pressed_a_b_right_left .pressed_down_up - call Functione2998 + call _StatsScreenDPad and a - jr z, .asm_e2fd1 - call Functione2def + jr z, .did_nothing + call BillsPC_GetSelectedPokemonSpecies ld [wd265], a - call Functione2b6d + call BillsPC_LoadMonStats ld a, [wd265] ld [CurPartySpecies], a ld [CurSpecies], a ld hl, TempMonDVs predef GetUnownLetter call GetBaseData - call Functione2fd6 + call BillsPC_CopyMon .pressed_a_b_right_left ret -.asm_e2fd1 +.did_nothing xor a - ld [wcf73], a + ld [wMenuJoypad], a ret -Functione2fd6: ; e2fd6 (38:6fd6) - ld a, [wcb2b] - ld hl, wcb2a +BillsPC_CopyMon: ; e2fd6 (38:6fd6) + ld a, [wBillsPC_CursorPosition] + ld hl, wBillsPC_ScrollPosition add [hl] ld [CurPartyMon], a - ld a, [wcb2e] + ld a, [wBillsPC_LoadedBox] and a - jr z, .asm_e3020 - cp $f - jr nz, .asm_e3048 + jr z, .party + cp NUM_BOXES + 1 + jr nz, .box ld a, BANK(sBox) call GetSRAMBank ld hl, sBoxSpecies @@ -1816,14 +1772,14 @@ Functione2fd6: ; e2fd6 (38:6fd6) ld bc, BOXMON_STRUCT_LENGTH ld a, [CurPartyMon] call AddNTimes - ld de, wd018_Mon + ld de, wBufferMon ld bc, PARTYMON_STRUCT_LENGTH call CopyBytes call CloseSRAM - callba Function5088b + callba CalcwBufferMonStats ret -.asm_e3020 +.party ld hl, PartySpecies call CopySpeciesToTemp ld hl, PartyMonNicknames @@ -1834,12 +1790,12 @@ Functione2fd6: ; e2fd6 (38:6fd6) ld bc, PARTYMON_STRUCT_LENGTH ld a, [CurPartyMon] call AddNTimes - ld de, wd018_Mon + ld de, wBufferMon ld bc, PARTYMON_STRUCT_LENGTH call CopyBytes ret -.asm_e3048 +.box ld b, a call GetBoxPointer ld a, b @@ -1863,12 +1819,12 @@ Functione2fd6: ; e2fd6 (38:6fd6) ld bc, BOXMON_STRUCT_LENGTH call CopyMonToTemp call CloseSRAM - callba Function5088b + callba CalcwBufferMonStats ret -Functione307c: ; e307c (38:707c) - ld a, [wcb2b] - ld hl, wcb2a +DepositPokemon: ; e307c (38:707c) + ld a, [wBillsPC_CursorPosition] + ld hl, wBillsPC_ScrollPosition add [hl] ld [CurPartyMon], a ld hl, PartyMonNicknames @@ -1880,7 +1836,7 @@ Functione307c: ; e307c (38:707c) jr c, .asm_boxisfull xor a ld [wPokemonWithdrawDepositParameter], a - callba Functione039 + callba RemoveMonFromPartyOrBox ld a, [CurPartySpecies] call PlayCry hlcoord 0, 0 @@ -1909,7 +1865,7 @@ Functione307c: ; e307c (38:707c) .asm_boxisfull ld de, PCString_BoxFull - call Functione2a6e + call BillsPC_PlaceString ld de, SFX_WRONG call WaitPlaySFX call WaitSFX @@ -1919,8 +1875,8 @@ Functione307c: ; e307c (38:707c) ret TryWithdrawPokemon: ; e30fa (38:70fa) - ld a, [wcb2b] - ld hl, wcb2a + ld a, [wBillsPC_CursorPosition] + ld hl, wBillsPC_ScrollPosition add [hl] ld [CurPartyMon], a ld a, BANK(sBoxMonNicknames) @@ -1935,7 +1891,7 @@ TryWithdrawPokemon: ; e30fa (38:70fa) jr c, .PartyFull ld a, PC_DEPOSIT ld [wPokemonWithdrawDepositParameter], a - callba Functione039 + callba RemoveMonFromPartyOrBox ld a, [CurPartySpecies] call PlayCry hlcoord 0, 0 @@ -1964,7 +1920,7 @@ TryWithdrawPokemon: ; e30fa (38:70fa) .PartyFull ld de, PCString_PartyFull - call Functione2a6e + call BillsPC_PlaceString ld de, SFX_WRONG call WaitPlaySFX call WaitSFX @@ -1974,7 +1930,7 @@ TryWithdrawPokemon: ; e30fa (38:70fa) ret -Functione3180: ; e3180 (38:7180) +ReleasePKMN_ByePKMN: ; e3180 (38:7180) hlcoord 0, 0 lb bc, 15, 8 call ClearBox @@ -1988,11 +1944,11 @@ Functione3180: ; e3180 (38:7180) call WaitBGMap ld a, [CurPartySpecies] call GetCryIndex - jr c, .asm_e31ab + jr c, .skip_cry ld e, c ld d, b call PlayCryHeader -.asm_e31ab +.skip_cry ld a, [CurPartySpecies] ld [wd265], a @@ -2021,7 +1977,7 @@ Functione3180: ; e3180 (38:7180) ret ; e31e7 (38:71e7) -Functione31e7: ; e31e7 +MovePKMNWitoutMail_InsertMon: ; e31e7 push hl push de push bc @@ -2030,7 +1986,7 @@ Functione31e7: ; e31e7 lb bc, 1, 18 call TextBox hlcoord 1, 16 - ld de, String_e3233 + ld de, .Saving_LeaveOn call PlaceString ld c, 20 call DelayFrames @@ -2041,107 +1997,108 @@ Functione31e7: ; e31e7 ld a, [wCurBox] push af ld bc, 0 - ld a, [wcb31] + ld a, [wBillsPC_BackupLoadedBox] and a - jr nz, .asm_e3215 + jr nz, .moving_from_box set 0, c -.asm_e3215 - ld a, [wcb2e] +.moving_from_box + ld a, [wBillsPC_LoadedBox] and a - jr nz, .asm_e321d + jr nz, .moving_to_box set 1, c -.asm_e321d - ld hl, Jumptable_e3245 +.moving_to_box + ld hl, .Jumptable rept 2 add hl, bc endr ld a, [hli] ld h, [hl] ld l, a - ld de, Functione322a + ld de, .jumptable_return push de jp [hl] ; e322a -Functione322a: ; e322a +.jumptable_return: ; e322a pop af ld e, a callba Function14ad5 ret ; e3233 -String_e3233: +.Saving_LeaveOn: db "Saving… Leave ON!@" ; e3245 -Jumptable_e3245: ; e3245 - dw Functione324d - dw Functione3267 - dw Functione327d - dw Functione3284 +.Jumptable: ; e3245 + jumptable_start + jumptable .BoxToBox + jumptable .PartyToBox + jumptable .BoxToParty + jumptable .PartyToParty ; e324d -Functione324d: ; e324d - ld hl, wcb31 - ld a, [wcb2e] +.BoxToBox: ; e324d + ld hl, wBillsPC_BackupLoadedBox + ld a, [wBillsPC_LoadedBox] cp [hl] - jr z, .asm_e325d - call Functione32b0 - call Functione32fa + jr z, .same_box + call .CopyFromBox + call .CopyToBox ret -.asm_e325d - call Functione32b0 - call Functione328e - call Functione32fa +.same_box + call .CopyFromBox + call .CheckTrivialMove + call .CopyToBox ret ; e3267 -Functione3267: ; e3267 - call Functione3316 +.PartyToBox: ; e3267 + call .CopyFromParty ld a, $1 ld [wc2cd], a callba SaveGameData xor a ld [wc2cd], a - call Functione32fa + call .CopyToBox ret ; e327d -Functione327d: ; e327d - call Functione32b0 - call Functione3346 +.BoxToParty: ; e327d + call .CopyFromBox + call .CopyToParty ret ; e3284 -Functione3284: ; e3284 - call Functione3316 - call Functione328e - call Functione3346 +.PartyToParty: ; e3284 + call .CopyFromParty + call .CheckTrivialMove + call .CopyToParty ret ; e328e -Functione328e: ; e328e - ld a, [wcb2b] - ld hl, wcb2a +.CheckTrivialMove: ; e328e + ld a, [wBillsPC_CursorPosition] + ld hl, wBillsPC_ScrollPosition add [hl] ld e, a - ld a, [wcb30] - ld hl, wcb2f + ld a, [wBillsPC_BackupCursorPosition] + ld hl, wBillsPC_BackupScrollPosition add [hl] cp e ret nc - ld hl, wcb2b + ld hl, wBillsPC_CursorPosition ld a, [hl] and a - jr z, .asm_e32a8 + jr z, .top_of_screen dec [hl] ret -.asm_e32a8 - ld hl, wcb2a +.top_of_screen + ld hl, wBillsPC_ScrollPosition ld a, [hl] and a ret z @@ -2149,13 +2106,13 @@ Functione328e: ; e328e ret ; e32b0 -Functione32b0: ; e32b0 - ld a, [wcb31] +.CopyFromBox: ; e32b0 + ld a, [wBillsPC_BackupLoadedBox] dec a ld e, a callba MovePkmnWOMail_SaveGame - ld a, [wcb30] - ld hl, wcb2f + ld a, [wBillsPC_BackupCursorPosition] + ld hl, wBillsPC_BackupScrollPosition add [hl] ld [CurPartyMon], a ld a, $1 @@ -2170,29 +2127,29 @@ Functione32b0: ; e32b0 ld bc, BOXMON_STRUCT_LENGTH call CopyMonToTemp call CloseSRAM - callba Function5088b + callba CalcwBufferMonStats ld a, PC_DEPOSIT ld [wPokemonWithdrawDepositParameter], a - callba Functione039 + callba RemoveMonFromPartyOrBox ret ; e32fa -Functione32fa: ; e32fa - ld a, [wcb2e] +.CopyToBox: ; e32fa + ld a, [wBillsPC_LoadedBox] dec a ld e, a callba MovePkmnWOMail_SaveGame - ld a, [wcb2b] - ld hl, wcb2a + ld a, [wBillsPC_CursorPosition] + ld hl, wBillsPC_ScrollPosition add [hl] ld [CurPartyMon], a callba Function51322 ret ; e3316 -Functione3316: ; e3316 - ld a, [wcb30] - ld hl, wcb2f +.CopyFromParty: ; e3316 + ld a, [wBillsPC_BackupCursorPosition] + ld hl, wBillsPC_BackupScrollPosition add [hl] ld [CurPartyMon], a ld hl, PartySpecies @@ -2206,13 +2163,13 @@ Functione3316: ; e3316 call CopyMonToTemp xor a ld [wPokemonWithdrawDepositParameter], a - callba Functione039 + callba RemoveMonFromPartyOrBox ret ; e3346 -Functione3346: ; e3346 - ld a, [wcb2b] - ld hl, wcb2a +.CopyToParty: ; e3346 + ld a, [wBillsPC_CursorPosition] + ld hl, wBillsPC_ScrollPosition add [hl] ld [CurPartyMon], a callba Function5138b @@ -2232,7 +2189,7 @@ CopyNicknameToTemp: ; e3363 (38:7363) ld bc, PKMN_NAME_LENGTH ld a, [CurPartyMon] call AddNTimes - ld de, wd002 + ld de, wBufferMonNick ld bc, PKMN_NAME_LENGTH call CopyBytes ret @@ -2241,7 +2198,7 @@ CopyOTNameToTemp: ; e3376 (38:7376) ld bc, NAME_LENGTH ld a, [CurPartyMon] call AddNTimes - ld de, wd00d + ld de, wBufferMonOT ld bc, NAME_LENGTH call CopyBytes ret @@ -2249,7 +2206,7 @@ CopyOTNameToTemp: ; e3376 (38:7376) CopyMonToTemp: ; e3389 (38:7389) ld a, [CurPartyMon] call AddNTimes - ld de, wd018_Mon + ld de, wBufferMon call CopyBytes ret @@ -2287,16 +2244,16 @@ endr dba sBox14 ; e33d0 -Functione33d0: ; e33d0 (38:73d0) +BillsPC_ApplyPalettes: ; e33d0 (38:73d0) ld b, a call GetSGBLayout - ld a, $e4 + ld a, %11100100 call DmgToCgbBGPals - ld a, $fc - call Functioncf8 + ld a, %11111100 + call DmgToCgbObjPal0 ret -Functione33df: ; e33df (38:73df) +BillsPC_Jumptable: ; e33df (38:73df) ld e, a ld d, $0 rept 2 @@ -2307,17 +2264,17 @@ endr ld l, a ret -Functione33e8: ; e33e8 (38:73e8) +BillsPC_InitGFX: ; e33e8 (38:73e8) call DisableLCD ld hl, VTiles2 tile $00 - ld bc, $310 + ld bc, $31 tiles xor a call ByteFill call LoadStandardFont call LoadFontsBattleExtra ld hl, PCMailGFX ld de, VTiles2 tile $5c - ld bc, $40 + ld bc, 4 tiles call CopyBytes ld hl, PCSelectLZ ld de, VTiles0 tile $00 @@ -2353,12 +2310,12 @@ PCString_NoReleasingEGGS: db "No releasing EGGS!@" _ChangeBox: ; e35aa (38:75aa) call LoadStandardMenuDataHeader - call Functione35e2 + call BillsPC_ClearTilemap .loop xor a ld [hBGMapMode], a - call Functione36cf - call Functione379c + call BillsPC_PrintBoxName + call BillsPC_PlaceChooseABoxString ld hl, _ChangeBox_menudataheader call CopyMenuDataHeader xor a @@ -2366,18 +2323,18 @@ _ChangeBox: ; e35aa (38:75aa) hlcoord 0, 4 lb bc, 8, 9 call TextBox - call HandleScrollingMenu - ld a, [wcf73] - cp $2 + call ScrollingMenu + ld a, [wMenuJoypad] + cp B_BUTTON jr z, .done - call Functione37af - call Functione36f9 + call BillsPC_PlaceWhatsUpString + call BillsPC_ChangeBoxSubmenu jr .loop .done call WriteBackup ret -Functione35e2: ; e35e2 (38:75e2) +BillsPC_ClearTilemap: ; e35e2 (38:75e2) xor a ld [hBGMapMode], a hlcoord 0, 0 @@ -2402,7 +2359,7 @@ _ChangeBox_menudataheader: ; 0xe35f1 dba .boxes dba .boxnames dba NULL - dba Functione3632 + dba BillsPC_PrintBoxCountAndCapacity ; e3609 .boxes: ; e3609 @@ -2434,7 +2391,7 @@ GetBoxName: ; e3626 (38:7626) ret ; e3632 (38:7632) -Functione3632: ; e3632 +BillsPC_PrintBoxCountAndCapacity: ; e3632 hlcoord 11, 7 lb bc, 5, 7 call TextBox @@ -2442,7 +2399,7 @@ Functione3632: ; e3632 cp -1 ret z hlcoord 12, 9 - ld de, String_e3663 + ld de, .Pokemon call PlaceString call GetBoxCount ld [wd265], a @@ -2450,16 +2407,16 @@ Functione3632: ; e3632 ld de, wd265 lb bc, 1, 2 call PrintNum - ld de, String_e3668 + ld de, .out_of_20 call PlaceString ret ; e3663 -String_e3663: ; e3663 +.Pokemon: ; e3663 db "#MON@" ; e3668 -String_e3668: ; e3668 +.out_of_20: ; e3668 ; db "/20@" db "/" db "0" + MONS_PER_BOX / 10 ; "2" @@ -2526,13 +2483,13 @@ endr dba sBox14 ; e36cf -Functione36cf: ; e36cf (38:76cf) +BillsPC_PrintBoxName: ; e36cf (38:76cf) hlcoord 0, 0 ld b, 2 ld c, 18 call TextBox hlcoord 1, 2 - ld de, String_e36f1 + ld de, .Current call PlaceString ld a, [wCurBox] and $f @@ -2542,17 +2499,17 @@ Functione36cf: ; e36cf (38:76cf) ret ; e36f1 (38:76f1) -String_e36f1: ; e36f1 +.Current: ; e36f1 db "CURRENT@" ; e36f9 -Functione36f9: ; e36f9 (38:76f9) +BillsPC_ChangeBoxSubmenu: ; e36f9 (38:76f9) ld hl, .MenuDataHeader call LoadMenuDataHeader - call InterpretMenu2 + call VerticalMenu call ExitMenu ret c - ld a, [MenuSelection2] + ld a, [wMenuCursorY] cp $1 jr z, .Switch cp $2 @@ -2572,12 +2529,12 @@ Functione36f9: ; e36f9 (38:76f9) dec a ld c, a callba PrintPCBox - call Functione35e2 + call BillsPC_ClearTilemap and a ret .EmptyBox - call Functione37be + call BillsPC_PlaceEmptyBoxString_SFX and a ret @@ -2604,7 +2561,7 @@ Functione36f9: ; e36f9 (38:76f9) ld e, l ld d, h ld hl, wd002 - ld c, $8 + ld c, BOX_NAME_LENGTH - 1 call InitString ld a, [MenuSelection] dec a @@ -2633,27 +2590,27 @@ Functione36f9: ; e36f9 (38:76f9) db "QUIT@" ; 0xe379c -Functione379c: ; e379c (38:779c) - ld de, String_e37a1 - jr Functione37e3 +BillsPC_PlaceChooseABoxString: ; e379c (38:779c) + ld de, .ChooseABox + jr BillsPC_PlaceChangeBoxString ; e37a1 (38:77a1) -String_e37a1: ; e37a1 +.ChooseABox: ; e37a1 db "Choose a BOX.@" ; e37af -Functione37af: ; e37af (38:77af) - ld de, String_e37b4 - jr Functione37e3 +BillsPC_PlaceWhatsUpString: ; e37af (38:77af) + ld de, .WhatsUp + jr BillsPC_PlaceChangeBoxString ; e37b4 (38:77b4) -String_e37b4: ; e37b4 +.WhatsUp: ; e37b4 db "What's up?@" ; e37be -Functione37be: ; e37be (38:77be) - ld de, String_e37d3 - call Functione37e3 +BillsPC_PlaceEmptyBoxString_SFX: ; e37be (38:77be) + ld de, .NoMonString + call BillsPC_PlaceChangeBoxString ld de, SFX_WRONG call WaitPlaySFX call WaitSFX @@ -2662,11 +2619,11 @@ Functione37be: ; e37be (38:77be) ret ; e37d3 (38:77d3) -String_e37d3: ; e37d3 +.NoMonString: ; e37d3 db "There's no #MON.@" ; e37e3 -Functione37e3: ; e37e3 (38:77e3) +BillsPC_PlaceChangeBoxString: ; e37e3 (38:77e3) push de hlcoord 0, 14 lb bc, 2, 18 diff --git a/engine/breeding/egg.asm b/engine/breeding/egg.asm index ebf5e48d8..d5ac77802 100755 --- a/engine/breeding/egg.asm +++ b/engine/breeding/egg.asm @@ -1,7 +1,7 @@ -Function16e1d: ; 16e1d - call Function16ed6 +CheckBreedmonCompatibility: ; 16e1d + call .CheckBreedingGroupCompatibility ld c, $0 - jp nc, .asm_16eb7 + jp nc, .done ld a, [wBreedMon1Species] ld [CurPartySpecies], a ld a, [wBreedMon1DVs] @@ -11,12 +11,12 @@ Function16e1d: ; 16e1d ld a, $3 ld [MonType], a predef GetGender - jr c, .asm_16e70 + jr c, .genderless ld b, $1 - jr nz, .asm_16e48 + jr nz, .breedmon2 inc b -.asm_16e48 +.breedmon2 push bc ld a, [wBreedMon2Species] ld [CurPartySpecies], a @@ -28,96 +28,105 @@ Function16e1d: ; 16e1d ld [MonType], a predef GetGender pop bc - jr c, .asm_16e70 + jr c, .genderless ld a, $1 - jr nz, .asm_16e6d + jr nz, .compare_gender inc a -.asm_16e6d +.compare_gender cp b - jr nz, .asm_16e89 + jr nz, .compute -.asm_16e70 +.genderless ld c, $0 ld a, [wBreedMon1Species] cp DITTO - jr z, .asm_16e82 + jr z, .ditto1 ld a, [wBreedMon2Species] cp DITTO - jr nz, .asm_16eb7 - jr .asm_16e89 + jr nz, .done + jr .compute -.asm_16e82 +.ditto1 ld a, [wBreedMon2Species] cp DITTO - jr z, .asm_16eb7 + jr z, .done -.asm_16e89 - call Function16ebc - ld c, $ff - jp z, .asm_16eb7 +.compute + call .CheckDVs + ld c, 255 + jp z, .done ld a, [wBreedMon2Species] ld b, a ld a, [wBreedMon1Species] cp b - ld c, $fe - jr z, .asm_16e9f - ld c, $80 -.asm_16e9f + ld c, 254 + jr z, .compare_ids + ld c, 128 +.compare_ids + ; Speed up ld a, [wBreedMon1ID] ld b, a ld a, [wBreedMon2ID] cp b - jr nz, .asm_16eb7 + jr nz, .done ld a, [wBreedMon1ID + 1] ld b, a ld a, [wBreedMon2ID + 1] cp b - jr nz, .asm_16eb7 + jr nz, .done ld a, c - sub $4d + sub 77 ld c, a -.asm_16eb7 +.done ld a, c ld [wd265], a ret ; 16ebc -Function16ebc: ; 16ebc (5:6ebc) +.CheckDVs: ; 16ebc (5:6ebc) +; If Defense DVs match and the lower 3 bits of the Special DVs match, +; maximize the chances of spawning an egg regardless of species. ld a, [wBreedMon1DVs] - and $f + and %1111 ld b, a ld a, [wBreedMon2DVs] - and $f + and %1111 cp b ret nz ld a, [wBreedMon1DVs + 1] - and $7 + and %111 ld b, a ld a, [wBreedMon2DVs + 1] - and $7 + and %111 cp b ret ; 16ed6 -Function16ed6: ; 16ed6 +.CheckBreedingGroupCompatibility: ; 16ed6 +; If either mon is in the No Eggs group, +; they are not compatible. ld a, [wBreedMon2Species] ld [CurSpecies], a call GetBaseData ld a, [BaseEggGroups] - cp $ff - jr z, .asm_16f3a + cp NO_EGGS * $11 + jr z, .Incompatible + ld a, [wBreedMon1Species] ld [CurSpecies], a call GetBaseData ld a, [BaseEggGroups] - cp $ff - jr z, .asm_16f3a + cp NO_EGGS * $11 + jr z, .Incompatible + +; Ditto is automatically compatible with everything. +; If not Ditto, load the breeding groups into b/c and d/e. ld a, [wBreedMon2Species] cp DITTO - jr z, .asm_16f3c + jr z, .Compatible ld [CurSpecies], a call GetBaseData ld a, [BaseEggGroups] @@ -128,9 +137,10 @@ Function16ed6: ; 16ed6 and $f0 swap a ld c, a + ld a, [wBreedMon1Species] cp DITTO - jr z, .asm_16f3c + jr z, .Compatible ld [CurSpecies], a push bc call GetBaseData @@ -143,22 +153,24 @@ Function16ed6: ; 16ed6 and $f0 swap a ld e, a + ld a, d cp b - jr z, .asm_16f3c + jr z, .Compatible cp c - jr z, .asm_16f3c + jr z, .Compatible + ld a, e cp b - jr z, .asm_16f3c + jr z, .Compatible cp c - jr z, .asm_16f3c + jr z, .Compatible -.asm_16f3a +.Incompatible and a ret -.asm_16f3c +.Compatible scf ret ; 16f3e @@ -191,30 +203,30 @@ DoEggStep:: ; 16f3e OverworldHatchEgg:: ; 16f5e call ResetWindow call LoadStandardMenuDataHeader - call Function16f70 + call HatchEggs call ExitAllMenus call RestartMapMusic - jp LoadMoveSprites + jp CloseText ; 16f70 -Function16f70: ; 16f70 (5:6f70) +HatchEggs: ; 16f70 (5:6f70) ld de, PartySpecies ld hl, PartyMon1Happiness xor a ld [CurPartyMon], a -Function16f7a: ; 16f7a (5:6f7a) +.loop: ; 16f7a (5:6f7a) ld a, [de] inc de cp -1 - jp z, Function1708a + jp z, .done push de push hl cp EGG - jp nz, Function1707d + jp nz, .next ld a, [hl] and a - jp nz, Function1707d + jp nz, .next ld [hl], $78 push de @@ -274,7 +286,7 @@ Function16f7a: ; 16f7a (5:6f7a) ld [hl], a pop hl push hl - ld bc, MON_EXP + 2 + ld bc, MON_STAT_EXP - 1 add hl, bc ld b, $0 predef CalcPkmnStats @@ -304,7 +316,7 @@ Function16f7a: ; 16f7a (5:6f7a) ld e, l ld hl, PlayerName call CopyBytes - ld hl, UnknownText_0x1708b + ld hl, .Text_HatchEgg call PrintText ld a, [CurPartyMon] ld hl, PartyMonNicknames @@ -313,11 +325,12 @@ Function16f7a: ; 16f7a (5:6f7a) ld d, h ld e, l push de - ld hl, UnknownText_0x170ba + ld hl, .Text_NicknameHatchling call PrintText call YesNoBox pop de jr c, .nonickname + ld a, $1 ld [wd26b], a xor a @@ -328,32 +341,30 @@ Function16f7a: ; 16f7a (5:6f7a) pop hl ld de, StringBuffer1 call InitName - jr Function1707d + jr .next + .nonickname ld hl, StringBuffer1 ld bc, PKMN_NAME_LENGTH call CopyBytes -Function1707d: ; 1707d (5:707d) +.next: ; 1707d (5:707d) ld hl, CurPartyMon inc [hl] pop hl ld de, PARTYMON_STRUCT_LENGTH add hl, de pop de - jp Function16f7a + jp .loop -Function1708a: ; 1708a (5:708a) +.done: ; 1708a (5:708a) ret ; 1708b (5:708b) -UnknownText_0x1708b: ; 0x1708b +.Text_HatchEgg: ; 0x1708b ; Huh? @ @ text_jump UnknownText_0x1c0db0 start_asm -; 0x17090 - -Function17090: ; 17090 ld hl, VramState res 0, [hl] push hl @@ -361,38 +372,38 @@ Function17090: ; 17090 push bc ld a, [CurPartySpecies] push af - call Function1728f - ld hl, UnknownText_0x170b0 + call EggHatch_AnimationSequence + ld hl, .ClearTextbox call PrintText pop af ld [CurPartySpecies], a pop bc pop de pop hl - ld hl, UnknownText_0x170b5 + ld hl, .CameOutOfItsEgg ret ; 170b0 (5:70b0) -UnknownText_0x170b0: ; 0x170b0 +.ClearTextbox: ; 0x170b0 ; text_jump UnknownText_0x1c0db8 db "@" ; 0x170b5 -UnknownText_0x170b5: ; 0x170b5 +.CameOutOfItsEgg: ; 0x170b5 ; came out of its EGG!@ @ text_jump UnknownText_0x1c0dba db "@" ; 0x170ba -UnknownText_0x170ba: ; 0x170ba +.Text_NicknameHatchling: ; 0x170ba ; Give a nickname to @ ? text_jump UnknownText_0x1c0dd8 db "@" ; 0x170bf -Function170bf: ; 170bf - call Function17197 +InitEggMoves: ; 170bf + call GetHeritableMoves ld d, h ld e, l ld b, NUM_MOVES @@ -409,9 +420,9 @@ Function170bf: ; 170bf inc hl dec c jr nz, .next - call Function170e4 + call GetEggMove jr nc, .skip - call Function17169 + call LoadEggMove .skip inc de @@ -422,7 +433,7 @@ Function170bf: ; 170bf ret ; 170e4 -Function170e4: ; 170e4 +GetEggMove: ; 170e4 GLOBAL EggMoves push bc @@ -440,7 +451,7 @@ endr ld a, BANK(EggMoves) call GetFarByte cp -1 - jr z, .found_mon + jr z, .reached_end ld b, a ld a, [de] cp b @@ -448,8 +459,8 @@ endr inc hl jr .loop -.found_mon - call Function1720b +.reached_end + call GetBreedmonMovePointer ld b, NUM_MOVES .loop2 ld a, [de] @@ -504,7 +515,7 @@ endr ld a, [de] cp b jr nz, .loop5 - ld [wd262], a + ld [wPutativeTMHMMove], a predef CanLearnTMHMMove ld a, c and a @@ -521,7 +532,7 @@ endr ret ; 17169 -Function17169: ; 17169 +LoadEggMove: ; 17169 push de push bc ld a, [de] @@ -556,7 +567,7 @@ Function17169: ; 17169 ret ; 17197 -Function17197: ; 17197 +GetHeritableMoves: ; 17197 ld hl, wBreedMon2Moves ld a, [wBreedMon1Species] cp DITTO @@ -564,7 +575,7 @@ Function17197: ; 17197 ld a, [wBreedMon2Species] cp DITTO jr z, .ditto2 - ld a, [wDittoInDaycare] + ld a, [wBreedMotherOrNonDitto] and a ret z ld hl, wBreedMon1Moves @@ -579,7 +590,7 @@ Function17197: ; 17197 ld [TempMonDVs], a ld a, [wBreedMon2DVs + 1] ld [TempMonDVs + 1], a - ld a, $3 + ld a, BREEDMON ld [MonType], a predef GetGender jr c, .inherit_mon2_moves @@ -595,7 +606,7 @@ Function17197: ; 17197 ld [TempMonDVs], a ld a, [wBreedMon1DVs + 1] ld [TempMonDVs + 1], a - ld a, $3 + ld a, BREEDMON ld [MonType], a predef GetGender jr c, .inherit_mon1_moves @@ -614,7 +625,7 @@ Function17197: ; 17197 ret ; 1720b -Function1720b: ; 1720b +GetBreedmonMovePointer: ; 1720b ld hl, wBreedMon1Moves ld a, [wBreedMon1Species] cp DITTO @@ -622,7 +633,7 @@ Function1720b: ; 1720b ld a, [wBreedMon2Species] cp DITTO jr z, .ditto - ld a, [wDittoInDaycare] + ld a, [wBreedMotherOrNonDitto] and a ret z @@ -632,7 +643,7 @@ Function1720b: ; 1720b ; 17224 -Function17224: ; 17224 (5:7224) +GetEggFrontpic: ; 17224 (5:7224) push de ld [CurPartySpecies], a ld [CurSpecies], a @@ -642,7 +653,7 @@ Function17224: ; 17224 (5:7224) pop de predef_jump GetFrontpic -Function1723c: ; 1723c (5:723c) +GetHatchlingFrontpic: ; 1723c (5:723c) push de ld [CurPartySpecies], a ld [CurSpecies], a @@ -652,7 +663,7 @@ Function1723c: ; 1723c (5:723c) pop de predef_jump FrontpicPredef -Function17254: ; 17254 (5:7254) +Hatch_UpdateFrontpicBGMapCenter: ; 17254 (5:7254) push af call WaitTop push hl @@ -670,98 +681,100 @@ Function17254: ; 17254 (5:7254) lb bc, 7, 7 predef FillBox pop af - call Function17363 + call Hatch_LoadFrontpicPal call SetPalettes jp WaitBGMap -Function1727f: ; 1727f (5:727f) +EggHatch_DoAnimFrame: ; 1727f (5:727f) push hl push de push bc - callab Function8cf69 + callab PlaySpriteAnimations call DelayFrame pop bc pop de pop hl ret -Function1728f: ; 1728f (5:728f) +EggHatch_AnimationSequence: ; 1728f (5:728f) ld a, [wd265] ld [wJumptableIndex], a ld a, [CurSpecies] push af ld de, MUSIC_NONE call PlayMusic - callba Function8000 + callba BlankScreen call DisableLCD ld hl, EggHatchGFX ld de, VTiles0 tile $00 ld bc, $20 ld a, BANK(EggHatchGFX) call FarCopyBytes - callba Function8cf53 + callba ClearSpriteAnims ld de, VTiles2 tile $00 ld a, [wJumptableIndex] - call Function1723c + call GetHatchlingFrontpic ld de, VTiles2 tile $31 ld a, EGG - call Function17224 + call GetEggFrontpic ld de, MUSIC_EVOLUTION call PlayMusic call EnableLCD hlcoord 7, 4 - ld b, $98 - ld c, $31 + ld b, VBGMap0 / $100 + ld c, $31 ; Egg tiles start here ld a, EGG - call Function17254 - ld c, $50 + call Hatch_UpdateFrontpicBGMapCenter + ld c, 80 call DelayFrames xor a ld [wcf64], a ld a, [hSCX] ld b, a -.asm_172ee +.outerloop ld hl, wcf64 ld a, [hl] inc [hl] - cp $8 - jr nc, .asm_17327 + cp 8 + jr nc, .done ld e, [hl] -.asm_172f8 - ld a, $2 +.loop +; wobble e times + ld a, 2 ld [hSCX], a - ld a, $fe - ld [wc3c0], a - call Function1727f - ld c, $2 + ld a, -2 + ld [wGlobalAnimXOffset], a + call EggHatch_DoAnimFrame + ld c, 2 call DelayFrames - ld a, $fe + ld a, -2 ld [hSCX], a - ld a, $2 - ld [wc3c0], a - call Function1727f - ld c, $2 + ld a, 2 + ld [wGlobalAnimXOffset], a + call EggHatch_DoAnimFrame + ld c, 2 call DelayFrames dec e - jr nz, .asm_172f8 - ld c, $10 + jr nz, .loop + ld c, 16 call DelayFrames - call Function1736d - jr .asm_172ee -.asm_17327 + call EggHatch_CrackShell + jr .outerloop + +.done ld de, SFX_EGG_HATCH call PlaySFX xor a ld [hSCX], a - ld [wc3c0], a + ld [wGlobalAnimXOffset], a call ClearSprites - call Function173b3 + call Hatch_InitShellFragments hlcoord 6, 3 - ld b, $98 - ld c, $0 + ld b, VBGMap0 / $100 + ld c, $00 ; Hatchling tiles start here ld a, [wJumptableIndex] - call Function17254 - call Function17418 + call Hatch_UpdateFrontpicBGMapCenter + call Hatch_ShellFragmentLoop call WaitSFX ld a, [wJumptableIndex] ld [CurPartySpecies], a @@ -773,13 +786,13 @@ Function1728f: ; 1728f (5:728f) ld [CurSpecies], a ret -Function17363: ; 17363 (5:7363) +Hatch_LoadFrontpicPal: ; 17363 (5:7363) ld [PlayerHPPal], a ld b, SCGB_0B ld c, $0 jp GetSGBLayout -Function1736d: ; 1736d (5:736d) +EggHatch_CrackShell: ; 1736d (5:736d) ld a, [wcf64] dec a and $7 @@ -789,12 +802,12 @@ Function1736d: ; 1736d (5:736d) ret nc swap a srl a - add $4c + add 9 * 8 + 4 ld d, a - ld e, $58 + ld e, 11 * 8 ld a, SPRITE_ANIM_INDEX_19 call _InitSpriteAnimStruct - ld hl, $3 + ld hl, SPRITEANIMSTRUCT_TILE_ID add hl, bc ld [hl], $0 ld de, SFX_EGG_CRACK @@ -805,12 +818,12 @@ EggHatchGFX: ; 17393 INCBIN "gfx/unknown/017393.2bpp" ; 173b3 -Function173b3: ; 173b3 (5:73b3) - callba Function8cf53 - ld hl, Unknown_173ef +Hatch_InitShellFragments: ; 173b3 (5:73b3) + callba ClearSpriteAnims + ld hl, .SpriteData .loop ld a, [hli] - cp $ff + cp -1 jr z, .done ld e, a ld a, [hli] @@ -821,156 +834,162 @@ Function173b3: ; 173b3 (5:73b3) ld b, a push hl push bc + ld a, SPRITE_ANIM_INDEX_1C call _InitSpriteAnimStruct - ld hl, $3 + + ld hl, SPRITEANIMSTRUCT_TILE_ID add hl, bc ld [hl], $0 + pop de ld a, e - ld hl, $1 + ld hl, SPRITEANIMSTRUCT_FRAMESET_ID add hl, bc add [hl] ld [hl], a - ld hl, $b + + ld hl, SPRITEANIMSTRUCT_0B add hl, bc ld [hl], d + pop hl jr .loop .done ld de, SFX_EGG_HATCH call PlaySFX - call Function1727f + call EggHatch_DoAnimFrame ret ; 173ef (5:73ef) -Unknown_173ef: ; 173ef +.SpriteData: ; 173ef ; Probably OAM. - db $54, $48, $00, $3c - db $5c, $48, $01, $04 - db $54, $50, $00, $30 - db $5c, $50, $01, $10 - db $54, $58, $02, $24 - db $5c, $58, $03, $1c - db $50, $4c, $00, $36 - db $60, $4c, $01, $0a - db $50, $54, $02, $2a - db $60, $54, $03, $16 - db $ff + dsprite 10, 4, 9, 0, $00, $3c + dsprite 11, 4, 9, 0, $01, $04 + dsprite 10, 4, 10, 0, $00, $30 + dsprite 11, 4, 10, 0, $01, $10 + dsprite 10, 4, 11, 0, $02, $24 + dsprite 11, 4, 11, 0, $03, $1c + dsprite 10, 0, 9, 4, $00, $36 + dsprite 12, 0, 9, 4, $01, $0a + dsprite 10, 0, 10, 4, $02, $2a + dsprite 12, 0, 10, 4, $03, $16 + db -1 ; 17418 -Function17418: ; 17418 (5:7418) - ld c, $81 -.asm_1741a - call Function1727f +Hatch_ShellFragmentLoop: ; 17418 (5:7418) + ld c, 129 +.loop + call EggHatch_DoAnimFrame dec c - jr nz, .asm_1741a + jr nz, .loop ret Special_DayCareMon1: ; 17421 - ld hl, UnknownText_0x17467 + ld hl, DayCareMon1Text call PrintText ld a, [wBreedMon1Species] call PlayCry ld a, [wDaycareLady] bit 0, a - jr z, Function1745f - call KeepTextOpen + jr z, DayCareMonCursor + call ButtonSound ld hl, wBreedMon2Nick - call Function1746c + call DayCareMonCompatibilityText jp PrintText Special_DayCareMon2: ; 17440 - ld hl, UnknownText_0x17462 + ld hl, DayCareMon2Text call PrintText ld a, [wBreedMon2Species] call PlayCry ld a, [wDaycareMan] bit 0, a - jr z, Function1745f - call KeepTextOpen + jr z, DayCareMonCursor + call ButtonSound ld hl, wBreedMon1Nick - call Function1746c + call DayCareMonCompatibilityText jp PrintText -Function1745f: ; 1745f +DayCareMonCursor: ; 1745f jp WaitPressAorB_BlinkCursor ; 17462 -UnknownText_0x17462: ; 0x17462 +DayCareMon2Text: ; 0x17462 ; It's @ that was left with the DAY-CARE LADY. text_jump UnknownText_0x1c0df3 db "@" ; 0x17467 -UnknownText_0x17467: ; 0x17467 +DayCareMon1Text: ; 0x17467 ; It's @ that was left with the DAY-CARE MAN. text_jump UnknownText_0x1c0e24 db "@" ; 0x1746c -Function1746c: ; 1746c +DayCareMonCompatibilityText: ; 1746c push bc ld de, StringBuffer1 ld bc, NAME_LENGTH call CopyBytes - call Function16e1d + call CheckBreedmonCompatibility pop bc ld a, [wd265] - ld hl, UnknownText_0x1749c - cp $ff - jr z, .asm_1749b - ld hl, UnknownText_0x174a1 + ld hl, .AllAlone + cp -1 + jr z, .done + ld hl, .Incompatible and a - jr z, .asm_1749b - ld hl, UnknownText_0x174a6 + jr z, .done + ld hl, .HighCompatibility cp 230 - jr nc, .asm_1749b + jr nc, .done cp 70 - ld hl, UnknownText_0x174ab - jr nc, .asm_1749b - ld hl, UnknownText_0x174b0 + ld hl, .ModerateCompatibility + jr nc, .done + ld hl, .SlightCompatibility -.asm_1749b +.done ret ; 1749c -UnknownText_0x1749c: ; 0x1749c +.AllAlone: ; 0x1749c ; It's brimming with energy. text_jump UnknownText_0x1c0e54 db "@" ; 0x174a1 -UnknownText_0x174a1: ; 0x174a1 +.Incompatible: ; 0x174a1 ; It has no interest in @ . text_jump UnknownText_0x1c0e6f db "@" ; 0x174a6 -UnknownText_0x174a6: ; 0x174a6 +.HighCompatibility: ; 0x174a6 ; It appears to care for @ . text_jump UnknownText_0x1c0e8d db "@" ; 0x174ab -UnknownText_0x174ab: ; 0x174ab +.ModerateCompatibility: ; 0x174ab ; It's friendly with @ . text_jump UnknownText_0x1c0eac db "@" ; 0x174b0 -UnknownText_0x174b0: ; 0x174b0 +.SlightCompatibility: ; 0x174b0 ; It shows interest in @ . text_jump UnknownText_0x1c0ec6 db "@" ; 0x174b5 -Function_174b5: ; 174b5 - ld hl, String_174b9 +DayCareMonPrintEmptyString: ; 174b5 +; unreferenced + ld hl, .string ret ; 174b9 -String_174b9: ; 174b9 +.string: ; 174b9 db "@" ; 174ba diff --git a/engine/buena_phone_scripts.asm b/engine/buena_phone_scripts.asm index 98a7b72a3..0aad5e0ba 100644 --- a/engine/buena_phone_scripts.asm +++ b/engine/buena_phone_scripts.asm @@ -18,17 +18,17 @@ BuenaPhoneScript_CheckTimeOfDay1: checkday iftrue .day writetext UnknownText_0xa0d42 - keeptextopen + buttonsound end .morn: writetext UnknownText_0xa0c28 - keeptextopen + buttonsound end .day: writetext UnknownText_0xa0c72 - keeptextopen + buttonsound end BuenaPhoneScript_AfterMidnight1: @@ -43,22 +43,22 @@ BuenaPhoneScript_CheckTimeOfDay2: checkday iftrue .day writetext UnknownText_0xa0e29 - keeptextopen + buttonsound end .morn: writetext UnknownText_0xa0d96 - keeptextopen + buttonsound end .day: writetext UnknownText_0xa0dcf - keeptextopen + buttonsound end BuenaPhoneScript_AfterMidnight2: writetext UnknownText_0xa0e01 - keeptextopen + buttonsound end BuenaPhoneScript_Rocket: diff --git a/engine/buy_sell_toss.asm b/engine/buy_sell_toss.asm new file mode 100755 index 000000000..7f2ad2727 --- /dev/null +++ b/engine/buy_sell_toss.asm @@ -0,0 +1,238 @@ +SelectQuantityToToss: ; 24fbf + ld hl, TossItem_MenuDataHeader + call LoadMenuDataHeader + call Toss_Sell_Loop + ret +; 24fc9 + +SelectQuantityToBuy: ; 24fc9 + callba GetItemPrice +RooftopSale_SelectQuantityToBuy: ; 24fcf + ld a, d + ld [Buffer1], a + ld a, e + ld [Buffer2], a + ld hl, BuyItem_MenuDataHeader + call LoadMenuDataHeader + call Toss_Sell_Loop + ret +; 24fe1 + +SelectQuantityToSell: ; 24fe1 + callba GetItemPrice + ld a, d + ld [Buffer1], a + ld a, e + ld [Buffer2], a + ld hl, SellItem_MenuDataHeader + call LoadMenuDataHeader + call Toss_Sell_Loop + ret +; 24ff9 + +Toss_Sell_Loop: ; 24ff9 + ld a, 1 + ld [wItemQuantityChangeBuffer], a +.loop + call BuySellToss_UpdateQuantityDisplay ; update display + call BuySellToss_InterpretJoypad ; joy action + jr nc, .loop + cp -1 + jr nz, .nope ; pressed B + scf + ret + +.nope + and a + ret +; 2500e + +BuySellToss_InterpretJoypad: ; 2500e + call Function354b ; get joypad + bit B_BUTTON_F, c + jr nz, .b + bit A_BUTTON_F, c + jr nz, .a + bit D_DOWN_F, c + jr nz, .down + bit D_UP_F, c + jr nz, .up + bit D_LEFT_F, c + jr nz, .left + bit D_RIGHT_F, c + jr nz, .right + and a + ret + +.b + ld a, -1 + scf + ret + +.a + ld a, 0 + scf + ret + +.down + ld hl, wItemQuantityChangeBuffer + dec [hl] + jr nz, .finish_down + ld a, [wItemQuantityBuffer] + ld [hl], a + +.finish_down + and a + ret + +.up + ld hl, wItemQuantityChangeBuffer + inc [hl] + ld a, [wItemQuantityBuffer] + cp [hl] + jr nc, .finish_up + ld [hl], 1 + +.finish_up + and a + ret + +.left + ld a, [wItemQuantityChangeBuffer] + sub 10 + jr c, .load_1 + jr z, .load_1 + jr .finish_left + +.load_1 + ld a, 1 + +.finish_left + ld [wItemQuantityChangeBuffer], a + and a + ret + +.right + ld a, [wItemQuantityChangeBuffer] + add 10 + ld b, a + ld a, [wItemQuantityBuffer] + cp b + jr nc, .finish_right + ld b, a + +.finish_right + ld a, b + ld [wItemQuantityChangeBuffer], a + and a + ret +; 25072 + +BuySellToss_UpdateQuantityDisplay: ; 25072 + call MenuBox + call MenuBoxCoord2Tile + ld de, SCREEN_WIDTH + 1 + add hl, de + ld [hl], "×" + inc hl + ld de, wItemQuantityChangeBuffer + lb bc, PRINTNUM_LEADINGZEROS | 1, 2 + call PrintNum + ld a, [wMenuData2Pointer] + ld e, a + ld a, [wMenuData2Pointer + 1] + ld d, a + ld a, [wMenuDataBank] + call FarCall_de + ret +; 25097 + +ret_25097: ; 25097 + ret +; 25098 + +DisplayPurchasePrice: ; 25098 + call BuySell_MultiplyPrice + call BuySell_DisplaySubtotal + ret +; 2509f + +DisplaySellingPrice: ; 2509f + call BuySell_MultiplyPrice + call Sell_HalvePrice + call BuySell_DisplaySubtotal + ret +; 250a9 + +BuySell_MultiplyPrice: ; 250a9 + xor a + ld [hMultiplicand + 0], a + ld a, [Buffer1] + ld [hMultiplicand + 1], a + ld a, [Buffer2] + ld [hMultiplicand + 2], a + ld a, [wItemQuantityChangeBuffer] + ld [hMultiplier], a + push hl + call Multiply + pop hl + ret +; 250c1 + +Sell_HalvePrice: ; 250c1 + push hl + ld hl, hProduct + 1 + ld a, [hl] + srl a + ld [hli], a + ld a, [hl] + rra + ld [hli], a + ld a, [hl] + rra + ld [hl], a + pop hl + ret +; 250d1 + +BuySell_DisplaySubtotal: ; 250d1 + push hl + ld hl, hMoneyTemp + ld a, [hProduct + 1] + ld [hli], a + ld a, [hProduct + 2] + ld [hli], a + ld a, [hProduct + 3] + ld [hl], a + pop hl + inc hl + ld de, hMoneyTemp + lb bc, PRINTNUM_MONEY | 3, 6 + call PrintNum + call WaitBGMap + ret +; 250ed + +TossItem_MenuDataHeader: ; 0x250ed + db $40 ; flags + db 09, 15 ; start coords + db 11, 19 ; end coords + dw ret_25097 + db 0 ; default option +; 0x250f5 + +BuyItem_MenuDataHeader: ; 0x250f5 + db $40 ; flags + db 15, 07 ; start coords + db 17, 19 ; end coords + dw DisplayPurchasePrice + db -1 ; default option +; 0x250fd + +SellItem_MenuDataHeader: ; 0x250fd + db $40 ; flags + db 15, 07 ; start coords + db 17, 19 ; end coords + dw DisplaySellingPrice + db 0 ; default option +; 0x25105 diff --git a/engine/card_flip.asm b/engine/card_flip.asm index df9d895d1..fd55ff06b 100755 --- a/engine/card_flip.asm +++ b/engine/card_flip.asm @@ -1,3 +1,7 @@ +CARDFLIP_LIGHT_OFF EQU $ef +CARDFLIP_LIGHT_ON EQU $f5 +CARDFLIP_DECK_SIZE EQU 4 * 6 + _CardFlip: ; e00ee (38:40ee) ld hl, Options set 4, [hl] @@ -10,28 +14,30 @@ _CardFlip: ; e00ee (38:40ee) call DisableLCD call LoadStandardFont call LoadFontsExtra - ld hl, LZ_e0d16 + + ld hl, CardFlipLZ01 ld de, VTiles2 tile $00 call Decompress - ld hl, LZ_e0ea8 + ld hl, CardFlipLZ02 ld de, VTiles2 tile $3e call Decompress - ld hl, LZ_e0cdb + ld hl, CardFlipLZ03 ld de, VTiles0 tile $00 call Decompress - ld hl, GFX_e0cf6 + ld hl, CardFlipOffButtonGFX ld de, VTiles1 tile $6f - ld bc, $10 + ld bc, 1 tiles call CopyBytes - ld hl, GFX_e0d06 + ld hl, CardFlipOnButtonGFX ld de, VTiles1 tile $75 - ld bc, $10 + ld bc, 1 tiles call CopyBytes - call Functione0521 - call Functione04c1 - call Functione0c37 + + call CardFlip_ShiftDigitsLeftTwoPixels + call CardFlip_InitTilemap + call CardFlip_InitAttrPals call EnableLCD - call Function3200 + call WaitBGMap2 ld a, $e4 call DmgToCgbBGPals ld de, $e4e4 @@ -40,8 +46,8 @@ _CardFlip: ; e00ee (38:40ee) xor a ld [wJumptableIndex], a ld a, $2 - ld [wcf64], a - ld [wcf65], a + ld [wCardFlipCursorY], a + ld [wCardFlipCursorX], a ld de, MUSIC_GAME_CORNER call PlayMusic .MasterLoop @@ -75,14 +81,15 @@ endr ; e01a0 (38:41a0) .Jumptable: ; e01a0 - dw .AskPlayWithThree - dw .DeductCoins - dw .ChooseACard - dw .PlaceYourBet - dw .CheckTheCard - dw .TabulateTheResult - dw .PlayAgain - dw .Quit + jumptable_start + jumptable .AskPlayWithThree + jumptable .DeductCoins + jumptable .ChooseACard + jumptable .PlaceYourBet + jumptable .CheckTheCard + jumptable .TabulateTheResult + jumptable .PlayAgain + jumptable .Quit ; e01b0 .Increment: ; e01b0 @@ -93,15 +100,15 @@ endr .AskPlayWithThree: ; e01b5 ld hl, .PlayWithThreeCoinsText - call Functione0489 + call CardFlip_UpdateCoinBalanceDisplay call YesNoBox jr c, .SaidNo - call Functione0366 + call CardFlip_ShuffleDeck call .Increment ret .SaidNo - ld a, $7 + ld a, 7 ; .QuitTableIndex ld [wJumptableIndex], a ret ; e01cd @@ -124,8 +131,8 @@ endr cp 3 jr nc, .deduct ; You have at least 3 coins. ld hl, .NotEnoughCoinsText - call Functione0489 - ld a, $7 + call CardFlip_UpdateCoinBalanceDisplay + ld a, 7 ; .QuitTableIndex ld [wJumptableIndex], a ret @@ -140,7 +147,7 @@ endr call PlaySFX xor a ld [hBGMapMode], a - call Functione049c + call CardFlip_PrintCoinBalance ld a, $1 ld [hBGMapMode], a call WaitSFX @@ -159,29 +166,29 @@ endr ld [hBGMapMode], a hlcoord 0, 0 lb bc, 12, 9 - call Functione04e5 + call CardFlip_FillGreenBox hlcoord 9, 0 ld bc, SCREEN_WIDTH - ld a, [wc6e8] + ld a, [wCardFlipNumCardsPlayed] call AddNTimes - ld [hl], $f5 + ld [hl], CARDFLIP_LIGHT_ON ld a, $1 ld [hBGMapMode], a ld c, 20 call DelayFrames hlcoord 2, 0 - call Functione03c1 + call PlaceCardFaceDown ld a, $1 ld [hBGMapMode], a ld c, 20 call DelayFrames hlcoord 2, 6 - call Functione03c1 + call PlaceCardFaceDown call WaitBGMap ld hl, .ChooseACardText - call Functione0489 + call CardFlip_UpdateCoinBalanceDisplay xor a - ld [wcf66], a + ld [wCardFlipWhichCard], a .loop call JoyTextDelay ld a, [hJoyLast] @@ -189,10 +196,10 @@ endr jr nz, .next ld de, SFX_KINESIS call PlaySFX - call Functione0849 + call PlaceOAMCardBorder ld c, 4 call DelayFrames - ld hl, wcf66 + ld hl, wCardFlipWhichCard ld a, [hl] xor $1 ld [hl], a @@ -204,7 +211,7 @@ endr ld a, $3 .loop2 push af - call Functione0849 + call PlaceOAMCardBorder ld c, 4 call DelayFrames call ClearSprites @@ -213,16 +220,16 @@ endr pop af dec a jr nz, .loop2 - ld hl, wcf66 + ld hl, wCardFlipWhichCard ld a, [hl] push af xor $1 ld [hl], a - call Functione03ac + call GetCoordsOfChosenCard lb bc, 6, 5 - call Functione04e5 + call CardFlip_FillGreenBox pop af - ld [wcf66], a + ld [wCardFlipWhichCard], a call .Increment ret ; e02b2 @@ -235,14 +242,14 @@ endr .PlaceYourBet: ; e02b7 ld hl, .PlaceYourBetText - call Functione0489 + call CardFlip_UpdateCoinBalanceDisplay .betloop call JoyTextDelay ld a, [hJoyLast] and A_BUTTON jr nz, .betdone - call Functione089c - call Functione0960 + call ChooseCard_HandleJoypad + call CardFlip_UpdateCursorOAM call DelayFrame jr .betloop @@ -260,36 +267,36 @@ endr .CheckTheCard: ; e02da xor a ld [hVBlankCounter], a - call Functione0960 + call CardFlip_UpdateCursorOAM call WaitSFX ld de, SFX_CHOOSE_A_CARD call PlaySFX call WaitSFX - ld a, [wc6e8] + ld a, [wCardFlipNumCardsPlayed] ld e, a ld d, 0 - ld hl, wc6d0 + ld hl, wDeck rept 2 add hl, de endr - ld a, [wcf66] + ld a, [wCardFlipWhichCard] ld e, a add hl, de ld a, [hl] - ld [CurEnemyMoveNum], a + ld [wCardFlipFaceUpCard], a ld e, a - ld hl, wc6ea + ld hl, wDiscardPile add hl, de - ld [hl], $1 - call Functione03ac - call Functione03ec - call Function3200 + ld [hl], TRUE + call GetCoordsOfChosenCard + call CardFlip_DisplayCardFaceUp + call WaitBGMap2 call .Increment ret ; e0314 .TabulateTheResult: ; e0314 - call Functione0637 + call CardFlip_CheckWinCondition call WaitPressAorB_BlinkCursor call .Increment ret @@ -298,31 +305,31 @@ endr .PlayAgain: ; e031e call ClearSprites ld hl, .PlayAgainText - call Functione0489 + call CardFlip_UpdateCoinBalanceDisplay call YesNoBox jr nc, .Continue call .Increment ret .Continue - ld a, [wc6e8] + ld a, [wCardFlipNumCardsPlayed] inc a - ld [wc6e8], a - cp $c + ld [wCardFlipNumCardsPlayed], a + cp 12 jr c, .KeepTheCurrentDeck - call Functione04c1 + call CardFlip_InitTilemap ld a, $1 ld [hBGMapMode], a - call Functione0366 + call CardFlip_ShuffleDeck ld hl, .CardsShuffledText call PrintText jr .LoopAround .KeepTheCurrentDeck - call Functione0534 + call CardFlip_BlankDiscardedCardSlot .LoopAround - ld a, $1 + ld a, 1 ; .DeductCoinsTableIndex ld [wJumptableIndex], a ret ; e0356 @@ -345,73 +352,73 @@ endr ret ; e0366 -Functione0366: ; e0366 - ld hl, wc6d0 - ld bc, $18 +CardFlip_ShuffleDeck: ; e0366 + ld hl, wDeck + ld bc, CARDFLIP_DECK_SIZE xor a call ByteFill - ld de, wc6d0 - ld c, $17 -.asm_e0375 + ld de, wDeck + ld c, CARDFLIP_DECK_SIZE - 1 +.loop call Random and $1f - cp $18 - jr nc, .asm_e0375 + cp CARDFLIP_DECK_SIZE + jr nc, .loop ld l, a ld h, $0 add hl, de ld a, [hl] and a - jr nz, .asm_e0375 + jr nz, .loop ld [hl], c dec c - jr nz, .asm_e0375 + jr nz, .loop xor a - ld [wc6e8], a - ld hl, wc6ea - ld bc, $18 + ld [wCardFlipNumCardsPlayed], a + ld hl, wDiscardPile + ld bc, CARDFLIP_DECK_SIZE call ByteFill ret ; e0398 -Functione0398: ; e0398 +CollapseCursorPosition: ; e0398 ld hl, 0 ld bc, 6 - ld a, [wcf64] + ld a, [wCardFlipCursorY] call AddNTimes ld b, $0 - ld a, [wcf65] + ld a, [wCardFlipCursorX] ld c, a add hl, bc ret ; e03ac -Functione03ac: ; e03ac - ld a, [wcf66] +GetCoordsOfChosenCard: ; e03ac + ld a, [wCardFlipWhichCard] and a - jr nz, .asm_e03ba + jr nz, .BottomCard hlcoord 2, 0 - ld bc, $1018 - jr .asm_e03c0 + bcpixel 2, 3 + jr .done -.asm_e03ba +.BottomCard hlcoord 2, 6 - ld bc, $4018 + bcpixel 8, 3 -.asm_e03c0 +.done ret ; e03c1 -Functione03c1: ; e03c1 +PlaceCardFaceDown: ; e03c1 xor a ld [hBGMapMode], a - ld de, Unknown_e03ce + ld de, .FaceDownCardTilemap lb bc, 6, 5 - call Functione04f7 + call CardFlip_CopyToBox ret ; e03ce -Unknown_e03ce: ; e03ce +.FaceDownCardTilemap: ; e03ce db $08, $09, $09, $09, $0a db $0b, $28, $2b, $28, $0c db $0b, $2c, $2d, $2e, $0c @@ -420,60 +427,71 @@ Unknown_e03ce: ; e03ce db $0d, $0e, $0e, $0e, $0f ; e03ec -Functione03ec: ; e03ec +CardFlip_DisplayCardFaceUp: ; e03ec xor a ld [hBGMapMode], a push hl push hl - ld de, Unknown_e043b + ; Flip the card face up. + ld de, .FaceUpCardTilemap lb bc, 6, 5 - call Functione04f7 - ld a, [CurEnemyMoveNum] + call CardFlip_CopyToBox + + ; Get the level and species of the upturned card. + ld a, [wCardFlipFaceUpCard] ld e, a ld d, 0 - ld hl, Unknown_e0459 + ld hl, .Deck rept 2 add hl, de endr ld a, [hli] ld e, a ld d, [hl] + + ; Place the level. pop hl - ld bc, $17 + ld bc, 3 + SCREEN_WIDTH add hl, bc ld [hl], e + + ; Place the Pokepic. ld bc, SCREEN_HEIGHT add hl, bc ld a, d ld de, SCREEN_WIDTH - ld b, $3 -.asm_e0418 + ld b, 3 +.row push hl - ld c, $3 -.asm_e041b + ld c, 3 +.col ld [hli], a inc a dec c - jr nz, .asm_e041b + jr nz, .col pop hl add hl, de dec b - jr nz, .asm_e0418 + jr nz, .row pop hl + + ; Pointless CGB check ld a, [hCGB] and a ret z + + ; Set the attributes ld de, AttrMap - TileMap add hl, de - ld a, [CurEnemyMoveNum] + ld a, [wCardFlipFaceUpCard] and 3 inc a lb bc, 6, 5 - call Functione04e7 + call CardFlip_FillBox ret ; e043b -Unknown_e043b: ; e043b +.FaceUpCardTilemap: ; e043b db $18, $19, $19, $19, $1a db $1b, $35, $7f, $7f, $1c db $0b, $28, $28, $28, $0c @@ -482,34 +500,35 @@ Unknown_e043b: ; e043b db $1d, $1e, $1e, $1e, $1f ; e0459 -Unknown_e0459: ; e0459 - db $f7,$4e, $f7,$57, $f7,$69, $f7,$60 - db $f8,$4e, $f8,$57, $f8,$69, $f8,$60 - db $f9,$4e, $f9,$57, $f9,$69, $f9,$60 - db $fa,$4e, $fa,$57, $fa,$69, $fa,$60 - db $fb,$4e, $fb,$57, $fb,$69, $fb,$60 - db $fc,$4e, $fc,$57, $fc,$69, $fc,$60 +.Deck: ; e0459 + ; level, pic anchor (3x3) + db "1",$4e, "1",$57, "1",$69, "1",$60 + db "2",$4e, "2",$57, "2",$69, "2",$60 + db "3",$4e, "3",$57, "3",$69, "3",$60 + db "4",$4e, "4",$57, "4",$69, "4",$60 + db "5",$4e, "5",$57, "5",$69, "5",$60 + db "6",$4e, "6",$57, "6",$69, "6",$60 ; e0489 -Functione0489: ; e0489 +CardFlip_UpdateCoinBalanceDisplay: ; e0489 push hl hlcoord 0, 12 - ld b, $4 - ld c, $12 + ld b, 4 + ld c, SCREEN_WIDTH - 2 call TextBox pop hl call PrintTextBoxText - call Functione049c + call CardFlip_PrintCoinBalance ret ; e049c -Functione049c: ; e049c +CardFlip_PrintCoinBalance: ; e049c hlcoord 9, 15 - ld b, $1 - ld c, $9 + ld b, 1 + ld c, 9 call TextBox hlcoord 10, 16 - ld de, String_e04bc + ld de, .CoinStr call PlaceString hlcoord 15, 16 ld de, Coins @@ -518,11 +537,11 @@ Functione049c: ; e049c ret ; e04bc -String_e04bc: +.CoinStr: db "COIN@" ; e04c1 -Functione04c1: ; e04c1 (38:44c1) +CardFlip_InitTilemap: ; e04c1 (38:44c1) xor a ld [hBGMapMode], a hlcoord 0, 0 @@ -530,55 +549,57 @@ Functione04c1: ; e04c1 (38:44c1) ld a, $29 call ByteFill hlcoord 9, 0 - ld de, Unknown_e110c + ld de, CardFlipTilemap lb bc, 12, 11 - call Functione04f7 + call CardFlip_CopyToBox hlcoord 0, 12 lb bc, 4, 18 call TextBox ret ; e04e5 (38:44e5) -Functione04e5: ; e04e5 +CardFlip_FillGreenBox: ; e04e5 ld a, $29 -Functione04e7: ; e04e7 (38:44e7) +CardFlip_FillBox: ; e04e7 (38:44e7) +.row push bc push hl -.asm_e04e9 +.col ld [hli], a dec c - jr nz, .asm_e04e9 + jr nz, .col pop hl - ld bc, $14 + ld bc, SCREEN_WIDTH add hl, bc pop bc dec b - jr nz, Functione04e7 + jr nz, .row ret -Functione04f7: ; e04f7 (38:44f7) +CardFlip_CopyToBox: ; e04f7 (38:44f7) +.row push bc push hl -.asm_e04f9 +.col ld a, [de] inc de ld [hli], a dec c - jr nz, .asm_e04f9 + jr nz, .col pop hl - ld bc, $14 + ld bc, SCREEN_WIDTH add hl, bc pop bc dec b - jr nz, Functione04f7 + jr nz, .row ret ; e0509 (38:4509) -Functione0509: ; e0509 +CardFlip_CopyOAM: ; e0509 ld de, Sprites ld a, [hli] -.asm_e050d +.loop push af ld a, [hli] add b @@ -596,38 +617,40 @@ Functione0509: ; e0509 inc de pop af dec a - jr nz, .asm_e050d + jr nz, .loop ret ; e0521 -Functione0521: ; e0521 (38:4521) - ld de, VTiles1 tile $76 - ld hl, $8f62 - ld bc, $9e +CardFlip_ShiftDigitsLeftTwoPixels: ; e0521 (38:4521) + ld de, VTiles1 tile ("0" & $7f) + ld hl, VTiles1 tile ("0" & $7f) + 2 + ld bc, 10 tiles - 2 call CopyBytes - ld hl, $8ffe + ld hl, VTiles1 tile $7f + 1 tiles - 2 xor a ld [hli], a ld [hl], a ret ; e0534 (38:4534) -Functione0534: ; e0534 +CardFlip_BlankDiscardedCardSlot: ; e0534 xor a ld [hBGMapMode], a - ld a, [CurEnemyMoveNum] + ld a, [wCardFlipFaceUpCard] ld e, a ld d, 0 - and 3 + + and 3 ; get mon ld c, a ld b, 0 + ld a, e - and $1c + and $1c ; get level srl a - add Jumptable_e0553 % $100 + add .Jumptable % $100 ld l, a ld a, 0 - adc Jumptable_e0553 / $100 + adc .Jumptable / $100 ld h, a ld a, [hli] ld h, [hl] @@ -635,21 +658,22 @@ Functione0534: ; e0534 jp [hl] ; e0553 -Jumptable_e0553: ; e0553 - dw Functione055f - dw Functione0583 - dw Functione05a7 - dw Functione05cb - dw Functione05ef - dw Functione0613 +.Jumptable: ; e0553 + jumptable_start + jumptable .Level1 + jumptable .Level2 + jumptable .Level3 + jumptable .Level4 + jumptable .Level5 + jumptable .Level6 ; e055f -Functione055f: ; e055f - ld hl, wc6e6 + 8 +.Level1: ; e055f + ld hl, wDiscardPile + 4 add hl, de ld a, [hl] and a - jr nz, .asm_e0575 + jr nz, .discarded2 hlcoord 13, 3 rept 2 add hl, bc @@ -660,7 +684,7 @@ endr ld [hl], $37 ret -.asm_e0575 +.discarded2 hlcoord 13, 3 rept 2 add hl, bc @@ -672,12 +696,12 @@ endr ret ; e0583 -Functione0583: ; e0583 - ld hl, wc6e6 +.Level2: ; e0583 + ld hl, wDiscardPile - 4 add hl, de ld a, [hl] and a - jr nz, .asm_e0599 + jr nz, .discarded1 hlcoord 13, 4 rept 2 add hl, bc @@ -688,7 +712,7 @@ endr ld [hl], $3a ret -.asm_e0599 +.discarded1 hlcoord 13, 4 rept 2 add hl, bc @@ -700,12 +724,12 @@ endr ret ; e05a7 -Functione05a7: ; e05a7 - ld hl, wc6e6 + 8 +.Level3: ; e05a7 + ld hl, wDiscardPile + 4 add hl, de ld a, [hl] and a - jr nz, .asm_e05bd + jr nz, .discarded4 hlcoord 13, 6 rept 2 add hl, bc @@ -716,7 +740,7 @@ endr ld [hl], $38 ret -.asm_e05bd +.discarded4 hlcoord 13, 6 rept 2 add hl, bc @@ -728,12 +752,12 @@ endr ret ; e05cb -Functione05cb: ; e05cb - ld hl, wc6e6 +.Level4: ; e05cb + ld hl, wDiscardPile - 4 add hl, de ld a, [hl] and a - jr nz, .asm_e05e1 + jr nz, .discarded3 hlcoord 13, 7 rept 2 add hl, bc @@ -744,7 +768,7 @@ endr ld [hl], $3a ret -.asm_e05e1 +.discarded3 hlcoord 13, 7 rept 2 add hl, bc @@ -756,12 +780,12 @@ endr ret ; e05ef -Functione05ef: ; e05ef - ld hl, wc6e6 + 8 +.Level5: ; e05ef + ld hl, wDiscardPile + 4 add hl, de ld a, [hl] and a - jr nz, .asm_e0605 + jr nz, .discarded6 hlcoord 13, 9 rept 2 add hl, bc @@ -772,7 +796,7 @@ endr ld [hl], $39 ret -.asm_e0605 +.discarded6 hlcoord 13, 9 rept 2 add hl, bc @@ -784,12 +808,12 @@ endr ret ; e0613 -Functione0613: ; e0613 - ld hl, wc6e6 +.Level6: ; e0613 + ld hl, wDiscardPile - 4 add hl, de ld a, [hl] and a - jr nz, .asm_e0629 + jr nz, .discarded5 hlcoord 13, 10 rept 2 add hl, bc @@ -800,7 +824,7 @@ endr ld [hl], $3a ret -.asm_e0629 +.discarded5 hlcoord 13, 10 rept 2 add hl, bc @@ -812,10 +836,10 @@ endr ret ; e0637 -Functione0637: ; e0637 - call Functione0398 +CardFlip_CheckWinCondition: ; e0637 + call CollapseCursorPosition add hl, hl - ld de, Jumptable_e0643 + ld de, .Jumptable add hl, de ld a, [hli] ld h, [hl] @@ -823,335 +847,343 @@ Functione0637: ; e0637 jp [hl] ; e0643 -Jumptable_e0643: ; e0643 - dw Functione06a3 - dw Functione06a3 - dw Functione06a6 - dw Functione06a6 - dw Functione06b0 - dw Functione06b0 - dw Functione06a3 - dw Functione06a3 - dw Functione06ec - dw Functione06f6 - dw Functione0702 - dw Functione070e - dw Functione06c2 - dw Functione0722 - dw Functione0770 - dw Functione0774 - dw Functione0778 - dw Functione077c - dw Functione06c2 - dw Functione072c - dw Functione0780 - dw Functione0784 - dw Functione0788 - dw Functione078c - dw Functione06cc - dw Functione0738 - dw Functione0790 - dw Functione0794 - dw Functione0798 - dw Functione079c - dw Functione06cc - dw Functione0744 - dw Functione07a0 - dw Functione07a4 - dw Functione07a8 - dw Functione07ac - dw Functione06d8 - dw Functione0750 - dw Functione07b0 - dw Functione07b4 - dw Functione07b8 - dw Functione07bc - dw Functione06d8 - dw Functione075c - dw Functione07c0 - dw Functione07c4 - dw Functione07c8 - dw Functione07cc +.Jumptable: ; e0643 + jumptable_start + jumptable .Impossible + jumptable .Impossible + jumptable .PikaJiggly + jumptable .PikaJiggly + jumptable .PoliOddish + jumptable .PoliOddish + + jumptable .Impossible + jumptable .Impossible + jumptable .Pikachu + jumptable .Jigglypuff + jumptable .Poliwag + jumptable .Oddish + + jumptable .OneTwo + jumptable .One + jumptable .PikaOne + jumptable .JigglyOne + jumptable .PoliOne + jumptable .OddOne + + jumptable .OneTwo + jumptable .Two + jumptable .PikaTwo + jumptable .JigglyTwo + jumptable .PoliTwo + jumptable .OddTwo + + jumptable .ThreeFour + jumptable .Three + jumptable .PikaThree + jumptable .JigglyThree + jumptable .PoliThree + jumptable .OddThree + + jumptable .ThreeFour + jumptable .Four + jumptable .PikaFour + jumptable .JigglyFour + jumptable .PoliFour + jumptable .OddFour + + jumptable .FiveSix + jumptable .Five + jumptable .PikaFive + jumptable .JigglyFive + jumptable .PoliFive + jumptable .OddFive + + jumptable .FiveSix + jumptable .Six + jumptable .PikaSix + jumptable .JigglySix + jumptable .PoliSix + jumptable .OddSix ; e06a3 -Functione06a3: ; e06a3 - jp Functione07db +.Impossible: ; e06a3 + jp .Lose ; e06a6 -Functione06a6: ; e06a6 - ld a, [CurEnemyMoveNum] +.PikaJiggly: ; e06a6 + ld a, [wCardFlipFaceUpCard] and $2 - jp nz, Functione07db - jr Functione06ba + jp nz, .Lose + jr .WinSix -Functione06b0: ; e06b0 - ld a, [CurEnemyMoveNum] +.PoliOddish: ; e06b0 + ld a, [wCardFlipFaceUpCard] and $2 - jr nz, Functione06ba - jp Functione07db + jr nz, .WinSix + jp .Lose -Functione06ba: ; e06ba +.WinSix: ; e06ba ld c, $6 ld de, SFX_2ND_PLACE - jp Functione07eb + jp .Payout ; e06c2 -Functione06c2: ; e06c2 - ld a, [CurEnemyMoveNum] +.OneTwo: ; e06c2 + ld a, [wCardFlipFaceUpCard] and $18 - jr z, Functione06e4 - jp Functione07db + jr z, .WinNine + jp .Lose -Functione06cc: ; e06cc - ld a, [CurEnemyMoveNum] +.ThreeFour: ; e06cc + ld a, [wCardFlipFaceUpCard] and $18 cp $8 - jr z, Functione06e4 - jp Functione07db + jr z, .WinNine + jp .Lose -Functione06d8: ; e06d8 - ld a, [CurEnemyMoveNum] +.FiveSix: ; e06d8 + ld a, [wCardFlipFaceUpCard] and $18 cp $10 - jr z, Functione06e4 - jp Functione07db + jr z, .WinNine + jp .Lose -Functione06e4: ; e06e4 +.WinNine: ; e06e4 ld c, $9 ld de, SFX_2ND_PLACE - jp Functione07eb + jp .Payout ; e06ec -Functione06ec: ; e06ec - ld a, [CurEnemyMoveNum] +.Pikachu: ; e06ec + ld a, [wCardFlipFaceUpCard] and $3 - jr z, Functione071a - jp Functione07db + jr z, .WinTwelve + jp .Lose -Functione06f6: ; e06f6 - ld a, [CurEnemyMoveNum] +.Jigglypuff: ; e06f6 + ld a, [wCardFlipFaceUpCard] and $3 cp $1 - jr z, Functione071a - jp Functione07db + jr z, .WinTwelve + jp .Lose -Functione0702: ; e0702 - ld a, [CurEnemyMoveNum] +.Poliwag: ; e0702 + ld a, [wCardFlipFaceUpCard] and $3 cp $2 - jr z, Functione071a - jp Functione07db + jr z, .WinTwelve + jp .Lose -Functione070e: ; e070e - ld a, [CurEnemyMoveNum] +.Oddish: ; e070e + ld a, [wCardFlipFaceUpCard] and $3 cp $3 - jr z, Functione071a - jp Functione07db + jr z, .WinTwelve + jp .Lose -Functione071a: ; e071a +.WinTwelve: ; e071a ld c, $c ld de, SFX_2ND_PLACE - jp Functione07eb + jp .Payout ; e0722 -Functione0722: ; e0722 - ld a, [CurEnemyMoveNum] +.One: ; e0722 + ld a, [wCardFlipFaceUpCard] and $1c - jr z, Functione0768 - jp Functione07db + jr z, .WinEighteen + jp .Lose -Functione072c: ; e072c - ld a, [CurEnemyMoveNum] +.Two: ; e072c + ld a, [wCardFlipFaceUpCard] and $1c cp $4 - jr z, Functione0768 - jp Functione07db + jr z, .WinEighteen + jp .Lose -Functione0738: ; e0738 - ld a, [CurEnemyMoveNum] +.Three: ; e0738 + ld a, [wCardFlipFaceUpCard] and $1c cp $8 - jr z, Functione0768 - jp Functione07db + jr z, .WinEighteen + jp .Lose -Functione0744: ; e0744 - ld a, [CurEnemyMoveNum] +.Four: ; e0744 + ld a, [wCardFlipFaceUpCard] and $1c cp $c - jr z, Functione0768 - jp Functione07db + jr z, .WinEighteen + jp .Lose -Functione0750: ; e0750 - ld a, [CurEnemyMoveNum] +.Five: ; e0750 + ld a, [wCardFlipFaceUpCard] and $1c cp $10 - jr z, Functione0768 - jp Functione07db + jr z, .WinEighteen + jp .Lose -Functione075c: ; e075c - ld a, [CurEnemyMoveNum] +.Six: ; e075c + ld a, [wCardFlipFaceUpCard] and $1c cp $14 - jr z, Functione0768 - jp Functione07db + jr z, .WinEighteen + jp .Lose -Functione0768: ; e0768 +.WinEighteen: ; e0768 ld c, $12 ld de, SFX_2ND_PLACE - jp Functione07eb + jp .Payout ; e0770 -Functione0770: ; e0770 +.PikaOne: ; e0770 ld e, $0 - jr Functione07ce + jr .CheckWin72 -Functione0774: ; e0774 +.JigglyOne: ; e0774 ld e, $1 - jr Functione07ce + jr .CheckWin72 -Functione0778: ; e0778 +.PoliOne: ; e0778 ld e, $2 - jr Functione07ce + jr .CheckWin72 -Functione077c: ; e077c +.OddOne: ; e077c ld e, $3 - jr Functione07ce + jr .CheckWin72 -Functione0780: ; e0780 +.PikaTwo: ; e0780 ld e, $4 - jr Functione07ce + jr .CheckWin72 -Functione0784: ; e0784 +.JigglyTwo: ; e0784 ld e, $5 - jr Functione07ce + jr .CheckWin72 -Functione0788: ; e0788 +.PoliTwo: ; e0788 ld e, $6 - jr Functione07ce + jr .CheckWin72 -Functione078c: ; e078c +.OddTwo: ; e078c ld e, $7 - jr Functione07ce + jr .CheckWin72 -Functione0790: ; e0790 +.PikaThree: ; e0790 ld e, $8 - jr Functione07ce + jr .CheckWin72 -Functione0794: ; e0794 +.JigglyThree: ; e0794 ld e, $9 - jr Functione07ce + jr .CheckWin72 -Functione0798: ; e0798 +.PoliThree: ; e0798 ld e, $a - jr Functione07ce + jr .CheckWin72 -Functione079c: ; e079c +.OddThree: ; e079c ld e, $b - jr Functione07ce + jr .CheckWin72 -Functione07a0: ; e07a0 +.PikaFour: ; e07a0 ld e, $c - jr Functione07ce + jr .CheckWin72 -Functione07a4: ; e07a4 +.JigglyFour: ; e07a4 ld e, $d - jr Functione07ce + jr .CheckWin72 -Functione07a8: ; e07a8 +.PoliFour: ; e07a8 ld e, $e - jr Functione07ce + jr .CheckWin72 -Functione07ac: ; e07ac +.OddFour: ; e07ac ld e, $f - jr Functione07ce + jr .CheckWin72 -Functione07b0: ; e07b0 +.PikaFive: ; e07b0 ld e, $10 - jr Functione07ce + jr .CheckWin72 -Functione07b4: ; e07b4 +.JigglyFive: ; e07b4 ld e, $11 - jr Functione07ce + jr .CheckWin72 -Functione07b8: ; e07b8 +.PoliFive: ; e07b8 ld e, $12 - jr Functione07ce + jr .CheckWin72 -Functione07bc: ; e07bc +.OddFive: ; e07bc ld e, $13 - jr Functione07ce + jr .CheckWin72 -Functione07c0: ; e07c0 +.PikaSix: ; e07c0 ld e, $14 - jr Functione07ce + jr .CheckWin72 -Functione07c4: ; e07c4 +.JigglySix: ; e07c4 ld e, $15 - jr Functione07ce + jr .CheckWin72 -Functione07c8: ; e07c8 +.PoliSix: ; e07c8 ld e, $16 - jr Functione07ce + jr .CheckWin72 -Functione07cc: ; e07cc +.OddSix: ; e07cc ld e, $17 -Functione07ce: ; e07ce - ld a, [CurEnemyMoveNum] +.CheckWin72: ; e07ce + ld a, [wCardFlipFaceUpCard] cp e - jr nz, Functione07db - ld c, $48 + jr nz, .Lose + ld c, 72 ld de, SFX_2ND_PLACE - jr Functione07eb + jr .Payout -Functione07db: ; e07db +.Lose: ; e07db ld de, SFX_WRONG call PlaySFX - ld hl, UnknownText_0xe0816 - call Functione0489 + ld hl, .Text_Darn + call CardFlip_UpdateCoinBalanceDisplay call WaitSFX ret -Functione07eb: ; e07eb +.Payout: ; e07eb push bc push de - ld hl, UnknownText_0xe0811 - call Functione0489 + ld hl, .Text_Yeah + call CardFlip_UpdateCoinBalanceDisplay pop de call PlaySFX call WaitSFX pop bc -.asm_e07fb +.loop push bc - call Functione0833 - jr c, .asm_e0804 - call Functione081b + call .IsCoinCaseFull + jr c, .full + call .AddCoinPlaySFX -.asm_e0804 - call Functione049c +.full + call CardFlip_PrintCoinBalance ld c, 2 call DelayFrames pop bc dec c - jr nz, .asm_e07fb + jr nz, .loop ret ; e0811 -UnknownText_0xe0811: ; 0xe0811 +.Text_Yeah: ; 0xe0811 ; Yeah! text_jump UnknownText_0x1c5813 db "@" ; 0xe0816 -UnknownText_0xe0816: ; 0xe0816 +.Text_Darn: ; 0xe0816 ; Darn… text_jump UnknownText_0x1c581a db "@" ; 0xe081b -Functione081b: ; e081b +.AddCoinPlaySFX: ; e081b ld a, [Coins] ld h, a ld a, [Coins + 1] @@ -1166,124 +1198,129 @@ Functione081b: ; e081b ret ; e0833 -Functione0833: ; e0833 +.IsCoinCaseFull: ; e0833 ld a, [Coins] cp 9999 / $100 - jr c, .asm_e0847 - jr z, .asm_e083e - jr .asm_e0845 + jr c, .less + jr z, .check_low + jr .more -.asm_e083e +.check_low ld a, [Coins + 1] cp 9999 % $100 - jr c, .asm_e0847 + jr c, .less -.asm_e0845 +.more scf ret -.asm_e0847 +.less and a ret ; e0849 -Functione0849: ; e0849 - call Functione03ac - ld hl, Unknown_e0853 - call Functione0509 +PlaceOAMCardBorder: ; e0849 + call GetCoordsOfChosenCard + ld hl, .SpriteData + call CardFlip_CopyOAM ret ; e0853 -Unknown_e0853: ; e0853 +.SpriteData: ; e0853 db 18 - db $00, $00, $04, $00 - db $00, $08, $06, $00 - db $00, $10, $06, $00 - db $00, $18, $06, $00 - db $00, $20, $04, $20 - db $08, $00, $05, $00 - db $08, $20, $05, $20 - db $10, $00, $05, $00 - db $10, $20, $05, $20 - db $18, $00, $05, $00 - db $18, $20, $05, $20 - db $20, $00, $05, $00 - db $20, $20, $05, $20 - db $28, $00, $04, $40 - db $28, $08, $06, $40 - db $28, $10, $06, $40 - db $28, $18, $06, $40 - db $28, $20, $04, $60 + dsprite 0, 0, 0, 0, $04, $00 + dsprite 0, 0, 1, 0, $06, $00 + dsprite 0, 0, 2, 0, $06, $00 + dsprite 0, 0, 3, 0, $06, $00 + dsprite 0, 0, 4, 0, $04, $20 + + dsprite 1, 0, 0, 0, $05, $00 + dsprite 1, 0, 4, 0, $05, $20 + + dsprite 2, 0, 0, 0, $05, $00 + dsprite 2, 0, 4, 0, $05, $20 + + dsprite 3, 0, 0, 0, $05, $00 + dsprite 3, 0, 4, 0, $05, $20 + + dsprite 4, 0, 0, 0, $05, $00 + dsprite 4, 0, 4, 0, $05, $20 + + dsprite 5, 0, 0, 0, $04, $40 + dsprite 5, 0, 1, 0, $06, $40 + dsprite 5, 0, 2, 0, $06, $40 + dsprite 5, 0, 3, 0, $06, $40 + dsprite 5, 0, 4, 0, $04, $60 ; e089c -Functione089c: ; e089c +ChooseCard_HandleJoypad: ; e089c ld hl, hJoyLast ld a, [hl] and D_LEFT - jp nz, Functione08b8 + jp nz, .d_left ld a, [hl] and D_RIGHT - jp nz, Functione08ef + jp nz, .d_right ld a, [hl] and D_UP - jp nz, Functione090a + jp nz, .d_up ld a, [hl] and D_DOWN - jp nz, Functione093d + jp nz, .d_down ret ; e08b8 -Functione08b8: ; e08b8 - ld hl, wcf65 - ld a, [wcf64] +.d_left: ; e08b8 + ld hl, wCardFlipCursorX + ld a, [wCardFlipCursorY] and a - jr z, .asm_e08d5 + jr z, .mon_pair_left cp $1 - jr z, .asm_e08cc + jr z, .mon_group_left ld a, [hl] and a ret z dec [hl] - jp Functione0959 + jp .play_sound -.asm_e08cc +.mon_group_left ld a, [hl] cp $3 - jr c, .asm_e08e2 + jr c, .left_to_number_gp dec [hl] - jp Functione0959 + jp .play_sound -.asm_e08d5 +.mon_pair_left ld a, [hl] and $e ld [hl], a cp $3 - jr c, .asm_e08e2 + jr c, .left_to_number_gp rept 2 dec [hl] endr - jp Functione0959 + jp .play_sound -.asm_e08e2 +.left_to_number_gp ld a, $2 - ld [wcf64], a + ld [wCardFlipCursorY], a ld a, $1 - ld [wcf65], a - jp Functione0959 + ld [wCardFlipCursorX], a + jp .play_sound ; e08ef -Functione08ef: ; e08ef - ld hl, wcf65 - ld a, [wcf64] +.d_right: ; e08ef + ld hl, wCardFlipCursorX + ld a, [wCardFlipCursorY] and a - jr z, .asm_e08ff + jr z, .mon_pair_right ld a, [hl] cp $5 ret nc inc [hl] - jr Functione0959 + jr .play_sound -.asm_e08ff +.mon_pair_right ld a, [hl] and $e ld [hl], a @@ -1292,59 +1329,59 @@ Functione08ef: ; e08ef rept 2 inc [hl] endr - jr Functione0959 + jr .play_sound -Functione090a: ; e090a - ld hl, wcf64 - ld a, [wcf65] +.d_up: ; e090a + ld hl, wCardFlipCursorY + ld a, [wCardFlipCursorX] and a - jr z, .asm_e0925 + jr z, .num_pair_up cp $1 - jr z, .asm_e091d + jr z, .num_gp_up ld a, [hl] and a ret z dec [hl] - jr Functione0959 + jr .play_sound -.asm_e091d +.num_gp_up ld a, [hl] cp $3 - jr c, .asm_e0931 + jr c, .up_to_mon_group dec [hl] - jr Functione0959 + jr .play_sound -.asm_e0925 +.num_pair_up ld a, [hl] and $e ld [hl], a cp $3 - jr c, .asm_e0931 + jr c, .up_to_mon_group rept 2 dec [hl] endr - jr Functione0959 + jr .play_sound -.asm_e0931 +.up_to_mon_group ld a, $1 - ld [wcf64], a + ld [wCardFlipCursorY], a ld a, $2 - ld [wcf65], a - jr Functione0959 + ld [wCardFlipCursorX], a + jr .play_sound -Functione093d: ; e093d - ld hl, wcf64 - ld a, [wcf65] +.d_down: ; e093d + ld hl, wCardFlipCursorY + ld a, [wCardFlipCursorX] and a - jr z, .asm_e0950 - ld hl, wcf64 + jr z, .num_pair_down + ld hl, wCardFlipCursorY ld a, [hl] cp $7 ret nc inc [hl] - jr Functione0959 + jr .play_sound -.asm_e0950 +.num_pair_down ld a, [hl] and $e ld [hl], a @@ -1354,27 +1391,27 @@ rept 2 inc [hl] endr -Functione0959: ; e0959 +.play_sound: ; e0959 ld de, SFX_POKEBALLS_PLACED_ON_TABLE call PlaySFX ret ; e0960 -Functione0960: ; e0960 +CardFlip_UpdateCursorOAM: ; e0960 call ClearSprites ld a, [hCGB] and a - jr nz, .asm_e096d + jr nz, .skip ld a, [hVBlankCounter] and $4 ret nz -.asm_e096d - call Functione0398 +.skip + call CollapseCursorPosition rept 2 add hl, hl endr - ld de, Unknown_e0981 + ld de, .OAMData add hl, de ld a, [hli] ld c, a @@ -1383,253 +1420,271 @@ endr ld a, [hli] ld h, [hl] ld l, a - call Functione0509 + call CardFlip_CopyOAM ret ; e0981 -Unknown_e0981: ; e0981 - dbbw $58, $10, Unknown_e0c26 - dbbw $60, $10, Unknown_e0c26 - dbbw $68, $10, Unknown_e0b8d - dbbw $68, $10, Unknown_e0b8d - dbbw $88, $10, Unknown_e0b8d - dbbw $88, $10, Unknown_e0b8d - - dbbw $58, $18, Unknown_e0c26 - dbbw $60, $18, Unknown_e0c26 - dbbw $68, $18, Unknown_e0a5a - dbbw $78, $18, Unknown_e0a5a - dbbw $88, $18, Unknown_e0a5a - dbbw $98, $18, Unknown_e0a5a - - dbbw $58, $28, Unknown_e0b14 - dbbw $60, $28, Unknown_e0ac3 - dbbw $68, $28, Unknown_e0a41 - dbbw $78, $28, Unknown_e0a41 - dbbw $88, $28, Unknown_e0a41 - dbbw $98, $28, Unknown_e0a41 - dbbw $58, $28, Unknown_e0b14 - - dbbw $60, $34, Unknown_e0ac3 - dbbw $68, $34, Unknown_e0a41 - dbbw $78, $34, Unknown_e0a41 - dbbw $88, $34, Unknown_e0a41 - dbbw $98, $34, Unknown_e0a41 - - dbbw $58, $40, Unknown_e0b14 - dbbw $60, $40, Unknown_e0ac3 - dbbw $68, $40, Unknown_e0a41 - dbbw $78, $40, Unknown_e0a41 - dbbw $88, $40, Unknown_e0a41 - dbbw $98, $40, Unknown_e0a41 - dbbw $58, $40, Unknown_e0b14 - - dbbw $60, $4c, Unknown_e0ac3 - dbbw $68, $4c, Unknown_e0a41 - dbbw $78, $4c, Unknown_e0a41 - dbbw $88, $4c, Unknown_e0a41 - dbbw $98, $4c, Unknown_e0a41 - - dbbw $58, $58, Unknown_e0b14 - dbbw $60, $58, Unknown_e0ac3 - dbbw $68, $58, Unknown_e0a41 - dbbw $78, $58, Unknown_e0a41 - dbbw $88, $58, Unknown_e0a41 - dbbw $98, $58, Unknown_e0a41 - dbbw $58, $58, Unknown_e0b14 - - dbbw $60, $64, Unknown_e0ac3 - dbbw $68, $64, Unknown_e0a41 - dbbw $78, $64, Unknown_e0a41 - dbbw $88, $64, Unknown_e0a41 - dbbw $98, $64, Unknown_e0a41 +.OAMData: ; e0981 +cardflip_cursor: MACRO +if _NARG >= 5 + dbpixel \1, \2, \3, \4 + dw \5 +else + dbpixel \1, \2 + dw \3 +endc +endm + + + cardflip_cursor 11, 2, .Impossible + cardflip_cursor 12, 2, .Impossible + cardflip_cursor 13, 2, .PokeGroupPair + cardflip_cursor 13, 2, .PokeGroupPair + cardflip_cursor 17, 2, .PokeGroupPair + cardflip_cursor 17, 2, .PokeGroupPair + + cardflip_cursor 11, 3, .Impossible + cardflip_cursor 12, 3, .Impossible + cardflip_cursor 13, 3, .PokeGroup + cardflip_cursor 15, 3, .PokeGroup + cardflip_cursor 17, 3, .PokeGroup + cardflip_cursor 19, 3, .PokeGroup + + cardflip_cursor 11, 5, .NumGroupPair + cardflip_cursor 12, 5, .NumGroup + cardflip_cursor 13, 5, .SingleTile + cardflip_cursor 15, 5, .SingleTile + cardflip_cursor 17, 5, .SingleTile + cardflip_cursor 19, 5, .SingleTile + + cardflip_cursor 11, 5, .NumGroupPair + cardflip_cursor 12, 6, 0, 4, .NumGroup + cardflip_cursor 13, 6, 0, 4, .SingleTile + cardflip_cursor 15, 6, 0, 4, .SingleTile + cardflip_cursor 17, 6, 0, 4, .SingleTile + cardflip_cursor 19, 6, 0, 4, .SingleTile + + cardflip_cursor 11, 8, .NumGroupPair + cardflip_cursor 12, 8, .NumGroup + cardflip_cursor 13, 8, .SingleTile + cardflip_cursor 15, 8, .SingleTile + cardflip_cursor 17, 8, .SingleTile + cardflip_cursor 19, 8, .SingleTile + + cardflip_cursor 11, 8, .NumGroupPair + cardflip_cursor 12, 9, 0, 4, .NumGroup + cardflip_cursor 13, 9, 0, 4, .SingleTile + cardflip_cursor 15, 9, 0, 4, .SingleTile + cardflip_cursor 17, 9, 0, 4, .SingleTile + cardflip_cursor 19, 9, 0, 4, .SingleTile + + cardflip_cursor 11, 11, .NumGroupPair + cardflip_cursor 12, 11, .NumGroup + cardflip_cursor 13, 11, .SingleTile + cardflip_cursor 15, 11, .SingleTile + cardflip_cursor 17, 11, .SingleTile + cardflip_cursor 19, 11, .SingleTile + + cardflip_cursor 11, 11, .NumGroupPair + cardflip_cursor 12, 12, 0, 4, .NumGroup + cardflip_cursor 13, 12, 0, 4, .SingleTile + cardflip_cursor 15, 12, 0, 4, .SingleTile + cardflip_cursor 17, 12, 0, 4, .SingleTile + cardflip_cursor 19, 12, 0, 4, .SingleTile ; e0a41 -Unknown_e0a41: ; e0a41 +.SingleTile: ; e0a41 db 6 - db $00, $ff, $00, $80 - db $00, $00, $02, $80 - db $00, $08, $03, $80 - db $05, $ff, $00, $c0 - db $05, $00, $02, $c0 - db $05, $08, $03, $80 - -Unknown_e0a5a: ; e0a5a + dsprite 0, 0, -1, 7, $00, $80 + dsprite 0, 0, 0, 0, $02, $80 + dsprite 0, 0, 1, 0, $03, $80 + dsprite 0, 5, -1, 7, $00, $c0 + dsprite 0, 5, 0, 0, $02, $c0 + dsprite 0, 5, 1, 0, $03, $80 + +.PokeGroup: ; e0a5a db 26 - db $00, $ff, $00, $80 - db $00, $00, $02, $80 - db $00, $08, $00, $a0 - db $08, $ff, $01, $80 - db $08, $08, $01, $a0 - db $10, $ff, $01, $80 - db $10, $08, $03, $80 - db $18, $ff, $01, $80 - db $18, $08, $03, $80 - db $20, $ff, $01, $80 - db $20, $08, $03, $80 - db $28, $ff, $01, $80 - db $28, $08, $03, $80 - db $30, $ff, $01, $80 - db $30, $08, $03, $80 - db $38, $ff, $01, $80 - db $38, $08, $03, $80 - db $40, $ff, $01, $80 - db $40, $08, $03, $80 - db $48, $ff, $01, $80 - db $48, $08, $03, $80 - db $50, $ff, $01, $80 - db $50, $08, $03, $80 - db $51, $ff, $00, $c0 - db $51, $00, $02, $c0 - db $51, $08, $03, $80 - -Unknown_e0ac3: ; e0ac3 + dsprite 0, 0, -1, 7, $00, $80 + dsprite 0, 0, 0, 0, $02, $80 + dsprite 0, 0, 1, 0, $00, $a0 + dsprite 1, 0, -1, 7, $01, $80 + dsprite 1, 0, 1, 0, $01, $a0 + dsprite 2, 0, -1, 7, $01, $80 + dsprite 2, 0, 1, 0, $03, $80 + dsprite 3, 0, -1, 7, $01, $80 + dsprite 3, 0, 1, 0, $03, $80 + dsprite 4, 0, -1, 7, $01, $80 + dsprite 4, 0, 1, 0, $03, $80 + dsprite 5, 0, -1, 7, $01, $80 + dsprite 5, 0, 1, 0, $03, $80 + dsprite 6, 0, -1, 7, $01, $80 + dsprite 6, 0, 1, 0, $03, $80 + dsprite 7, 0, -1, 7, $01, $80 + dsprite 7, 0, 1, 0, $03, $80 + dsprite 8, 0, -1, 7, $01, $80 + dsprite 8, 0, 1, 0, $03, $80 + dsprite 9, 0, -1, 7, $01, $80 + dsprite 9, 0, 1, 0, $03, $80 + dsprite 10, 0, -1, 7, $01, $80 + dsprite 10, 0, 1, 0, $03, $80 + dsprite 10, 1, -1, 7, $00, $c0 + dsprite 10, 1, 0, 0, $02, $c0 + dsprite 10, 1, 1, 0, $03, $80 + +.NumGroup: ; e0ac3 db 20 - db $00, $ff, $00, $80 - db $00, $00, $02, $80 - db $00, $08, $02, $80 - db $00, $10, $03, $80 - db $00, $18, $02, $80 - db $00, $20, $03, $80 - db $00, $28, $02, $80 - db $00, $30, $03, $80 - db $00, $38, $02, $80 - db $00, $40, $03, $80 - db $05, $ff, $00, $c0 - db $05, $00, $02, $c0 - db $05, $08, $02, $c0 - db $05, $10, $03, $80 - db $05, $18, $02, $c0 - db $05, $20, $03, $80 - db $05, $28, $02, $c0 - db $05, $30, $03, $80 - db $05, $38, $02, $c0 - db $05, $40, $03, $80 - -Unknown_e0b14: ; e0b14 + dsprite 0, 0, -1, 7, $00, $80 + dsprite 0, 0, 0, 0, $02, $80 + dsprite 0, 0, 1, 0, $02, $80 + dsprite 0, 0, 2, 0, $03, $80 + dsprite 0, 0, 3, 0, $02, $80 + dsprite 0, 0, 4, 0, $03, $80 + dsprite 0, 0, 5, 0, $02, $80 + dsprite 0, 0, 6, 0, $03, $80 + dsprite 0, 0, 7, 0, $02, $80 + dsprite 0, 0, 8, 0, $03, $80 + dsprite 0, 5, -1, 7, $00, $c0 + dsprite 0, 5, 0, 0, $02, $c0 + dsprite 0, 5, 1, 0, $02, $c0 + dsprite 0, 5, 2, 0, $03, $80 + dsprite 0, 5, 3, 0, $02, $c0 + dsprite 0, 5, 4, 0, $03, $80 + dsprite 0, 5, 5, 0, $02, $c0 + dsprite 0, 5, 6, 0, $03, $80 + dsprite 0, 5, 7, 0, $02, $c0 + dsprite 0, 5, 8, 0, $03, $80 + +.NumGroupPair: ; e0b14 db 30 - db $00, $00, $00, $80 - db $00, $08, $02, $80 - db $00, $10, $02, $80 - db $00, $18, $03, $80 - db $00, $20, $02, $80 - db $00, $28, $03, $80 - db $00, $30, $02, $80 - db $00, $38, $03, $80 - db $00, $40, $02, $80 - db $00, $48, $03, $80 - db $08, $00, $01, $80 - db $08, $18, $03, $80 - db $08, $28, $03, $80 - db $08, $38, $03, $80 - db $08, $48, $03, $80 - db $10, $00, $01, $80 - db $10, $18, $03, $80 - db $10, $28, $03, $80 - db $10, $38, $03, $80 - db $10, $48, $03, $80 - db $11, $00, $00, $c0 - db $11, $08, $02, $c0 - db $11, $10, $02, $c0 - db $11, $18, $03, $80 - db $11, $20, $03, $80 - db $11, $28, $03, $80 - db $11, $30, $03, $80 - db $11, $38, $03, $80 - db $11, $40, $03, $80 - db $11, $48, $03, $80 - -Unknown_e0b8d: ; e0b8d + dsprite 0, 0, 0, 0, $00, $80 + dsprite 0, 0, 1, 0, $02, $80 + dsprite 0, 0, 2, 0, $02, $80 + dsprite 0, 0, 3, 0, $03, $80 + dsprite 0, 0, 4, 0, $02, $80 + dsprite 0, 0, 5, 0, $03, $80 + dsprite 0, 0, 6, 0, $02, $80 + dsprite 0, 0, 7, 0, $03, $80 + dsprite 0, 0, 8, 0, $02, $80 + dsprite 0, 0, 9, 0, $03, $80 + dsprite 1, 0, 0, 0, $01, $80 + dsprite 1, 0, 3, 0, $03, $80 + dsprite 1, 0, 5, 0, $03, $80 + dsprite 1, 0, 7, 0, $03, $80 + dsprite 1, 0, 9, 0, $03, $80 + dsprite 2, 0, 0, 0, $01, $80 + dsprite 2, 0, 3, 0, $03, $80 + dsprite 2, 0, 5, 0, $03, $80 + dsprite 2, 0, 7, 0, $03, $80 + dsprite 2, 0, 9, 0, $03, $80 + dsprite 2, 1, 0, 0, $00, $c0 + dsprite 2, 1, 1, 0, $02, $c0 + dsprite 2, 1, 2, 0, $02, $c0 + dsprite 2, 1, 3, 0, $03, $80 + dsprite 2, 1, 4, 0, $03, $80 + dsprite 2, 1, 5, 0, $03, $80 + dsprite 2, 1, 6, 0, $03, $80 + dsprite 2, 1, 7, 0, $03, $80 + dsprite 2, 1, 8, 0, $03, $80 + dsprite 2, 1, 9, 0, $03, $80 + +.PokeGroupPair: ; e0b8d db 38 - db $00, $ff, $00, $80 - db $00, $18, $00, $a0 - db $08, $ff, $01, $80 - db $08, $18, $01, $a0 - db $10, $ff, $01, $80 - db $10, $18, $01, $a0 - db $18, $ff, $01, $80 - db $18, $08, $03, $80 - db $18, $18, $03, $80 - db $20, $ff, $01, $80 - db $20, $08, $03, $80 - db $20, $18, $03, $80 - db $28, $ff, $01, $80 - db $28, $08, $03, $80 - db $28, $18, $03, $80 - db $30, $ff, $01, $80 - db $30, $08, $03, $80 - db $30, $18, $03, $80 - db $38, $ff, $01, $80 - db $38, $08, $03, $80 - db $38, $18, $03, $80 - db $40, $ff, $01, $80 - db $40, $08, $03, $80 - db $40, $18, $03, $80 - db $48, $ff, $01, $80 - db $48, $08, $03, $80 - db $48, $18, $03, $80 - db $50, $ff, $01, $80 - db $50, $08, $03, $80 - db $50, $18, $03, $80 - db $58, $ff, $01, $80 - db $58, $08, $03, $80 - db $58, $18, $03, $80 - db $59, $ff, $00, $c0 - db $59, $00, $02, $c0 - db $59, $08, $03, $c0 - db $59, $10, $02, $c0 - db $59, $18, $03, $e0 - -Unknown_e0c26: ; e0c26 + dsprite 0, 0, -1, 7, $00, $80 + dsprite 0, 0, 3, 0, $00, $a0 + dsprite 1, 0, -1, 7, $01, $80 + dsprite 1, 0, 3, 0, $01, $a0 + dsprite 2, 0, -1, 7, $01, $80 + dsprite 2, 0, 3, 0, $01, $a0 + dsprite 3, 0, -1, 7, $01, $80 + dsprite 3, 0, 1, 0, $03, $80 + dsprite 3, 0, 3, 0, $03, $80 + dsprite 4, 0, -1, 7, $01, $80 + dsprite 4, 0, 1, 0, $03, $80 + dsprite 4, 0, 3, 0, $03, $80 + dsprite 5, 0, -1, 7, $01, $80 + dsprite 5, 0, 1, 0, $03, $80 + dsprite 5, 0, 3, 0, $03, $80 + dsprite 6, 0, -1, 7, $01, $80 + dsprite 6, 0, 1, 0, $03, $80 + dsprite 6, 0, 3, 0, $03, $80 + dsprite 7, 0, -1, 7, $01, $80 + dsprite 7, 0, 1, 0, $03, $80 + dsprite 7, 0, 3, 0, $03, $80 + dsprite 8, 0, -1, 7, $01, $80 + dsprite 8, 0, 1, 0, $03, $80 + dsprite 8, 0, 3, 0, $03, $80 + dsprite 9, 0, -1, 7, $01, $80 + dsprite 9, 0, 1, 0, $03, $80 + dsprite 9, 0, 3, 0, $03, $80 + dsprite 10, 0, -1, 7, $01, $80 + dsprite 10, 0, 1, 0, $03, $80 + dsprite 10, 0, 3, 0, $03, $80 + dsprite 11, 0, -1, 7, $01, $80 + dsprite 11, 0, 1, 0, $03, $80 + dsprite 11, 0, 3, 0, $03, $80 + dsprite 11, 1, -1, 7, $00, $c0 + dsprite 11, 1, 0, 0, $02, $c0 + dsprite 11, 1, 1, 0, $03, $c0 + dsprite 11, 1, 2, 0, $02, $c0 + dsprite 11, 1, 3, 0, $03, $e0 + +.Impossible: ; e0c26 db 4 - db $00, $00, $00, $80 - db $00, $08, $00, $a0 - db $08, $00, $00, $c0 - db $08, $08, $00, $e0 + dsprite 0, 0, 0, 0, $00, $80 + dsprite 0, 0, 1, 0, $00, $a0 + dsprite 1, 0, 0, 0, $00, $c0 + dsprite 1, 0, 1, 0, $00, $e0 ; e0c37 -Functione0c37: ; e0c37 (38:4c37) +CardFlip_InitAttrPals: ; e0c37 (38:4c37) ld a, [hCGB] and a ret z + hlcoord 0, 0, AttrMap ld bc, SCREEN_HEIGHT * SCREEN_WIDTH xor a call ByteFill + hlcoord 12, 1, AttrMap lb bc, 2, 2 ld a, $1 - call Functione04e7 + call CardFlip_FillBox + hlcoord 14, 1, AttrMap lb bc, 2, 2 ld a, $2 - call Functione04e7 + call CardFlip_FillBox + hlcoord 16, 1, AttrMap lb bc, 2, 2 ld a, $3 - call Functione04e7 + call CardFlip_FillBox + hlcoord 18, 1, AttrMap lb bc, 2, 2 ld a, $4 - call Functione04e7 + call CardFlip_FillBox + hlcoord 9, 0, AttrMap lb bc, 12, 1 ld a, $1 - call Functione04e7 + call CardFlip_FillBox + ld a, [rSVBK] push af ld a, $5 ld [rSVBK], a - ld hl, Palette_e0c93 + ld hl, .palettes ld de, UnknBGPals - ld bc, $48 + ld bc, 9 palettes call CopyBytes pop af ld [rSVBK], a ret ; e0c93 (38:4c93) -Palette_e0c93: ; e0c93 +.palettes: ; e0c93 RGB 31, 31, 31 RGB 17, 07, 31 RGB 06, 19, 08 @@ -1676,22 +1731,22 @@ Palette_e0c93: ; e0c93 RGB 31, 00, 00 ; e0cdb -LZ_e0cdb: ; e0cdb +CardFlipLZ03: ; e0cdb INCBIN "gfx/unknown/0e0cdb.2bpp.lz" -GFX_e0cf6: ; e0cf6 +CardFlipOffButtonGFX: ; e0cf6 INCBIN "gfx/unknown/0e0cf6.2bpp" -GFX_e0d06: ; e0d06 +CardFlipOnButtonGFX: ; e0d06 INCBIN "gfx/unknown/0e0d06.2bpp" -LZ_e0d16: ; e0d16 +CardFlipLZ01: ; e0d16 INCBIN "gfx/unknown/0e0d16.2bpp.lz" -LZ_e0ea8: ; e0ea8 +CardFlipLZ02: ; e0ea8 INCBIN "gfx/unknown/0e0ea8.2bpp.lz" -Unknown_e110c: ; e110c +CardFlipTilemap: ; e110c db $ef, $15, $27, $2a, $2a, $06, $27, $2a, $2a, $06, $27 db $ef, $07, $27, $3e, $3f, $42, $43, $46, $47, $4a, $4b db $ef, $17, $26, $40, $41, $44, $45, $48, $49, $4c, $4d @@ -1705,856 +1760,3 @@ Unknown_e110c: ; e110c db $ef, $05, $14, $10, $13, $10, $13, $10, $13, $10, $13 db $ef, $16, $24, $20, $23, $20, $23, $20, $23, $20, $23 ; e1190 - -Functione1190: ; e1190 - ld a, [hInMenu] - push af - ld a, $1 - ld [hInMenu], a - call ClearBGPalettes - call ClearTileMap - call ClearSprites - xor a - ld [hBGMapMode], a - call DisableLCD - ld hl, wc608 - ld bc, $1e0 - xor a - call ByteFill - ld hl, GFX_e17c5 - ld de, VTiles1 tile $60 - ld bc, $40 - call CopyBytes - ld hl, LZ_e1805 - ld de, VTiles1 tile $6d - call Decompress - call Functione17a3 - hlcoord 0, 0 - ld bc, SCREEN_WIDTH * SCREEN_HEIGHT - ld a, $ee - call ByteFill - hlcoord 4, 3 - lb bc, 12, 12 - ld a, $ef - call Functione13ee - call Functione124e - call Functione13fe - call Functione127d - xor a - ld [hSCY], a - ld [hSCX], a - ld [rWY], a - ld [wJumptableIndex], a - ld [wcf64], a - ld [wcf65], a - ld [wcf66], a - ld a, $93 - ld [rLCDC], a - call WaitBGMap - ld b, SCGB_18 - call GetSGBLayout - ld a, $e4 - call DmgToCgbBGPals - ld a, $24 - call Functioncf8 - xor a - ld [wd0ec], a - call DelayFrame -.asm_e1217 - call JoyTextDelay - ld a, [wJumptableIndex] - bit 7, a - jr nz, .asm_e123d - call Functione12ca - ld a, [wcf64] - and a - jr nz, .asm_e1230 - ld a, [hVBlankCounter] - and $10 - jr z, .asm_e1235 - -.asm_e1230 - call Functione14d9 - jr .asm_e1238 - -.asm_e1235 - call ClearSprites - -.asm_e1238 - call DelayFrame - jr .asm_e1217 - -.asm_e123d - pop af - ld [hInMenu], a - call ClearBGPalettes - call ClearTileMap - call ClearSprites - ld a, $e3 - ld [rLCDC], a - ret -; e124e - -Functione124e: ; e124e - ld c, $1 - ld b, $10 -.asm_e1252 - call Random - and $f - ld hl, Unknown_e126d - ld e, a - ld d, $0 - add hl, de - ld e, [hl] - ld hl, wc6d0 - add hl, de - ld a, [hl] - and a - jr nz, .asm_e1252 - ld [hl], c - inc c - dec b - jr nz, .asm_e1252 - ret -; e126d - -Unknown_e126d: ; e126d - db $00, $01, $02, $03 - db $04, $05, $06, $0b - db $0c, $11, $12, $17 - db $18, $1d, $1e, $23 -; e127d - -Functione127d: ; e127d - call Functione128d - hlcoord 5, 16 - ld a, $f6 - ld c, $a -.asm_e1287 - ld [hli], a - inc a - dec c - jr nz, .asm_e1287 - ret -; e128d - -Functione128d: ; e128d - hlcoord 4, 15 - ld a, $f0 - ld [hli], a - ld bc, $a - ld a, $f1 - call ByteFill - hlcoord 15, 15 - ld a, $f2 - ld [hli], a - hlcoord 4, 16 - ld a, $f3 - ld [hli], a - ld bc, $a - ld a, $ef - call ByteFill - hlcoord 15, 16 - ld a, $f3 - ld [hli], a - hlcoord 4, 17 - ld a, $f4 - ld [hli], a - ld bc, $a - ld a, $f1 - call ByteFill - hlcoord 15, 17 - ld a, $f5 - ld [hl], a - ret -; e12ca - -Functione12ca: ; e12ca - ld a, [wJumptableIndex] - ld e, a - ld d, 0 - ld hl, Jumptable_e12d9 -rept 2 - add hl, de -endr - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] -; e12d9 - -Jumptable_e12d9: ; e12d9 - dw Functione12db -; e12db - -Functione12db: ; e12db - ld a, [hJoyPressed] - and START - jp nz, Functione13de - ld a, [hJoyPressed] - and A_BUTTON - jp nz, Functione1376 - ld hl, hJoyLast - ld a, [hl] - and D_UP - jr nz, .asm_e1301 - ld a, [hl] - and D_DOWN - jr nz, .asm_e130d - ld a, [hl] - and D_LEFT - jr nz, .asm_e1325 - ld a, [hl] - and D_RIGHT - jr nz, .asm_e1345 - ret - -.asm_e1301 - ld hl, wcf65 - ld a, [hl] - cp $6 - ret c - sub $6 - ld [hl], a - jr .asm_e1364 - -.asm_e130d - ld hl, wcf65 - ld a, [hl] - cp $19 - ret z - cp $1a - ret z - cp $1b - ret z - cp $1c - ret z - cp $1e - ret nc - add $6 - ld [hl], a - jr .asm_e1364 - -.asm_e1325 - ld hl, wcf65 - ld a, [hl] - and a - ret z - cp $6 - ret z - cp $c - ret z - cp $12 - ret z - cp $18 - ret z - cp $1e - ret z - cp $23 - jr z, .asm_e1341 - dec [hl] - jr .asm_e1364 - -.asm_e1341 - ld [hl], $1e - jr .asm_e1364 - -.asm_e1345 - ld hl, wcf65 - ld a, [hl] - cp $5 - ret z - cp $b - ret z - cp $11 - ret z - cp $17 - ret z - cp $1d - ret z - cp $23 - ret z - cp $1e - jr z, .asm_e1362 - inc [hl] - jr .asm_e1364 - -.asm_e1362 - ld [hl], $23 - -.asm_e1364 - ld a, [wcf64] - and a - jr nz, .asm_e136f - ld de, SFX_POUND - jr .asm_e1372 - -.asm_e136f - ld de, SFX_MOVE_PUZZLE_PIECE - -.asm_e1372 - call PlaySFX - ret -; e1376 - -Functione1376: ; e1376 - ld a, [wcf64] - and a - jr nz, .asm_e139f - call Functione1475 - and a - jr z, Functione13e4 - ld de, SFX_MEGA_KICK - call PlaySFX - ld [hl], $0 - ld [wcf66], a - call Functione14d9 - call Functione1441 - call WaitBGMap - call WaitSFX - ld a, $1 - ld [wcf64], a - ret - -.asm_e139f - call Functione1475 - and a - jr nz, Functione13e4 - ld de, SFX_PLACE_PUZZLE_PIECE_DOWN - call PlaySFX - ld a, [wcf66] - ld [hl], a - call Functione141f - call WaitBGMap - xor a - ld [wcf66], a - call Functione14d9 - xor a - ld [wcf64], a - call WaitSFX - call Functione14a0 - ret nc - call Functione128d - call ClearSprites - ld de, SFX_1ST_PLACE - call PlaySFX - call WaitSFX - call SimpleWaitPressAorB - ld a, $1 - ld [wd0ec], a - -Functione13de: ; e13de - ld hl, wJumptableIndex - set 7, [hl] - ret - -Functione13e4: ; e13e4 - ld de, SFX_WRONG - call PlaySFX - call WaitSFX - ret -; e13ee - -Functione13ee: ; e13ee - ld de, SCREEN_WIDTH -.asm_e13f1 - push bc - push hl -.asm_e13f3 - ld [hli], a - dec c - jr nz, .asm_e13f3 - pop hl - add hl, de - pop bc - dec b - jr nz, .asm_e13f1 - ret -; e13fe - -Functione13fe: ; e13fe - xor a - ld [wcf65], a - ld c, $24 -.asm_e1404 - push bc - call Functione1475 - ld [wcf66], a - and a - jr z, .asm_e1413 - call Functione141f - jr .asm_e1416 - -.asm_e1413 - call Functione1441 - -.asm_e1416 - ld hl, wcf65 - inc [hl] - pop bc - dec c - jr nz, .asm_e1404 - ret -; e141f - -Functione141f: ; e141f - ld a, $2 - call Functione1463 - ld a, [hli] - ld h, [hl] - ld l, a - push hl - call Functione1481 - pop hl - ld de, SCREEN_WIDTH - ld b, $3 -.asm_e1431 - ld c, $3 - push hl -.asm_e1434 - ld [hli], a - inc a - dec c - jr nz, .asm_e1434 - add $9 - pop hl - add hl, de - dec b - jr nz, .asm_e1431 - ret -; e1441 - -Functione1441: ; e1441 - ld a, $2 - call Functione1463 - ld a, [hli] - ld h, [hl] - ld l, a - push hl - ld a, $4 - call Functione1463 - ld a, [hl] - pop hl - ld de, SCREEN_WIDTH - ld b, $3 -.asm_e1456 - ld c, $3 - push hl -.asm_e1459 - ld [hli], a - dec c - jr nz, .asm_e1459 - pop hl - add hl, de - dec b - jr nz, .asm_e1456 - ret -; e1463 - -Functione1463: ; e1463 - ld e, a - ld d, 0 - ld hl, Unknown_e1559 - add hl, de - ld a, [wcf65] - ld e, a -rept 4 - add hl, de -endr -rept 2 - add hl, de -endr - ret -; e1475 - -Functione1475: ; e1475 - ld hl, wc6d0 - ld a, [wcf65] - ld e, a - ld d, $0 - add hl, de - ld a, [hl] - ret -; e1481 - -Functione1481: ; e1481 - ld a, [wcf66] - ld hl, Unknown_e148f - add l - ld l, a - ld a, $0 - adc h - ld h, a - ld a, [hl] - ret -; e148f - -Unknown_e148f: ; e148f - db $e0 - db $00, $03, $06, $09 - db $24, $27, $2a, $2d - db $48, $4b, $4e, $51 - db $6c, $6f, $72, $75 -; e14a0 - -Functione14a0: ; e14a0 - ld hl, Unknown_e14b5 - ld de, wc6d0 - ld c, $24 -.asm_e14a8 - ld a, [de] - cp [hl] - jr nz, .asm_e14b3 - inc de - inc hl - dec c - jr nz, .asm_e14a8 - scf - ret - -.asm_e14b3 - and a - ret -; e14b5 - -Unknown_e14b5: ; e14b5 - db $00, $00, $00, $00, $00, $00 - db $00, $01, $02, $03, $04, $00 - db $00, $05, $06, $07, $08, $00 - db $00, $09, $0a, $0b, $0c, $00 - db $00, $0d, $0e, $0f, $10, $00 - db $00, $00, $00, $00, $00, $00 -; e14d9 - -Functione14d9: ; e14d9 - call Functione1481 - ld [wd002], a - xor a - call Functione1463 - ld a, [hli] - ld b, [hl] - ld c, a - ld a, [wd002] - cp $e0 - jr z, .asm_e14f2 - ld hl, Unknown_e150f - jr .asm_e14f5 - -.asm_e14f2 - ld hl, Unknown_e1534 - -.asm_e14f5 - ld de, Sprites -.asm_e14f8 - ld a, [hli] - cp $ff - ret z - add b - ld [de], a - inc de - ld a, [hli] - add c - ld [de], a - inc de - ld a, [wd002] - add [hl] - ld [de], a - inc hl - inc de - ld a, [hli] - ld [de], a - inc de - jr .asm_e14f8 -; e150f - -Unknown_e150f: ; e150f - db $f4, $f4, $00, $00 - db $f4, $fc, $01, $00 - db $f4, $04, $02, $00 - db $fc, $f4, $0c, $00 - db $fc, $fc, $0d, $00 - db $fc, $04, $0e, $00 - db $04, $f4, $18, $00 - db $04, $fc, $19, $00 - db $04, $04, $1a, $00 - db $ff - -Unknown_e1534: ; e1534 - db $f4, $f4, $00, $00 - db $f4, $fc, $01, $00 - db $f4, $04, $00, $20 - db $fc, $f4, $02, $00 - db $fc, $fc, $03, $00 - db $fc, $04, $02, $20 - db $04, $f4, $00, $40 - db $04, $fc, $01, $40 - db $04, $04, $00, $60 - db $ff - -Unknown_e1559: ; e1559 - -macro_e1559: macro - db \1, \2 - dwcoord \3, \4 - db \5, \6 -endm - - macro_e1559 $1c, $1c, 1, 0, $ee, $00 - macro_e1559 $34, $1c, 4, 0, $ee, $00 - macro_e1559 $4c, $1c, 7, 0, $ee, $00 - macro_e1559 $64, $1c, 10, 0, $ee, $00 - macro_e1559 $7c, $1c, 13, 0, $ee, $00 - macro_e1559 $94, $1c, 16, 0, $ee, $00 - macro_e1559 $1c, $34, 1, 3, $ee, $00 - macro_e1559 $34, $34, 4, 3, $ef, $00 - macro_e1559 $4c, $34, 7, 3, $ef, $00 - macro_e1559 $64, $34, 10, 3, $ef, $00 - macro_e1559 $7c, $34, 13, 3, $ef, $00 - macro_e1559 $94, $34, 16, 3, $ee, $00 - macro_e1559 $1c, $4c, 1, 6, $ee, $00 - macro_e1559 $34, $4c, 4, 6, $ef, $00 - macro_e1559 $4c, $4c, 7, 6, $ef, $00 - macro_e1559 $64, $4c, 10, 6, $ef, $00 - macro_e1559 $7c, $4c, 13, 6, $ef, $00 - macro_e1559 $94, $4c, 16, 6, $ee, $00 - macro_e1559 $1c, $64, 1, 9, $ee, $00 - macro_e1559 $34, $64, 4, 9, $ef, $00 - macro_e1559 $4c, $64, 7, 9, $ef, $00 - macro_e1559 $64, $64, 10, 9, $ef, $00 - macro_e1559 $7c, $64, 13, 9, $ef, $00 - macro_e1559 $94, $64, 16, 9, $ee, $00 - macro_e1559 $1c, $7c, 1, 12, $ee, $00 - macro_e1559 $34, $7c, 4, 12, $ef, $00 - macro_e1559 $4c, $7c, 7, 12, $ef, $00 - macro_e1559 $64, $7c, 10, 12, $ef, $00 - macro_e1559 $7c, $7c, 13, 12, $ef, $00 - macro_e1559 $94, $7c, 16, 12, $ee, $00 - macro_e1559 $1c, $94, 1, 15, $ee, $00 - macro_e1559 $34, $94, 4, 15, $ee, $00 - macro_e1559 $4c, $94, 7, 15, $ee, $00 - macro_e1559 $64, $94, 10, 15, $ee, $00 - macro_e1559 $7c, $94, 13, 15, $ee, $00 - macro_e1559 $94, $94, 16, 15, $ee, $00 - -Functione1631: ; e1631 - ld hl, VTiles2 - ld de, VTiles0 - ld b, $6 -.asm_e1639 - push bc - push hl - push hl - call Functione1654 - pop hl - ld bc, 8 - add hl, bc - call Functione1654 - pop hl - ld bc, $60 - add hl, bc - pop bc - dec b - jr nz, .asm_e1639 - call Functione16c7 - ret -; e1654 - -Functione1654: ; e1654 - ld c, $6 -.asm_e1656 - push bc - push hl - push hl - ld c, $4 -.asm_e165b - push bc - ld a, [hli] - and $f0 - swap a - call Functione16aa - ld c, a - ld a, [hli] - and $f0 - swap a - call Functione16aa - ld b, a - ld a, c - ld [de], a - inc de - ld a, b - ld [de], a - inc de - ld a, c - ld [de], a - inc de - ld a, b - ld [de], a - inc de - pop bc - dec c - jr nz, .asm_e165b - pop hl - ld c, $4 -.asm_e1681 - push bc - ld a, [hli] - and $f - call Functione16aa - ld c, a - ld a, [hli] - and $f - call Functione16aa - ld b, a - ld a, c - ld [de], a - inc de - ld a, b - ld [de], a - inc de - ld a, c - ld [de], a - inc de - ld a, b - ld [de], a - inc de - pop bc - dec c - jr nz, .asm_e1681 - pop hl - ld bc, $10 - add hl, bc - pop bc - dec c - jr nz, .asm_e1656 - ret -; e16aa - -Functione16aa: ; e16aa - push hl - ld hl, Unknown_e16b7 - add l - ld l, a - ld a, 0 - adc h - ld h, a - ld a, [hl] - pop hl - ret -; e16b7 - -Unknown_e16b7: ; e16b7 - db $00, $03, $0c, $0f - db $30, $33, $3c, $3f - db $c0, $c3, $cc, $cf - db $f0, $f3, $fc, $ff -; e16c7 - -Functione16c7: ; e16c7 - ld hl, Unknown_e1703 - ld a, $8 -.asm_e16cc - push af - push hl - ld a, [hli] - ld e, a - ld a, [hli] - ld d, a - ld a, [hli] - ld h, [hl] - ld l, a - call Functione16e2 - pop hl -rept 4 - inc hl -endr - pop af - dec a - jr nz, .asm_e16cc - ret -; e16e2 - -Functione16e2: ; e16e2 - lb bc, 4, 4 -.asm_e16e5 - push bc -.asm_e16e6 - push de - push hl - ld b, $10 -.asm_e16ea - ld a, [de] - or [hl] - ld [hli], a - inc de - dec b - jr nz, .asm_e16ea - pop hl - ld de, $30 - add hl, de - pop de - dec c - jr nz, .asm_e16e6 - ld bc, $180 - add hl, bc - pop bc - dec b - jr nz, .asm_e16e5 - ret -; e1703 - -Unknown_e1703: ; e1703 - dw GFX_e1723 + $00, $8000 - dw GFX_e1723 + $10, $8010 - dw GFX_e1723 + $20, $8020 - dw GFX_e1723 + $30, $80c0 - dw GFX_e1723 + $40, $80e0 - dw GFX_e1723 + $50, $8180 - dw GFX_e1723 + $60, $8190 - dw GFX_e1723 + $70, $81a0 -; e1723 - -GFX_e1723: ; e1723 -INCBIN "gfx/unknown/0e1723.2bpp" - -Functione17a3: ; e17a3 - ld a, [ScriptVar] - and 3 - ld e, a - ld d, 0 - ld hl, Unknown_e17bd -rept 2 - add hl, de -endr - ld a, [hli] - ld h, [hl] - ld l, a - ld de, VTiles2 - call Decompress - call Functione1631 - ret -; e17bd - -Unknown_e17bd: ; e17bd - dw LZ_e1bab - dw LZ_e1c9b - dw LZ_e19fb - dw LZ_e18ab -; e17c5 - -GFX_e17c5: ; e17c5 -INCBIN "gfx/unknown/0e17c5.2bpp" - -LZ_e1805: ; e1805 -INCBIN "gfx/unknown/0e1805.2bpp.lz" - -LZ_e18ab: ; e18ab -INCBIN "gfx/unknown/0e18ab.2bpp.lz" - -LZ_e19fb: ; e19fb -INCBIN "gfx/unknown/0e19fb.2bpp.lz" - -LZ_e1bab: ; e1bab -INCBIN "gfx/unknown/0e1bab.2bpp.lz" - -LZ_e1c9b: ; e1c9b -INCBIN "gfx/unknown/0e1c9b.2bpp.lz" diff --git a/engine/clock_reset.asm b/engine/clock_reset.asm index e51db6249..20f46ce12 100755 --- a/engine/clock_reset.asm +++ b/engine/clock_reset.asm @@ -95,7 +95,7 @@ RestartClock: ; 20021 (8:4021) ld [StringBuffer2 + 2], a xor a ld [StringBuffer2 + 3], a - call Function677 + call InitTime call .PrintTime ld hl, .Text_ClockReset call PrintText diff --git a/engine/color.asm b/engine/color.asm index 7e7520816..7f7cdd7ad 100644 --- a/engine/color.asm +++ b/engine/color.asm @@ -88,20 +88,20 @@ Function8aa4: ; 8aa4 push de push bc ld hl, PalPacket_9ce6 - ld de, wcda9 + ld de, wSGBPals ld bc, PALPACKET_LENGTH call CopyBytes pop bc pop de ld a, c - ld [wcda9 + 3], a + ld [wSGBPals + 3], a ld a, b - ld [wcda9 + 4], a + ld [wSGBPals + 4], a ld a, e - ld [wcda9 + 5], a + ld [wSGBPals + 5], a ld a, d - ld [wcda9 + 6], a - ld hl, wcda9 + ld [wSGBPals + 6], a + ld hl, wSGBPals call Function9809 ld hl, BlkPacket_9a86 call Function9809 @@ -113,13 +113,13 @@ Function8ad1: ; 8ad1 ld hl, PalPacket_9c56 + 1 call CopyFourPalettes call Function971a - call Function9699 + call WipeAttrMap ret ; 8ade -Function8ade: ; 8ade SGB layout $fc - ld hl, wcd9b - ld a, [wcda9] +SGB_ApplyPartyMenuHPPals: ; 8ade SGB layout $fc + ld hl, wHPPals + ld a, [wSGBPals] ld e, a ld d, $0 add hl, de @@ -128,17 +128,16 @@ Function8ade: ; 8ade SGB layout $fc ld a, [de] and a ld e, $5 - jr z, .asm_8af7 + jr z, .okay dec a ld e, $a - jr z, .asm_8af7 + jr z, .okay ld e, $f - -.asm_8af7 +.okay push de - ld hl, wcda9 + 10 - ld bc, $0006 - ld a, [wcda9] + ld hl, wSGBPals + 10 + ld bc, $6 + ld a, [wSGBPals] call AddNTimes pop de ld [hl], e @@ -150,17 +149,17 @@ Function8b07: ; 8b07 ret z ld hl, Palette8b2f ld de, UnknBGPals - ld bc, $0008 + ld bc, 1 palettes ld a, $5 call FarCopyWRAM ld hl, Palette8b37 ld de, MartPointer - ld bc, $0008 + ld bc, 1 palettes ld a, $5 call FarCopyWRAM - call Function96a4 + call ApplyPals ld a, $1 ld [hCGBPalUpdate], a ret @@ -171,6 +170,7 @@ Palette8b2f: ; 8b2f RGB 18, 23, 31 RGB 15, 20, 31 RGB 00, 00, 00 + ; 8b37 Palette8b37: ; 8b37 @@ -178,6 +178,7 @@ Palette8b37: ; 8b37 RGB 31, 31, 12 RGB 08, 16, 28 RGB 00, 00, 00 + ; 8b3f Function8b3f: ; 8b3f @@ -202,7 +203,7 @@ Function8b4d: ; 8b4d .asm_8b5c ld de, UnknOBPals ld a, $3b - call GetAthPalletFromPalettes9df6 + call GetPredefPal jp LoadHLPaletteIntoDE ; 8b67 @@ -218,7 +219,7 @@ Function8b67: ; 8b67 .asm_8b76 ld de, UnknOBPals ld a, $3c - call GetAthPalletFromPalettes9df6 + call GetPredefPal jp LoadHLPaletteIntoDE ; 8b81 @@ -231,39 +232,39 @@ Function8b81: ; 8b81 ld a, c push af ld hl, PalPacket_9ce6 - ld de, wcda9 + ld de, wSGBPals ld bc, PALPACKET_LENGTH call CopyBytes pop af - call Function9775 + call GetMonPalettePointer_ ld a, [hli] - ld [wcda9 + 3], a + ld [wSGBPals + 3], a ld a, [hli] - ld [wcda9 + 4], a + ld [wSGBPals + 4], a ld a, [hli] - ld [wcda9 + 5], a + ld [wSGBPals + 5], a ld a, [hl] - ld [wcda9 + 6], a - ld hl, wcda9 + ld [wSGBPals + 6], a + ld hl, wSGBPals jp Function9809 .asm_8bb2 ld de, UnknOBPals ld a, c - call Function9775 - call Function9643 + call GetMonPalettePointer_ + call LoadPalette_White_Col1_Col2_Black ret ; 8bbd Function8bbd: ; 8bbd ld a, [TrainerClass] - call Function976b + call GetTrainerPalettePointer ld a, e jr asm_8bd7 Function8bc6: ld a, [CurPartySpecies] - call Function97ee + call GetMonPalettePointer ld a, e bit 7, a jr z, .asm_8bd7 @@ -276,7 +277,7 @@ endr asm_8bd7 push hl ld hl, UnknBGPals - ld de, $0008 + ld de, $8 .asm_8bde and a jr z, .asm_8be5 @@ -288,7 +289,7 @@ asm_8bd7 ld e, l ld d, h pop hl - call Function9643 + call LoadPalette_White_Col1_Col2_Black ret ; 8bec @@ -304,7 +305,7 @@ Function8bec: ; 8bec ld c, a ld a, [EnemyReflectCount] hlcoord 0, 0, AttrMap - ld de, $0014 + ld de, $14 .asm_8c04 and a jr z, .asm_8c0b @@ -330,19 +331,19 @@ Function8c1d: ; 8c1d and a jr z, .asm_8c2d ld a, [CurPartySpecies] - call Function9775 + call GetMonPalettePointer_ jr .asm_8c33 .asm_8c2d ld a, [TrainerClass] - call Function976b + call GetTrainerPalettePointer .asm_8c33 ld de, UnknBGPals - call Function9643 - call Function9699 - call Function96b3 - call Function96a4 + call LoadPalette_White_Col1_Col2_Black + call WipeAttrMap + call ApplyAttrMap + call ApplyPals ret ; 8c43 @@ -357,11 +358,11 @@ Function8c43: ; 8c43 ret .asm_8c52 - ld de, BGPals + $10 + 2 + ld de, BGPals + 2 palettes + 2 jr .asm_8c5a .asm_8c57 - ld de, BGPals + $18 + 2 + ld de, BGPals + 3 palettes + 2 .asm_8c5a ld l, c @@ -371,7 +372,7 @@ rept 2 endr ld bc, Palettes_a8be add hl, bc - ld bc, $0004 + ld bc, $4 ld a, $5 call FarCopyWRAM ld a, $1 @@ -382,7 +383,7 @@ endr ld e, c inc e hlcoord 11, 1, AttrMap - ld bc, $0028 + ld bc, $28 ld a, [CurPartyMon] .asm_8c7b and a @@ -398,10 +399,10 @@ endr ret ; 8c8a -Function8c8a: ; 8c8a +LoadStatsScreenPals: ; 8c8a call CheckCGB ret z - ld hl, Unknown_8f6a + ld hl, StatsScreenPals ld b, 0 dec c rept 2 @@ -419,7 +420,7 @@ endr ld [UnknBGPals + 8 * 2 + 1], a pop af ld [rSVBK], a - call Function96a4 + call ApplyPals ld a, $1 ret ; 8cb4 @@ -436,7 +437,7 @@ endr jr nz, .asm_8cf0 push hl ld hl, PalPacket_9ce6 - ld de, wcda9 + ld de, wSGBPals ld bc, PALPACKET_LENGTH call CopyBytes pop hl @@ -444,14 +445,14 @@ rept 2 inc hl endr ld a, [hli] - ld [wcda9 + 3], a + ld [wSGBPals + 3], a ld a, [hli] - ld [wcda9 + 4], a + ld [wSGBPals + 4], a ld a, [hli] - ld [wcda9 + 5], a + ld [wSGBPals + 5], a ld a, [hli] - ld [wcda9 + 6], a - ld hl, wcda9 + ld [wSGBPals + 6], a + ld hl, wSGBPals call Function9809 ld hl, BlkPacket_9a86 call Function9809 @@ -459,12 +460,12 @@ endr .asm_8cf0 ld de, UnknBGPals - ld bc, $0008 + ld bc, 1 palettes ld a, $5 call FarCopyWRAM - call Function96a4 - call Function9699 - call Function96b3 + call ApplyPals + call WipeAttrMap + call ApplyAttrMap ret ; 8d05 @@ -518,6 +519,7 @@ Palettes_8d05: ; 8d05 RGB 31, 31, 00 RGB 00, 21, 00 RGB 00, 00, 00 + ; 8d55 INCLUDE "predef/cgb.asm" @@ -529,9 +531,9 @@ Function95f0: ; 95f0 ld bc, 8 ld a, $5 call FarCopyWRAM - call Function96a4 - call Function9699 - call Function96b3 + call ApplyPals + call WipeAttrMap + call ApplyAttrMap ret ; 9608 @@ -540,6 +542,7 @@ Palette_9608: ; 9608 RGB 09, 31, 31 RGB 10, 12, 31 RGB 00, 03, 19 + ; 9610 @@ -552,7 +555,7 @@ CopyPalettes: ; 9615 push bc ld a, [hli] push hl - call GetAthPalletFromPalettes9df6 + call GetPredefPal call LoadHLPaletteIntoDE pop hl inc hl @@ -562,7 +565,7 @@ CopyPalettes: ; 9615 ret ; 9625 -GetAthPalletFromPalettes9df6: ; 9625 +GetPredefPal: ; 9625 ld l, a ld h, $0 rept 3 ; multiply by 8 @@ -590,29 +593,33 @@ LoadHLPaletteIntoDE: ; 9630 ret ; 9643 -Function9643: ; 9643 +LoadPalette_White_Col1_Col2_Black: ; 9643 ld a, [rSVBK] push af ld a, $5 ld [rSVBK], a - ld a, $ff + + ld a, $7fff % $100 ld [de], a inc de - ld a, $7f + ld a, $7fff / $100 ld [de], a inc de - ld c, $4 + + ld c, 2 * 2 .loop ld a, [hli] ld [de], a inc de dec c jr nz, .loop + xor a ld [de], a inc de ld [de], a inc de + pop af ld [rSVBK], a ret @@ -667,7 +674,7 @@ endr ; 9699 -Function9699: ; 9699 +WipeAttrMap: ; 9699 hlcoord 0, 0, AttrMap ld bc, SCREEN_WIDTH * SCREEN_HEIGHT xor a @@ -675,19 +682,19 @@ Function9699: ; 9699 ret ; 96a4 -Function96a4: ; 96a4 +ApplyPals: ; 96a4 ld hl, UnknBGPals ld de, BGPals - ld bc, $0080 + ld bc, 16 palettes ld a, $5 call FarCopyWRAM ret ; 96b3 -Function96b3: ; 96b3 +ApplyAttrMap: ; 96b3 ld a, [rLCDC] bit 7, a - jr z, .asm_96d0 + jr z, .UpdateVBank1 ld a, [hBGMapMode] push af ld a, $2 @@ -700,37 +707,36 @@ Function96b3: ; 96b3 ld [hBGMapMode], a ret -.asm_96d0 +.UpdateVBank1 hlcoord 0, 0, AttrMap debgcoord 0, 0 - ld b, $12 + ld b, SCREEN_HEIGHT ld a, $1 ld [rVBK], a -.asm_96dc - ld c, $14 -.asm_96de +.row + ld c, SCREEN_WIDTH +.col ld a, [hli] ld [de], a inc de dec c - jr nz, .asm_96de - ld a, $c + jr nz, .col + ld a, BG_MAP_WIDTH - SCREEN_WIDTH add e - jr nc, .asm_96ea + jr nc, .okay inc d - -.asm_96ea +.okay ld e, a dec b - jr nz, .asm_96dc + jr nz, .row ld a, $0 ld [rVBK], a ret ; 96f3 -Function96f3: ; 96f3 CGB layout $fc - ld hl, wcd9b - ld a, [wcda9] +CGB_ApplyPartyMenuHPPals: ; 96f3 CGB layout $fc + ld hl, wHPPals + ld a, [wSGBPals] ld e, a ld d, $0 add hl, de @@ -740,16 +746,15 @@ Function96f3: ; 96f3 CGB layout $fc inc a ld e, a hlcoord 11, 2, AttrMap - ld bc, $0028 - ld a, [wcda9] -.asm_970b + ld bc, 2 * SCREEN_WIDTH + ld a, [wSGBPals] +.loop and a - jr z, .asm_9712 + jr z, .done add hl, bc dec a - jr .asm_970b - -.asm_9712 + jr .loop +.done lb bc, 2, 8 ld a, e call FillBoxCGB @@ -760,37 +765,37 @@ Function96f3: ; 96f3 CGB layout $fc Function971a: ; 971a ld hl, Palettes_b681 ld de, UnknOBPals - ld bc, $0010 + ld bc, 2 palettes ld a, $5 call FarCopyWRAM ret ; 9729 -Function9729: ; 9729 +GetBattlemonBackpicPalettePointer: ; 9729 push de callba GetPartyMonDVs ld c, l ld b, h ld a, [TempBattleMonSpecies] - call Function974b + call GetPlayerOrMonPalettePointer pop de ret ; 973a -Function973a: ; 973a +GetEnemyFrontpicPalettePointer: ; 973a push de callba GetEnemyMonDVs ld c, l ld b, h ld a, [TempEnemyMonSpecies] - call Function9764 + call GetFrontpicPalettePointer pop de ret ; 974b -Function974b: ; 974b +GetPlayerOrMonPalettePointer: ; 974b and a - jp nz, Function97f9 + jp nz, GetMonNormalOrShinyPalettePointer ld a, [wPlayerSpriteSetupFlags] bit 2, a ; transformed to male jr nz, .male @@ -805,12 +810,12 @@ Function974b: ; 974b ret ; 9764 -Function9764: ; 9764 +GetFrontpicPalettePointer: ; 9764 and a - jp nz, Function97f9 + jp nz, GetMonNormalOrShinyPalettePointer ld a, [TrainerClass] -Function976b: ; 976b +GetTrainerPalettePointer: ; 976b ld l, a ld h, 0 rept 2 @@ -821,30 +826,26 @@ endr ret ; 9775 -Function9775: ; 9775 - call Function97ee +GetMonPalettePointer_: ; 9775 + call GetMonPalettePointer ret ; 9779 -Function9779: ; 9779 - ret -; 977a - -Function977a: ; 977a +Function9779: mobile ; 9779 call CheckCGB ret z ld hl, Palettes_979c ld a, $90 ld [rOBPI], a - ld c, $30 -.asm_9787 + ld c, 6 palettes +.loop ld a, [hli] ld [rOBPD], a dec c - jr nz, .asm_9787 + jr nz, .loop ld hl, Palettes_979c ld de, UnknOBPals + 8 * 2 - ld bc, $0010 + ld bc, 2 palettes ld a, $5 call FarCopyWRAM ret @@ -855,26 +856,32 @@ Palettes_979c: ; 979c RGB 25, 25, 25 RGB 13, 13, 13 RGB 00, 00, 00 + RGB 31, 31, 31 RGB 31, 31, 07 RGB 31, 16, 01 RGB 00, 00, 00 + RGB 31, 31, 31 RGB 31, 19, 24 RGB 30, 10, 06 RGB 00, 00, 00 + RGB 31, 31, 31 RGB 12, 25, 01 RGB 05, 14, 00 RGB 00, 00, 00 + RGB 31, 31, 31 RGB 08, 12, 31 RGB 01, 04, 31 RGB 00, 00, 00 + RGB 31, 31, 31 RGB 24, 18, 07 RGB 20, 15, 03 RGB 00, 00, 00 + ; 97cc Function97cc: ; 97cc @@ -883,16 +890,16 @@ Function97cc: ; 97cc ld a, $90 ld [rOBPI], a ld a, $1c - call GetAthPalletFromPalettes9df6 + call GetPredefPal call Function97e5 ld a, $21 - call GetAthPalletFromPalettes9df6 + call GetPredefPal call Function97e5 ret ; 97e5 Function97e5: ; 97e5 - ld c, $8 + ld c, 1 palettes .loop ld a, [hli] ld [rOBPD], a @@ -901,7 +908,7 @@ Function97e5: ; 97e5 ret ; 97ee -Function97ee: ; 97ee +GetMonPalettePointer: ; 97ee ld l, a ld h, $0 rept 3 @@ -912,9 +919,9 @@ endr ret ; 97f9 -Function97f9: ; 97f9 +GetMonNormalOrShinyPalettePointer: ; 97f9 push bc - call Function97ee + call GetMonPalettePointer pop bc push hl call CheckShininess @@ -958,7 +965,6 @@ Function981a: ; 981a ld a, $10 jr nz, .okay ld a, $20 - .okay ld [rJOYP], a ld a, $30 @@ -972,7 +978,7 @@ Function981a: ; 981a ld [rJOYP], a ld a, $30 ld [rJOYP], a - call Function9a7a + call SGBDelayCycles pop bc dec b jr nz, .loop @@ -996,10 +1002,10 @@ Function9853: ; 9853 ld [hSGB], a call Function98eb call Function99b4 - call Function9a7a + call SGBDelayCycles call Function993f call Function992c - call Function9a7a + call SGBDelayCycles call Function993f ld hl, PalPacket_9d66 call Function981a @@ -1105,7 +1111,7 @@ Function9911: ; 9911 ld hl, PalPacket_9d56 call Function981a call Function992c - call Function9a7a + call SGBDelayCycles call Function993f ld hl, PalPacket_9d66 call Function981a @@ -1139,7 +1145,7 @@ Function993f: ; 993f Function994a: ; 994a ld hl, PalPacket_9d26 call Function981a - call Function9a7a + call SGBDelayCycles ld a, [rJOYP] and $3 cp $3 @@ -1149,26 +1155,26 @@ Function994a: ; 994a rept 2 ld a, [rJOYP] endr - call Function9a7a - call Function9a7a + call SGBDelayCycles + call SGBDelayCycles ld a, $30 ld [rJOYP], a - call Function9a7a - call Function9a7a + call SGBDelayCycles + call SGBDelayCycles ld a, $10 ld [rJOYP], a rept 6 ld a, [rJOYP] endr - call Function9a7a - call Function9a7a + call SGBDelayCycles + call SGBDelayCycles ld a, $30 ld [rJOYP], a rept 3 ld a, [rJOYP] endr - call Function9a7a - call Function9a7a + call SGBDelayCycles + call SGBDelayCycles ld a, [rJOYP] and $3 cp $3 @@ -1186,7 +1192,7 @@ endr Function99ab: ; 99ab ld hl, PalPacket_9d16 call Function981a - jp Function9a7a + jp SGBDelayCycles ; 99b4 Function99b4: ; 99b4 @@ -1217,20 +1223,20 @@ Function99d8: ; 99d8 ld b, $12 .asm_99ea push bc - ld bc, $000c + ld bc, $c call CopyData - ld bc, $0028 + ld bc, $28 call ClearBytes - ld bc, $000c + ld bc, $c call CopyData pop bc dec b jr nz, .asm_99ea - ld bc, $0140 + ld bc, $140 call CopyData ld bc, Start call ClearBytes - ld bc, $0080 + ld bc, 16 palettes call CopyData call DrawDefaultTiles ld a, $e3 @@ -1250,9 +1256,9 @@ Function9a24: ; 9a24 ld b, $80 .asm_9a30 push bc - ld bc, $0010 + ld bc, 2 palettes call CopyData - ld bc, $0010 + ld bc, 2 palettes call ClearBytes pop bc dec b @@ -1311,16 +1317,16 @@ DrawDefaultTiles: ; 0x9a64 ret ; 0x9a7a -Function9a7a: ; 9a7a - ld de, $1b58 -.asm_9a7d +SGBDelayCycles: ; 9a7a + ld de, 7000 +.wait nop nop nop dec de ld a, d or e - jr nz, .asm_9a7d + jr nz, .wait ret ; 9a86 @@ -1803,6 +1809,7 @@ Palettes_9df6: ; 9df6 RGB 08, 11, 11 RGB 21, 21, 21 RGB 31, 31, 31 + ; a06e SGBBorderMap: ; a06e @@ -1916,6 +1923,7 @@ SGBBorderPalettes: ; a49e RGB 31, 31, 25 RGB 31, 31, 25 RGB 31, 31, 25 + ; a51e SGBBorder: ; a51e @@ -1945,15 +1953,15 @@ INCLUDE "gfx/pics/palette_pointers.asm" INCLUDE "gfx/trainers/palette_pointers.asm" ; b1de -Functionb1de: ; b1de +LoadMapPals: ; b1de callba LoadSpecialMapPalette - jr c, .asm_b230 + jr c, .got_pals ld a, [wPermission] and 7 ld e, a ld d, 0 - ld hl, Unknown_b279 + ld hl, .TilesetColorsPointers rept 2 add hl, de endr @@ -1975,8 +1983,8 @@ endr ld a, $5 ld [rSVBK], a ld hl, UnknBGPals - ld b, $8 -.asm_b210 + ld b, 8 +.outer_loop ld a, [de] push de push hl @@ -1990,37 +1998,37 @@ endr ld e, l ld d, h pop hl - ld c, 8 -.asm_b222 + ld c, 1 palettes +.inner_loop ld a, [de] inc de ld [hli], a dec c - jr nz, .asm_b222 + jr nz, .inner_loop pop de inc de dec b - jr nz, .asm_b210 + jr nz, .outer_loop pop af ld [rSVBK], a -.asm_b230 +.got_pals ld a, [TimeOfDayPal] and 3 - ld bc, $40 + ld bc, 8 palettes ld hl, MapObjectPals call AddNTimes ld de, UnknOBPals - ld bc, $40 + ld bc, 8 palettes ld a, $5 ; BANK(UnknOBPals) call FarCopyWRAM ld a, [wPermission] - cp 1 - jr z, .asm_b253 - cp 2 + cp TOWN + jr z, .outside + cp ROUTE ret nz -.asm_b253 +.outside ld a, [MapGroup] ld l, a ld h, 0 @@ -2032,19 +2040,19 @@ endr ld a, [TimeOfDayPal] and 3 cp NITE - jr c, .asm_b26d + jr c, .morn_day rept 4 inc hl endr -.asm_b26d - ld de, UnknBGPals + 8 * 6 + 2 +.morn_day + ld de, UnknBGPals + 6 palettes + 2 ld bc, 4 ld a, $5 call FarCopyWRAM ret ; b279 -Unknown_b279: ; b279 +.TilesetColorsPointers: ; b279 dw TilesetColors1 dw TilesetColors1 dw TilesetColors1 @@ -2085,6 +2093,7 @@ Palette_b309: ; b309 RGB 31, 19, 24 RGB 30, 10, 06 RGB 00, 00, 00 + ; b311 Palette_b311: ; b311 @@ -2092,6 +2101,7 @@ Palette_b311: ; b311 RGB 17, 19, 31 RGB 14, 16, 31 RGB 00, 00, 00 + ; b319 TilesetBGPalette: ; b319 @@ -2143,6 +2153,7 @@ Palettes_b641: ; b641 RGB 11, 11, 19 RGB 07, 07, 12 RGB 00, 00, 00 + ; b681 Palettes_b681: ; b681 @@ -2216,6 +2227,7 @@ Palettes_b681: ; b681 RGB 20, 15, 03 RGB 07, 07, 07 + Palettes_b6f1: ; b6f1 RGB 31, 31, 31 RGB 18, 23, 31 @@ -2242,6 +2254,7 @@ Palettes_b6f1: ; b6f1 RGB 18, 23, 31 RGB 00, 00, 00 + Palettes_b719: ; b719 RGB 31, 31, 31 RGB 07, 06, 03 @@ -2252,6 +2265,7 @@ Palettes_b719: ; b719 RGB 31, 31, 00 RGB 26, 22, 00 RGB 00, 00, 00 + ; b729 Palettes_b729: ; b729 @@ -2284,6 +2298,7 @@ Palettes_b729: ; b729 RGB 00, 31, 00 RGB 15, 07, 00 RGB 31, 00, 00 + ; b759 Palettes_b759: ; b759 @@ -2316,6 +2331,7 @@ Palettes_b759: ; b759 RGB 00, 31, 00 RGB 15, 07, 00 RGB 31, 00, 00 + ; b789 Palettes_b789: ; b789 @@ -2338,6 +2354,7 @@ Palettes_b789: ; b789 RGB 29, 26, 05 RGB 18, 18, 18 RGB 00, 00, 00 + ; b7a9 Palettes_b7a9: ; b7a9 @@ -2420,4 +2437,5 @@ Palettes_b7a9: ; b7a9 RGB 31, 31, 31 RGB 00, 00, 00 RGB 00, 00, 00 + ; b829 diff --git a/engine/compose_mail.asm b/engine/compose_mail.asm index f02f99326..64165a13a 100755 --- a/engine/compose_mail.asm +++ b/engine/compose_mail.asm @@ -34,7 +34,7 @@ _ComposeMailMessage: ; 11e75 (mail?) ld a, BANK(.MailIcon) call FarCopyBytes xor a - ld hl, wc300 + ld hl, wSpriteAnimDict ld [hli], a ld [hl], a @@ -43,7 +43,7 @@ _ComposeMailMessage: ; 11e75 (mail?) ld a, SPRITE_ANIM_INDEX_00 call _InitSpriteAnimStruct - ld hl, $2 + ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID add hl, bc ld [hl], $0 call .InitCharset @@ -57,7 +57,7 @@ _ComposeMailMessage: ; 11e75 (mail?) ld a, %11100100 call DmgToCgbBGPals ld a, %11100100 - call Functioncf8 + call DmgToCgbObjPal0 call Function11be0 ld hl, wc6d0 ld e, [hl] @@ -67,6 +67,7 @@ _ComposeMailMessage: ; 11e75 (mail?) add hl, de ld [hl], $4e ret + ; 11ef4 (4:5ef4) .MailIcon: ; 11ef4 @@ -77,6 +78,7 @@ INCBIN "gfx/icon/mail2.2bpp" ld a, $21 ld [wc6d3], a ret + ; 11f7a (4:5f7a) .Dummy: ; dummied out @@ -123,13 +125,14 @@ INCBIN "gfx/icon/mail2.2bpp" bit 7, a jr nz, .exit_mail call .DoJumptable - callba Function8cf62 + callba PlaySpriteAnimationsAndDelayFrame call .Update call DelayFrame and a ret + .exit_mail - callab Function8cf53 + callab ClearSpriteAnims call ClearSprites xor a ld [hSCX], a @@ -179,10 +182,10 @@ endr ld [wc6d5], a ld a, b ld [wc6d6], a - ld hl, $1 + ld hl, SPRITEANIMSTRUCT_FRAMESET_ID add hl, bc ld a, [hl] - ld hl, $e + ld hl, SPRITEANIMSTRUCT_0E add hl, bc ld [hl], a ld hl, wJumptableIndex @@ -232,10 +235,10 @@ endr ld c, [hl] inc hl ld b, [hl] - ld hl, $c + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld [hl], $9 - ld hl, $d + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld [hl], $5 ret @@ -268,44 +271,47 @@ endr ld de, MailEntry_Uppercase call .PlaceMailCharset ret + .switch_to_lowercase ld de, MailEntry_Lowercase call .PlaceMailCharset ret +; called from engine/sprite_anims.asm Function120c1: ; 120c1 (4:60c1) call Function1210c - ld hl, SpriteAnim1Sprite0d - SpriteAnim1 + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld a, [hl] ld e, a swap e - ld hl, SpriteAnim1YOffset - SpriteAnim1 + ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld [hl], e cp $5 ld de, Unknown_120f8 - ld a, $0 + ld a, 0 jr nz, .asm_120df ld de, Unknown_12102 - ld a, $1 + ld a, 1 .asm_120df - ld hl, SpriteAnim1Sprite0e - SpriteAnim1 + ld hl, SPRITEANIMSTRUCT_0E add hl, bc add [hl] - ld hl, SpriteAnim1Sprite01 - SpriteAnim1 + ld hl, SPRITEANIMSTRUCT_FRAMESET_ID add hl, bc ld [hl], a - ld hl, SpriteAnim1Sprite0c - SpriteAnim1 + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld l, [hl] - ld h, SpriteAnim1Index - SpriteAnim1 + ld h, 0 add hl, de ld a, [hl] - ld hl, SpriteAnim1XOffset - SpriteAnim1 + ld hl, SPRITEANIMSTRUCT_XOFFSET add hl, bc ld [hl], a ret + ; 120f8 (4:60f8) Unknown_120f8: ; 120f8 @@ -329,20 +335,23 @@ Function1210c: ; 1210c (4:610c) and D_RIGHT jr nz, .right ret + .right call Function1218b and a jr nz, .asm_12138 - ld hl, $c + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] cp $9 jr nc, .asm_12135 inc [hl] ret + .asm_12135 ld [hl], $0 ret + .asm_12138 cp $3 jr nz, .asm_1213d @@ -351,24 +360,27 @@ Function1210c: ; 1210c (4:610c) ld e, a add a add e - ld hl, $c + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld [hl], a ret + .left call Function1218b and a jr nz, .asm_12159 - ld hl, $c + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] and a jr z, .asm_12156 dec [hl] ret + .asm_12156 ld [hl], $9 ret + .asm_12159 cp $1 jr nz, .asm_1215f @@ -380,29 +392,33 @@ endr ld e, a add a add e - ld hl, $c + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld [hl], a ret + .down - ld hl, $d + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld a, [hl] cp $5 jr nc, .asm_12175 inc [hl] ret + .asm_12175 ld [hl], $0 ret + .up - ld hl, $d + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld a, [hl] and a jr z, .asm_12182 dec [hl] ret + .asm_12182 ld [hl], $5 ret @@ -414,12 +430,12 @@ Function12185: ; 12185 (4:6185) ld b, [hl] Function1218b: ; 1218b (4:618b) - ld hl, $d + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld a, [hl] cp $5 jr nz, .asm_121aa - ld hl, $c + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] cp $3 @@ -428,12 +444,15 @@ Function1218b: ; 1218b (4:618b) jr c, .asm_121a7 ld a, $3 ret + .asm_121a4 ld a, $1 ret + .asm_121a7 ld a, $2 ret + .asm_121aa xor a ret diff --git a/engine/credits.asm b/engine/credits.asm index 6e2bef12d..77080b8b4 100644 --- a/engine/credits.asm +++ b/engine/credits.asm @@ -1,6 +1,5 @@ INCLUDE "includes.asm" - SECTION "Credits", ROMX, BANK[CREDITS] const_def @@ -118,12 +117,12 @@ const_value SET -7 const CREDITS_END -Function109847:: ; 109847 - bit 6, b +Credits:: ; 109847 + bit 6, b ; Hall Of Fame ld a, $0 - jr z, .asm_10984f + jr z, .okay ld a, $40 -.asm_10984f +.okay ld [wJumptableIndex], a ld a, [rSVBK] @@ -135,17 +134,17 @@ Function109847:: ; 109847 call ClearTileMap call ClearSprites - ld hl, wca00 + ld hl, wCreditsFaux2bpp ld c, $80 ld de, $ff00 -.asm_10986a +.load_loop ld a, e ld [hli], a ld a, d ld [hli], a dec c - jr nz, .asm_10986a + jr nz, .load_loop ld de, CreditsBorderGFX ld hl, VTiles2 tile $20 @@ -163,20 +162,20 @@ Function109847:: ; 109847 call Request2bpp ld a, $ff - ld [wcf64], a + ld [wCreditsBorderFrame], a xor a - ld [wcf65], a + ld [wCreditsBorderMon], a - call Function109bca + call Credits_LoadBorderGFX ld e, l ld d, h ld hl, VTiles2 - lb bc, BANK(CreditsMonsGFX), $10 + lb bc, BANK(CreditsMonsGFX), 16 call Request2bpp - call Function109a95 + call ConstructCreditsTilemap xor a - ld [wcf66], a + ld [wCreditsLYOverride], a ld hl, LYOverrides ld bc, $100 @@ -200,16 +199,16 @@ Function109847:: ; 109847 ld [wcd21], a ld [CreditsTimer], a -.asm_1098de - call Function109908 - call Function1098fd - jr nz, .asm_1098ee +.execution_loop + call Credits_HandleBButton + call Credits_HandleAButton + jr nz, .exit_credits - call Function109926 + call Credits_Jumptable call DelayFrame - jr .asm_1098de + jr .execution_loop -.asm_1098ee +.exit_credits call ClearBGPalettes xor a ld [hLCDStatCustom], a @@ -221,18 +220,18 @@ Function109847:: ; 109847 ret ; 1098fd -Function1098fd: ; 1098fd +Credits_HandleAButton: ; 1098fd ld a, [hJoypadDown] - and $1 + and A_BUTTON ret z ld a, [wJumptableIndex] bit 7, a ret ; 109908 -Function109908: ; 109908 +Credits_HandleBButton: ; 109908 ld a, [hJoypadDown] - and $2 + and B_BUTTON ret z ld a, [wJumptableIndex] bit 6, a @@ -240,12 +239,11 @@ Function109908: ; 109908 ld hl, CreditsPos ld a, [hli] cp $d - jr nc, .asm_10991e + jr nc, .okay ld a, [hli] and a ret z - -.asm_10991e +.okay ld hl, CreditsTimer ld a, [hl] and a @@ -254,12 +252,12 @@ Function109908: ; 109908 ret ; 109926 -Function109926: ; 109926 +Credits_Jumptable: ; 109926 ld a, [wJumptableIndex] and $f ld e, a ld d, 0 - ld hl, Jumptable_109937 + ld hl, .Jumptable rept 2 add hl, de endr @@ -270,79 +268,80 @@ endr ; 109937 -Jumptable_109937: ; 109937 (42:5937) - dw ParseCredits - dw Function109951 - dw Function109951 - dw Function10995e - dw Function109964 - dw Function10997b - dw Function109986 - dw Function109951 - dw Function109951 - dw Function109951 - dw Function109964 - dw Function10997b - dw Function109956 - - -Function109951: ; 109951 (42:5951) +.Jumptable: ; 109937 (42:5937) + jumptable_start + jumptable ParseCredits + jumptable Credits_Next + jumptable Credits_Next + jumptable Credits_PrepBGMapUpdate + jumptable Credits_UpdateGFXRequestPath + jumptable Credits_RequestGFX + jumptable Credits_LYOverride + jumptable Credits_Next + jumptable Credits_Next + jumptable Credits_Next + jumptable Credits_UpdateGFXRequestPath + jumptable Credits_RequestGFX + jumptable Credits_LoopBack + + +Credits_Next: ; 109951 (42:5951) ld hl, wJumptableIndex inc [hl] ret -Function109956: ; 109956 (42:5956) +Credits_LoopBack: ; 109956 (42:5956) ld hl, wJumptableIndex ld a, [hl] and $f0 ld [hl], a ret -Function10995e: ; 10995e (42:595e) +Credits_PrepBGMapUpdate: ; 10995e (42:595e) xor a ld [hBGMapMode], a - jp Function109951 + jp Credits_Next -Function109964: ; 109964 (42:5964) - call Function109bca +Credits_UpdateGFXRequestPath: ; 109964 (42:5964) + call Credits_LoadBorderGFX ld a, l ld [Requested2bppSource], a ld a, h ld [Requested2bppSource + 1], a - ld a, $0 + ld a, VTiles2 % $100 ld [Requested2bppDest], a - ld a, $90 + ld a, VTiles2 / $100 ld [Requested2bppDest + 1], a - jr Function10997b + jr Credits_RequestGFX -Function10997b: ; 10997b (42:597b) +Credits_RequestGFX: ; 10997b (42:597b) xor a ld [hBGMapMode], a ld a, $8 ld [Requested2bpp], a - jp Function109951 + jp Credits_Next -Function109986: ; 109986 (42:5986) +Credits_LYOverride: ; 109986 (42:5986) ld a, [rLY] cp $30 - jr c, Function109986 - ld a, [wcf66] + jr c, Credits_LYOverride + ld a, [wCreditsLYOverride] rept 2 dec a endr - ld [wcf66], a + ld [wCreditsLYOverride], a ld hl, LYOverrides + $1f - call Function1099a3 + call .Fill ld hl, LYOverrides + $87 - call Function1099a3 - jp Function109951 + call .Fill + jp Credits_Next -Function1099a3: ; 1099a3 (42:59a3) +.Fill: ; 1099a3 (42:59a3) ld c, $8 -.asm_1099a5 +.loop ld [hli], a dec c - jr nz, .asm_1099a5 + jr nz, .loop ret ; 1099aa @@ -437,15 +436,15 @@ endr .theend ; Display "The End" graphic. - call Function109c11 + call Credits_TheEnd jr .loop .scene ; Update the scene number and corresponding palette. call .get - ld [wcf65], a ; scene + ld [wCreditsBorderMon], a ; scene xor a - ld [wcf64], a ; frame + ld [wCreditsBorderFrame], a ; frame call GetCreditsPalette call SetPalettes ; update hw pal registers jr .loop @@ -453,7 +452,7 @@ endr .clear ; Clear the banner. ld a, $ff - ld [wcf64], a ; frame + ld [wCreditsBorderFrame], a ; frame jr .loop .music @@ -484,13 +483,13 @@ endr ld [hBGMapMode], a .done - jp Function109951 + jp Credits_Next .end ; Stop execution. ld hl, wJumptableIndex set 7, [hl] - ld a, $20 + ld a, 32 ld [MusicFade], a ld a, MUSIC_POST_CREDITS % $100 ld [MusicFadeID], a @@ -521,91 +520,96 @@ endr ; 109a95 -Function109a95: ; 109a95 (42:5a95) +ConstructCreditsTilemap: ; 109a95 (42:5a95) xor a ld [hBGMapMode], a ld a, $c ld [hBGMapAddress], a + ld a, $28 hlcoord 0, 0 - ld bc, $168 + ld bc, SCREEN_HEIGHT * SCREEN_WIDTH call ByteFill + ld a, $7f hlcoord 0, 4 - ld bc, $118 + ld bc, (SCREEN_HEIGHT - 4) * SCREEN_WIDTH call ByteFill + hlcoord 0, 4 ld a, $24 - call Function109b1d + call DrawCreditsBorder + hlcoord 0, 17 ld a, $20 - call Function109b1d + call DrawCreditsBorder + hlcoord 0, 0, AttrMap - ld bc, $50 + ld bc, 4 * SCREEN_WIDTH xor a call ByteFill + hlcoord 0, 4, AttrMap - ld bc, $14 + ld bc, SCREEN_WIDTH ld a, $1 call ByteFill + hlcoord 0, 5, AttrMap - ld bc, $f0 + ld bc, 12 * SCREEN_WIDTH ld a, $2 call ByteFill + hlcoord 0, 17, AttrMap - ld bc, $14 + ld bc, SCREEN_WIDTH ld a, $1 call ByteFill - call Function3200 + + call WaitBGMap2 xor a ld [hBGMapMode], a ld [hBGMapAddress], a hlcoord 0, 0 - call Function109aff - call Function3200 + call .InitTopPortion + call WaitBGMap2 ret -Function109aff: ; 109aff (42:5aff) - ld b, $5 -.asm_109b01 +.InitTopPortion: ; 109aff (42:5aff) + ld b, 5 +.outer_loop push hl - ld de, $11 - ld c, $4 + ld de, SCREEN_WIDTH - 3 + ld c, 4 xor a -.asm_109b08 - ld [hli], a - inc a - ld [hli], a - inc a +.inner_loop +rept 3 ld [hli], a inc a +endr ld [hl], a inc a add hl, de dec c - jr nz, .asm_109b08 + jr nz, .inner_loop pop hl rept 4 inc hl endr dec b - jr nz, .asm_109b01 + jr nz, .outer_loop ret -Function109b1d: ; 109b1d (42:5b1d) - ld c, $5 -.asm_109b1f +DrawCreditsBorder: ; 109b1d (42:5b1d) + ld c, SCREEN_WIDTH / 4 +.loop push af +rept 3 ld [hli], a inc a - ld [hli], a - inc a - ld [hli], a - inc a +endr ld [hli], a pop af dec c - jr nz, .asm_109b1f + jr nz, .loop ret GetCreditsPalette: ; 109b2c @@ -619,7 +623,7 @@ GetCreditsPalette: ; 109b2c .GetPalAddress ; Each set of palette data is 24 bytes long. - ld a, [wcf65] ; scene + ld a, [wCreditsBorderMon] ; scene and 3 add a add a ; * 8 @@ -724,18 +728,18 @@ CreditsPalettes: RGB 31, 31, 31 ; 109bca -Function109bca: ; 109bca (42:5bca) - ld hl, wcf64 +Credits_LoadBorderGFX: ; 109bca (42:5bca) + ld hl, wCreditsBorderFrame ld a, [hl] cp $ff - jr z, .asm_109bed + jr z, .init and 3 ld e, a inc a and 3 ld [hl], a - ld a, [wcf65] + ld a, [wCreditsBorderMon] and 3 rept 2 add a @@ -744,50 +748,49 @@ endr add a ld e, a ld d, 0 - ld hl, CreditsMonsFrames + ld hl, .Frames add hl, de ld a, [hli] ld h, [hl] ld l, a ret -.asm_109bed - ld hl, wca00 +.init + ld hl, wCreditsFaux2bpp ret ; 109bf1 (42:5bf1) -CreditsMonsFrames: ; 109bf1 +.Frames: ; 109bf1 dw CreditsPichuGFX - dw CreditsPichuGFX + $100 - dw CreditsPichuGFX + $200 - dw CreditsPichuGFX + $300 + dw CreditsPichuGFX + 16 tiles + dw CreditsPichuGFX + 32 tiles + dw CreditsPichuGFX + 48 tiles dw CreditsSmoochumGFX - dw CreditsSmoochumGFX + $100 - dw CreditsSmoochumGFX + $200 - dw CreditsSmoochumGFX + $300 + dw CreditsSmoochumGFX + 16 tiles + dw CreditsSmoochumGFX + 32 tiles + dw CreditsSmoochumGFX + 48 tiles dw CreditsDittoGFX - dw CreditsDittoGFX + $100 - dw CreditsDittoGFX + $200 - dw CreditsDittoGFX + $300 + dw CreditsDittoGFX + 16 tiles + dw CreditsDittoGFX + 32 tiles + dw CreditsDittoGFX + 48 tiles dw CreditsIgglybuffGFX - dw CreditsIgglybuffGFX + $100 - dw CreditsIgglybuffGFX + $200 - dw CreditsIgglybuffGFX + $300 + dw CreditsIgglybuffGFX + 16 tiles + dw CreditsIgglybuffGFX + 32 tiles + dw CreditsIgglybuffGFX + 48 tiles ; 109c11 -Function109c11: ; 109c11 (42:5c11) +Credits_TheEnd: ; 109c11 (42:5c11) ld a, $40 hlcoord 6, 9 - call Function109c1c + call .Load hlcoord 6, 10 - -Function109c1c: ; 109c1c (42:5c1c) - ld c, $8 -.asm_109c1e +.Load: ; 109c1c (42:5c1c) + ld c, 8 +.loop ld [hli], a inc a dec c - jr nz, .asm_109c1e + jr nz, .loop ret ; 109c24 (42:5c24) diff --git a/engine/crystal_intro.asm b/engine/crystal_intro.asm index 69a068ff9..3f238550d 100755 --- a/engine/crystal_intro.asm +++ b/engine/crystal_intro.asm @@ -1,22 +1,4 @@ -Functione455c: ; e455c - hlcoord 1, 1 - ld de, SCREEN_WIDTH - ld c, $10 -.asm_e4564 - ld [hl], $7f - add hl, de - dec c - jr nz, .asm_e4564 - hlcoord 1, 2 - ld bc, $28 - ld a, [wJumptableIndex] - call AddNTimes - ld [hl], $ed - ret -; e4579 - - -Functione4579: ; e4579 +Copyright_GFPresents: ; e4579 ld de, MUSIC_NONE call PlayMusic call ClearBGPalettes @@ -42,7 +24,7 @@ Functione4579: ; e4579 call DelayFrames call ClearTileMap callba GBCOnlyScreen - call Functione45e8 + call .GetGFLogoGFX .joy_loop call JoyTextDelay ld a, [hJoyLast] @@ -52,22 +34,22 @@ Functione4579: ; e4579 bit 7, a jr nz, .finish call PlaceGameFreakPresents - callba Function8cf69 + callba PlaySpriteAnimations call DelayFrame jr .joy_loop .pressed_button - call Functione465e + call .StopGamefreakAnim scf ret .finish - call Functione465e + call .StopGamefreakAnim and a ret ; e45e8 -Functione45e8: ; e45e8 +.GetGFLogoGFX: ; e45e8 ld de, GameFreakLogo ld hl, VTiles2 lb bc, BANK(GameFreakLogo), $1c @@ -79,26 +61,26 @@ Functione45e8: ; e45e8 ld [rSVBK], a ld hl, IntroLogoGFX - ld de, w6_d000 + ld de, wDecompressScratch ld a, BANK(IntroLogoGFX) call FarDecompress ld hl, VTiles0 - ld de, w6_d000 + ld de, wDecompressScratch lb bc, 1, 8 tiles call Request2bpp ld hl, VTiles1 - ld de, w6_d000 + $80 tiles + ld de, wDecompressScratch + $80 tiles lb bc, 1, 8 tiles call Request2bpp pop af ld [rSVBK], a - callba Function8cf53 + callba ClearSpriteAnims depixel 10, 11, 4, 0 - ld a, SPRITE_ANIM_INDEX_03 + ld a, SPRITE_ANIM_INDEX_GAMEFREAK_LOGO call _InitSpriteAnimStruct ld hl, $7 add hl, bc @@ -111,7 +93,7 @@ Functione45e8: ; e45e8 ld [hl], $30 xor a ld [wJumptableIndex], a - ld [wcf64], a + ld [wIntroSceneFrameCounter], a ld [wcf65], a ld [hSCX], a ld [hSCY], a @@ -124,8 +106,8 @@ Functione45e8: ; e45e8 ret ; e465e -Functione465e: ; e465e - callba Function8cf53 +.StopGamefreakAnim: ; e465e + callba ClearSpriteAnims call ClearTileMap call ClearSprites ld c, 16 @@ -230,9 +212,8 @@ PlaceGameFreakPresents_3: ; e46dd ; e46ed - GameFreakLogoJumper: ; e46ed (39:46ed) - ld hl, $b + ld hl, SPRITEANIMSTRUCT_0B add hl, bc ld e, [hl] ld d, 0 @@ -252,21 +233,20 @@ GameFreakLogoScenes: ; e46fd (39:46fd) dw GameFreakLogoScene4 dw GameFreakLogoScene5 - GameFreakLogoScene1: ; e4707 (39:4707) - ld hl, $b + ld hl, SPRITEANIMSTRUCT_0B add hl, bc inc [hl] ret GameFreakLogoScene2: ; e470d (39:470d) - ld hl, $c + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] and a jr z, .asm_e4747 ld d, a - ld hl, $d + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld a, [hl] and $3f @@ -275,17 +255,17 @@ GameFreakLogoScene2: ; e470d (39:470d) add $20 .asm_e4723 ld e, a - callba Functionce765 - ld hl, $7 + callba BattleAnim_Sine_e + ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld [hl], e - ld hl, $d + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld a, [hl] dec [hl] and $1f ret nz - ld hl, $c + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] sub $30 @@ -293,11 +273,12 @@ GameFreakLogoScene2: ; e470d (39:470d) ld de, SFX_DITTO_BOUNCE call PlaySFX ret + .asm_e4747 - ld hl, $b + ld hl, SPRITEANIMSTRUCT_0B add hl, bc inc [hl] - ld hl, $d + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld [hl], $0 ld de, SFX_DITTO_POP_UP @@ -305,18 +286,19 @@ GameFreakLogoScene2: ; e470d (39:470d) ret GameFreakLogoScene3: ; e4759 (39:4759) - ld hl, $d + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld a, [hl] cp $20 jr nc, .asm_e4764 inc [hl] ret + .asm_e4764 - ld hl, $b + ld hl, SPRITEANIMSTRUCT_0B add hl, bc inc [hl] - ld hl, $d + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld [hl], $0 ld de, SFX_DITTO_TRANSFORM @@ -324,7 +306,7 @@ GameFreakLogoScene3: ; e4759 (39:4759) ret GameFreakLogoScene4: ; e4776 (39:4776) - ld hl, $d + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld a, [hl] cp $40 @@ -351,12 +333,12 @@ endr ld a, $1 ld [hCGBPalUpdate], a ret + .asm_e47a3 - ld hl, $b + ld hl, SPRITEANIMSTRUCT_0B add hl, bc inc [hl] call PlaceGameFreakPresents_AdvanceIndex - GameFreakLogoScene5: ; e47ab (39:47ab) ret ; e47ac (39:47ac) @@ -369,19 +351,23 @@ GameFreakLogoPalettes: ; e47ac RGB 23, 12, 27 RGB 23, 13, 26 RGB 23, 13, 24 + RGB 24, 14, 22 RGB 24, 14, 20 RGB 24, 15, 18 RGB 24, 15, 16 + RGB 25, 16, 14 RGB 25, 16, 12 RGB 25, 17, 10 RGB 25, 17, 08 + RGB 26, 18, 06 RGB 26, 18, 04 RGB 26, 19, 02 RGB 26, 19, 00 -;' e47cc + +; e47cc GameFreakLogo: ; e47cc INCBIN "gfx/splash/logo.1bpp" @@ -396,7 +382,7 @@ CrystalIntro: ; e48ac push af ld a, [hVBlank] push af - call Functione4901 + call .InitRAMAddrs .loop: ; e48bc call JoyTextDelay ld a, [hJoyLast] @@ -406,7 +392,7 @@ CrystalIntro: ; e48ac bit 7, a jr nz, .done call IntroSceneJumper - callba Function8cf69 + callba PlaySpriteAnimations call DelayFrame jp .loop @@ -434,7 +420,7 @@ CrystalIntro: ; e48ac ret ; e4901 -Functione4901: ; e4901 +.InitRAMAddrs: ; e4901 xor a ld [hVBlank], a ld a, $1 @@ -459,7 +445,6 @@ endr jp [hl] ; e491e - IntroScenes: ; e491e (39:491e) dw IntroScene1 dw IntroScene2 @@ -490,7 +475,6 @@ IntroScenes: ; e491e (39:491e) dw IntroScene27 dw IntroScene28 - NextIntroScene: ; e4956 (39:4956) ld hl, wJumptableIndex inc [hl] @@ -498,7 +482,7 @@ NextIntroScene: ; e4956 (39:4956) IntroScene1: ; e495b (39:495b) ; Setup the next scene. - call Functione54a3 + call Intro_ClearBGPals call ClearSprites call ClearTileMap xor a @@ -507,18 +491,18 @@ IntroScene1: ; e495b (39:495b) ld [rVBK], a ld hl, IntroTilemap001 debgcoord 0, 0 - call Functione54fa + call Intro_DecompressRequest2bpp_64Tiles ld a, $0 ld [rVBK], a ld hl, IntroUnownsGFX ld de, VTiles2 tile $00 - call Functione54c2 + call Intro_DecompressRequest2bpp_128Tiles ld hl, IntroPulseGFX ld de, VTiles0 tile $00 - call Functione54c2 + call Intro_DecompressRequest2bpp_128Tiles ld hl, IntroTilemap002 debgcoord 0, 0 - call Functione54fa + call Intro_DecompressRequest2bpp_64Tiles ld a, [rSVBK] push af ld a, $5 @@ -540,8 +524,8 @@ IntroScene1: ; e495b (39:495b) ld [hWX], a ld a, $90 ld [hWY], a - callba Function8cf53 - call Functione549e + callba ClearSpriteAnims + call Intro_SetCGBPalUpdate xor a ld [wIntroSceneFrameCounter], a ld [wcf65], a @@ -558,15 +542,15 @@ IntroScene2: ; e49d6 (39:49d6) cp $60 jr nz, .DontPlaySound push af - ld de, $5858 - call Functione51dc + depixel 11, 11 + call CrystalIntro_InitUnownAnim ld de, SFX_INTRO_UNOWN_1 call PlaySFX pop af .DontPlaySound ld [wcf65], a xor a - call Functione5223 + call CrystalIntro_UnownFade ret .endscene call NextIntroScene @@ -574,7 +558,7 @@ IntroScene2: ; e49d6 (39:49d6) IntroScene3: ; e49fd (39:49fd) ; More setup. Transition to the outdoor scene. - call Functione54a3 + call Intro_ClearBGPals call ClearSprites call ClearTileMap xor a @@ -583,15 +567,15 @@ IntroScene3: ; e49fd (39:49fd) ld [rVBK], a ld hl, IntroTilemap003 debgcoord 0, 0 - call Functione54fa + call Intro_DecompressRequest2bpp_64Tiles ld a, $0 ld [rVBK], a ld hl, IntroBackgroundGFX ld de, VTiles2 tile $00 - call Functione54c2 + call Intro_DecompressRequest2bpp_128Tiles ld hl, IntroTilemap004 debgcoord 0, 0 - call Functione54fa + call Intro_DecompressRequest2bpp_64Tiles ld a, [rSVBK] push af ld a, $5 @@ -613,8 +597,8 @@ IntroScene3: ; e49fd (39:49fd) ld [hWX], a ld a, $90 ld [hWY], a - call Functione5516 - call Functione549e + call Intro_ResetLYOverrides + call Intro_SetCGBPalUpdate xor a ld [wIntroSceneFrameCounter], a call NextIntroScene @@ -622,20 +606,21 @@ IntroScene3: ; e49fd (39:49fd) IntroScene4: ; e4a69 (39:4a69) ; Scroll the outdoor panorama for a bit. - call Functione552f + call Intro_PerspectiveScrollBG ld hl, wIntroSceneFrameCounter ld a, [hl] cp $80 jr z, .endscene inc [hl] ret + .endscene call NextIntroScene ret IntroScene5: ; e4a7a (39:4a7a) ; Go back to the Unown. - call Functione54a3 + call Intro_ClearBGPals call ClearSprites call ClearTileMap xor a @@ -645,18 +630,18 @@ IntroScene5: ; e4a7a (39:4a7a) ld [rVBK], a ld hl, IntroTilemap005 debgcoord 0, 0 - call Functione54fa + call Intro_DecompressRequest2bpp_64Tiles ld a, $0 ld [rVBK], a ld hl, IntroUnownsGFX ld de, VTiles2 tile $00 - call Functione54c2 + call Intro_DecompressRequest2bpp_128Tiles ld hl, IntroPulseGFX ld de, VTiles0 tile $00 - call Functione54c2 + call Intro_DecompressRequest2bpp_128Tiles ld hl, IntroTilemap006 debgcoord 0, 0 - call Functione54fa + call Intro_DecompressRequest2bpp_64Tiles ld a, [rSVBK] push af ld a, $5 @@ -678,17 +663,17 @@ IntroScene5: ; e4a7a (39:4a7a) ld [hWX], a ld a, $90 ld [hWY], a - callba Function8cf53 - call Functione549e + callba ClearSpriteAnims + call Intro_SetCGBPalUpdate xor a - ld [wcf64], a + ld [wIntroSceneFrameCounter], a ld [wcf65], a call NextIntroScene ret IntroScene6: ; e4af7 (39:4af7) ; Two more Unown (I, H) fade in. - ld hl, wcf64 + ld hl, wIntroSceneFrameCounter ld a, [hl] inc [hl] cp $80 @@ -700,74 +685,87 @@ IntroScene6: ; e4af7 (39:4af7) cp $20 jr z, .FirstUnown jr .NoUnown + .FirstUnown push af - ld de, $3878 - call Functione51dc + depixel 7, 15 + call CrystalIntro_InitUnownAnim ld de, SFX_INTRO_UNOWN_2 call PlaySFX pop af .NoUnown ld [wcf65], a xor a - call Functione5223 + call CrystalIntro_UnownFade ret + .SecondUnown push af - ld de, $7030 - call Functione51dc + depixel 14, 6 + call CrystalIntro_InitUnownAnim ld de, SFX_INTRO_UNOWN_1 call PlaySFX pop af .StopUnown ld [wcf65], a ld a, $1 - call Functione5223 + call CrystalIntro_UnownFade ret + .endscene call NextIntroScene ret IntroScene7: ; e4b3f (39:4b3f) ; Back to the outdoor scene. - call Functione54a3 + call Intro_ClearBGPals call ClearSprites call ClearTileMap xor a ld [hBGMapMode], a + ld a, $1 ld [rVBK], a ld hl, IntroTilemap003 debgcoord 0, 0 - call Functione54fa + call Intro_DecompressRequest2bpp_64Tiles + ld hl, IntroPichuWooperGFX ld de, VTiles0 tile $00 - call Functione54c2 + call Intro_DecompressRequest2bpp_128Tiles + ld a, $0 ld [rVBK], a ld hl, IntroSuicuneRunGFX ld de, VTiles0 tile $00 - call Functione54de + call Intro_DecompressRequest2bpp_255Tiles + ld hl, IntroBackgroundGFX ld de, VTiles2 tile $00 - call Functione54c2 + call Intro_DecompressRequest2bpp_128Tiles + ld hl, IntroTilemap004 debgcoord 0, 0 - call Functione54fa + call Intro_DecompressRequest2bpp_64Tiles + ld a, [rSVBK] push af ld a, $5 ld [rSVBK], a + ld hl, Palette_e5edd ld de, UnknBGPals ld bc, $80 call CopyBytes + ld hl, Palette_e5edd ld de, BGPals ld bc, $80 call CopyBytes + pop af ld [rSVBK], a + xor a ld [hSCX], a ld [hSCY], a @@ -775,14 +773,14 @@ IntroScene7: ; e4b3f (39:4b3f) ld [hWX], a ld a, $90 ld [hWY], a - call Functione5516 - callba Function8cf53 + call Intro_ResetLYOverrides + callba ClearSpriteAnims depixel 13, 27, 4, 0 ld a, SPRITE_ANIM_INDEX_26 call _InitSpriteAnimStruct ld a, $f0 - ld [wc3c0], a - call Functione549e + ld [wGlobalAnimXOffset], a + call Intro_SetCGBPalUpdate xor a ld [wIntroSceneFrameCounter], a ld [wcf65], a @@ -795,24 +793,26 @@ IntroScene8: ; e4bd3 (39:4bd3) ld a, [hl] inc [hl] cp $40 - jr z, .asm_e4be2 - jr nc, .asm_e4be8 - call Functione552f + jr z, .suicune_sound + jr nc, .animate_suicune + call Intro_PerspectiveScrollBG ret -.asm_e4be2 + +.suicune_sound ld de, SFX_INTRO_SUICUNE_3 call PlaySFX -.asm_e4be8 - ld a, [wc3c0] +.animate_suicune + ld a, [wGlobalAnimXOffset] and a - jr z, .asm_e4bf4 + jr z, .finish sub $8 - ld [wc3c0], a + ld [wGlobalAnimXOffset], a ret -.asm_e4bf4 + +.finish ld de, SFX_INTRO_SUICUNE_2 call PlaySFX - callba Function8d03d + callba DeinitializeAllSprites call NextIntroScene ret @@ -822,13 +822,16 @@ IntroScene9: ; e4c04 (39:4c04) ld [hLCDStatCustom], a call ClearSprites hlcoord 0, 0, AttrMap - ld bc, $f0 + ; first 12 rows have palette 1 + ld bc, 12 * SCREEN_WIDTH ld a, $1 call ByteFill - ld bc, $3c + ; middle 3 rows have palette 2 + ld bc, 3 * SCREEN_WIDTH ld a, $2 call ByteFill - ld bc, $3c + ; last three rows have palette 3 + ld bc, 3 * SCREEN_WIDTH ld a, $3 call ByteFill ld a, $2 @@ -836,7 +839,7 @@ IntroScene9: ; e4c04 (39:4c04) call DelayFrame call DelayFrame call DelayFrame - ld a, $c + ld a, $c ; $980c ld [hBGMapAddress], a call DelayFrame call DelayFrame @@ -844,16 +847,16 @@ IntroScene9: ; e4c04 (39:4c04) xor a ld [hBGMapMode], a ld [hBGMapAddress], a - ld [wc3c0], a + ld [wGlobalAnimXOffset], a xor a - ld [wcf64], a + ld [wIntroSceneFrameCounter], a call NextIntroScene ret IntroScene10: ; e4c4f (39:4c4f) ; Wooper and Pichu enter. - call Functione546d - ld hl, wcf64 + call Intro_RustleGrass + ld hl, wIntroSceneFrameCounter ld a, [hl] inc [hl] cp $c0 @@ -885,7 +888,7 @@ IntroScene10: ; e4c4f (39:4c4f) IntroScene11: ; e4c86 (39:4c86) ; Back to Unown again. - call Functione54a3 + call Intro_ClearBGPals call ClearSprites call ClearTileMap xor a @@ -895,15 +898,15 @@ IntroScene11: ; e4c86 (39:4c86) ld [rVBK], a ld hl, IntroTilemap007 debgcoord 0, 0 - call Functione54fa + call Intro_DecompressRequest2bpp_64Tiles ld a, $0 ld [rVBK], a ld hl, IntroUnownsGFX ld de, VTiles2 tile $00 - call Functione54c2 + call Intro_DecompressRequest2bpp_128Tiles ld hl, IntroTilemap008 debgcoord 0, 0 - call Functione54fa + call Intro_DecompressRequest2bpp_64Tiles ld a, [rSVBK] push af ld a, $5 @@ -925,8 +928,8 @@ IntroScene11: ; e4c86 (39:4c86) ld [hWX], a ld a, $90 ld [hWY], a - callba Function8cf53 - call Functione549e + callba ClearSpriteAnims + call Intro_SetCGBPalUpdate xor a ld [wIntroSceneFrameCounter], a ld [wcf65], a @@ -935,14 +938,15 @@ IntroScene11: ; e4c86 (39:4c86) IntroScene12: ; e4cfa (39:4cfa) ; Even more Unown. - call Functione4d36 + call .PlayUnownSound ld hl, wIntroSceneFrameCounter ld a, [hl] inc [hl] cp $c0 - jr nc, .asm_e4d32 + jr nc, .done cp $80 - jr nc, .asm_e4d1d + jr nc, .second_half +; first half ld c, a and $1f sla a @@ -951,9 +955,11 @@ IntroScene12: ; e4cfa (39:4cfa) and $e0 srl a swap a - call Functione5223 + call CrystalIntro_UnownFade ret -.asm_e4d1d + +.second_half +; double speed ld c, a and $f sla a @@ -963,13 +969,14 @@ IntroScene12: ; e4cfa (39:4cfa) and $70 or $40 swap a - call Functione5223 + call CrystalIntro_UnownFade ret -.asm_e4d32 + +.done call NextIntroScene ret -Functione4d36: ; e4d36 (39:4d36) +.PlayUnownSound: ; e4d36 (39:4d36) ld a, [wIntroSceneFrameCounter] ld c, a ld hl, .UnownSounds @@ -1003,12 +1010,11 @@ endr dbw $90, SFX_INTRO_UNOWN_2 dbw $a0, SFX_INTRO_UNOWN_1 dbw $b0, SFX_INTRO_UNOWN_2 - db $ff -; e4d6d + db -1 ; e4d6d IntroScene13: ; e4d6d (39:4d6d) ; Switch scenes again. - call Functione54a3 + call Intro_ClearBGPals call ClearSprites call ClearTileMap xor a @@ -1017,18 +1023,18 @@ IntroScene13: ; e4d6d (39:4d6d) ld [rVBK], a ld hl, IntroTilemap003 debgcoord 0, 0 - call Functione54fa + call Intro_DecompressRequest2bpp_64Tiles ld a, $0 ld [rVBK], a ld hl, IntroSuicuneRunGFX ld de, VTiles0 tile $00 - call Functione54de + call Intro_DecompressRequest2bpp_255Tiles ld hl, IntroBackgroundGFX ld de, VTiles2 tile $00 - call Functione54c2 + call Intro_DecompressRequest2bpp_128Tiles ld hl, IntroTilemap004 debgcoord 0, 0 - call Functione54fa + call Intro_DecompressRequest2bpp_64Tiles ld a, [rSVBK] push af ld a, $5 @@ -1050,17 +1056,17 @@ IntroScene13: ; e4d6d (39:4d6d) ld [hWX], a ld a, $90 ld [hWY], a - callba Function8cf53 + callba ClearSpriteAnims depixel 13, 11, 4, 0 ld a, SPRITE_ANIM_INDEX_26 call _InitSpriteAnimStruct ld de, MUSIC_CRYSTAL_OPENING call PlayMusic xor a - ld [wc3c0], a - call Functione549e + ld [wGlobalAnimXOffset], a + call Intro_SetCGBPalUpdate xor a - ld [wcf64], a + ld [wIntroSceneFrameCounter], a ld [wcf65], a call NextIntroScene ret @@ -1070,7 +1076,7 @@ IntroScene14: ; e4dfa (39:4dfa) ld a, [hSCX] sub 10 ld [hSCX], a - ld hl, wcf64 + ld hl, wIntroSceneFrameCounter ld a, [hl] inc [hl] cp $80 @@ -1089,21 +1095,21 @@ IntroScene14: ; e4dfa (39:4dfa) .asm_e4e1a ld a, $1 ld [wcf65], a - ld a, [wc3c0] + ld a, [wGlobalAnimXOffset] cp $88 jr c, .asm_e4e2c sub $8 - ld [wc3c0], a + ld [wGlobalAnimXOffset], a ret .asm_e4e2c - callba Function8d03d + callba DeinitializeAllSprites ret .asm_e4e33 - ld a, [wc3c0] + ld a, [wGlobalAnimXOffset] sub $2 - ld [wc3c0], a + ld [wGlobalAnimXOffset], a ret .done @@ -1112,7 +1118,7 @@ IntroScene14: ; e4dfa (39:4dfa) IntroScene15: ; e4e40 (39:4e40) ; Transition to a new scene. - call Functione54a3 + call Intro_ClearBGPals call ClearSprites call ClearTileMap xor a @@ -1121,23 +1127,23 @@ IntroScene15: ; e4e40 (39:4e40) ld [rVBK], a ld hl, IntroTilemap009 debgcoord 0, 0 - call Functione54fa + call Intro_DecompressRequest2bpp_64Tiles ld a, $0 ld [rVBK], a ld hl, IntroSuicuneJumpGFX ld de, VTiles2 tile $00 - call Functione54c2 + call Intro_DecompressRequest2bpp_128Tiles ld hl, IntroUnownBackGFX ld de, VTiles0 tile $00 - call Functione54c2 - ld de, GFX_e7a5d + call Intro_DecompressRequest2bpp_128Tiles + ld de, IntroGrass4GFX ld hl, VTiles1 tile $00 - lb bc, BANK(GFX_e7a5d), 1 + lb bc, BANK(IntroGrass4GFX), 1 call Request2bpp ld hl, IntroTilemap010 debgcoord 0, 0 - call Functione54fa - call Functione541b + call Intro_DecompressRequest2bpp_64Tiles + call Intro_LoadTilemap ld a, [rSVBK] push af ld a, $5 @@ -1160,8 +1166,8 @@ IntroScene15: ; e4e40 (39:4e40) ld [hWX], a ld a, $90 ld [hWY], a - callba Function8cf53 - call Functione549e + callba ClearSpriteAnims + call Intro_SetCGBPalUpdate depixel 8, 5 ld a, SPRITE_ANIM_INDEX_2A call _InitSpriteAnimStruct @@ -1169,19 +1175,19 @@ IntroScene15: ; e4e40 (39:4e40) ld a, SPRITE_ANIM_INDEX_2B call _InitSpriteAnimStruct xor a - ld [wcf64], a + ld [wIntroSceneFrameCounter], a ld [wcf65], a call NextIntroScene ret IntroScene16: ; e4edc (39:4edc) ; Suicune shows its face. An Unown appears in front. - ld hl, wcf64 + ld hl, wIntroSceneFrameCounter ld a, [hl] inc [hl] cp $80 jr nc, .done - call Functione5441 + call Intro_Scene16_AnimateSuicune ld a, [hSCY] and a ret z @@ -1194,7 +1200,7 @@ IntroScene16: ; e4edc (39:4edc) IntroScene17: ; e4ef5 (39:4ef5) ; ... - call Functione54a3 + call Intro_ClearBGPals call ClearSprites call ClearTileMap xor a @@ -1203,15 +1209,15 @@ IntroScene17: ; e4ef5 (39:4ef5) ld [rVBK], a ld hl, IntroTilemap011 debgcoord 0, 0 - call Functione54fa + call Intro_DecompressRequest2bpp_64Tiles ld a, $0 ld [rVBK], a ld hl, IntroSuicuneCloseGFX ld de, VTiles1 tile $00 - call Functione54de + call Intro_DecompressRequest2bpp_255Tiles ld hl, IntroTilemap012 debgcoord 0, 0 - call Functione54fa + call Intro_DecompressRequest2bpp_64Tiles ld a, [rSVBK] push af ld a, $5 @@ -1233,17 +1239,17 @@ IntroScene17: ; e4ef5 (39:4ef5) ld [hWX], a ld a, $90 ld [hWY], a - callba Function8cf53 - call Functione549e + callba ClearSpriteAnims + call Intro_SetCGBPalUpdate xor a - ld [wcf64], a + ld [wIntroSceneFrameCounter], a ld [wcf65], a call NextIntroScene ret IntroScene18: ; e4f67 (39:4f67) ; Suicune close up. - ld hl, wcf64 + ld hl, wIntroSceneFrameCounter ld a, [hl] inc [hl] cp $60 @@ -1260,7 +1266,7 @@ IntroScene18: ; e4f67 (39:4f67) IntroScene19: ; e4f7e (39:4f7e) ; More setup. - call Functione54a3 + call Intro_ClearBGPals call ClearSprites call ClearTileMap xor a @@ -1269,23 +1275,23 @@ IntroScene19: ; e4f7e (39:4f7e) ld [rVBK], a ld hl, IntroTilemap013 debgcoord 0, 0 - call Functione54fa + call Intro_DecompressRequest2bpp_64Tiles ld a, $0 ld [rVBK], a ld hl, IntroSuicuneBackGFX ld de, VTiles2 tile $00 - call Functione54c2 + call Intro_DecompressRequest2bpp_128Tiles ld hl, IntroUnownsGFX ld de, VTiles1 tile $00 - call Functione54c2 - ld de, GFX_e7a5d + call Intro_DecompressRequest2bpp_128Tiles + ld de, IntroGrass4GFX ld hl, VTiles1 tile $7f - lb bc, BANK(GFX_e7a5d), 1 + lb bc, BANK(IntroGrass4GFX), 1 call Request2bpp ld hl, IntroTilemap014 debgcoord 0, 0 - call Functione54fa - call Functione541b + call Intro_DecompressRequest2bpp_64Tiles + call Intro_LoadTilemap ld a, [rSVBK] push af ld a, $5 @@ -1308,32 +1314,32 @@ IntroScene19: ; e4f7e (39:4f7e) ld [hWX], a ld a, $90 ld [hWY], a - callba Function8cf53 - ld hl, wc300 + callba ClearSpriteAnims + ld hl, wSpriteAnimDict xor a ld [hli], a ld [hl], $7f - call Functione549e + call Intro_SetCGBPalUpdate depixel 12, 0 ld a, SPRITE_ANIM_INDEX_2B call _InitSpriteAnimStruct xor a - ld [wcf64], a + ld [wIntroSceneFrameCounter], a ld [wcf65], a call NextIntroScene ret IntroScene20: ; e5019 (39:5019) ; Suicune running away. A bunch of Unown appear. - ld hl, wcf64 + ld hl, wIntroSceneFrameCounter ld a, [hl] inc [hl] cp $98 - jr nc, .asm_e5059 + jr nc, .finished cp $58 ret nc cp $40 - jr nc, .asm_e5032 + jr nc, .AppearUnown cp $28 ret nc ld a, [hSCY] @@ -1341,7 +1347,7 @@ IntroScene20: ; e5019 (39:5019) ld [hSCY], a ret -.asm_e5032 +.AppearUnown sub $18 ld c, a and $3 @@ -1353,56 +1359,56 @@ IntroScene20: ; e5019 (39:5019) srl a ld [wcf65], a xor a - call Functione5348 + call Intro_Scene20_AppearUnown ret ; e5049 (39:5049) - +; unused ld a, c and $1c srl a srl a ld [wcf65], a ld a, 1 - call Functione5348 + call Intro_Scene20_AppearUnown ret -.asm_e5059 +.finished call NextIntroScene ret IntroScene21: ; e505d (39:505d) ; Suicune gets more distant and turns black. - call Functione5451 + call Intro_ColoredSuicuneFrameSwap ld c, 3 call DelayFrames xor a ld [hBGMapMode], a - ld [wcf64], a + ld [wIntroSceneFrameCounter], a ld [wcf65], a call NextIntroScene ret IntroScene22: ; e5072 (39:5072) - ld hl, wcf64 + ld hl, wIntroSceneFrameCounter ld a, [hl] inc [hl] cp $8 jr nc, .done ret .done - callba Function8d03d + callba DeinitializeAllSprites call NextIntroScene ret IntroScene23: ; e5086 (39:5086) xor a - ld [wcf64], a + ld [wIntroSceneFrameCounter], a call NextIntroScene ret IntroScene24: ; e508e (39:508e) ; Fade to white. - ld hl, wcf64 + ld hl, wIntroSceneFrameCounter ld a, [hl] inc [hl] cp $20 @@ -1411,25 +1417,27 @@ IntroScene24: ; e508e (39:508e) ld c, a and $3 ret nz + ld a, c and $1c sla a - call Functione5172 + call Intro_Scene24_ApplyPaletteFade ret .done ld a, $40 - ld [wcf64], a + ld [wIntroSceneFrameCounter], a call NextIntroScene ret IntroScene25: ; e50ad (39:50ad) ; Wait around a bit. - ld a, [wcf64] + ld a, [wIntroSceneFrameCounter] dec a jr z, .done - ld [wcf64], a + ld [wIntroSceneFrameCounter], a ret + .done call NextIntroScene ret @@ -1445,15 +1453,15 @@ IntroScene26: ; e50bb (39:50bb) ld [rVBK], a ld hl, IntroTilemap015 debgcoord 0, 0 - call Functione54fa + call Intro_DecompressRequest2bpp_64Tiles ld a, $0 ld [rVBK], a ld hl, IntroCrystalUnownsGFX ld de, VTiles2 tile $00 - call Functione54c2 + call Intro_DecompressRequest2bpp_128Tiles ld hl, IntroTilemap017 debgcoord 0, 0 - call Functione54fa + call Intro_DecompressRequest2bpp_64Tiles ld a, [rSVBK] push af ld a, $5 @@ -1475,10 +1483,10 @@ IntroScene26: ; e50bb (39:50bb) ld [hWX], a ld a, $90 ld [hWY], a - callba Function8cf53 - call Functione549e + callba ClearSpriteAnims + call Intro_SetCGBPalUpdate xor a - ld [wcf64], a + ld [wIntroSceneFrameCounter], a ld [wcf65], a call NextIntroScene ret @@ -1487,7 +1495,7 @@ IntroScene27: ; e512d (39:512d) ; Spell out C R Y S T A L with Unown. ld hl, wcf65 inc [hl] - ld hl, wcf64 + ld hl, wIntroSceneFrameCounter ld a, [hl] inc [hl] cp $80 @@ -1499,18 +1507,18 @@ IntroScene27: ; e512d (39:512d) ld a, c and $70 swap a - call Functione539d + call Intro_FadeUnownWordPals ret .done call NextIntroScene ld a, $80 - ld [wcf64], a + ld [wIntroSceneFrameCounter], a ret IntroScene28: ; e5152 (39:5152) ; Cut out when the music ends, and lead into the title screen. - ld hl, wcf64 + ld hl, wIntroSceneFrameCounter ld a, [hl] and a jr z, .done @@ -1533,32 +1541,33 @@ IntroScene28: ; e5152 (39:5152) set 7, [hl] ret - -Functione5172: ; e5172 (39:5172) - ld hl, Unknown_e519c +Intro_Scene24_ApplyPaletteFade: ; e5172 (39:5172) +; load the (a)th palette from .FadePals to all BGPals + ld hl, .FadePals add l ld l, a ld a, $0 adc h ld h, a + ld a, [rSVBK] push af ld a, $5 ld [rSVBK], a ld de, BGPals - ld b, $8 -.asm_e5187 + ld b, 8 ; number of BG pals +.loop1 push hl - ld c, $8 -.asm_e518a + ld c, 8 ; number of bytes per pal +.loop2 ld a, [hli] ld [de], a inc de dec c - jr nz, .asm_e518a + jr nz, .loop2 pop hl dec b - jr nz, .asm_e5187 + jr nz, .loop1 pop af ld [rSVBK], a ld a, $1 @@ -1566,7 +1575,7 @@ Functione5172: ; e5172 (39:5172) ret ; e519c (39:519c) -Unknown_e519c: ; e519c +.FadePals: ; e519c ; Fade to white. RGB 24, 12, 09 RGB 31, 31, 31 @@ -1607,49 +1616,50 @@ Unknown_e519c: ; e519c RGB 31, 31, 31 RGB 31, 31, 31 RGB 31, 31, 31 + ; e51dc -Functione51dc: ; e51dc (39:51dc) +CrystalIntro_InitUnownAnim: ; e51dc (39:51dc) push de ld a, SPRITE_ANIM_INDEX_29 call _InitSpriteAnimStruct - ld hl, $c + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld [hl], $8 ld a, $3c - call Function3b3c + call ReinitSpriteAnimFrame pop de push de ld a, SPRITE_ANIM_INDEX_29 call _InitSpriteAnimStruct - ld hl, $c + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld [hl], $18 ld a, $3b - call Function3b3c + call ReinitSpriteAnimFrame pop de push de ld a, SPRITE_ANIM_INDEX_29 call _InitSpriteAnimStruct - ld hl, $c + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld [hl], $28 ld a, $39 - call Function3b3c + call ReinitSpriteAnimFrame pop de ld a, SPRITE_ANIM_INDEX_29 call _InitSpriteAnimStruct - ld hl, $c + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld [hl], $38 ld a, $3a - call Function3b3c + call ReinitSpriteAnimFrame ret -Functione5223: ; e5223 (39:5223) +CrystalIntro_UnownFade: ; e5223 (39:5223) rept 3 add a endr @@ -1663,28 +1673,31 @@ endr ld a, [wcf65] and $3f cp $1f - jr z, .asm_e523e - jr c, .asm_e523e + jr z, .okay + jr c, .okay ld c, a ld a, $3f sub c -.asm_e523e +.okay + ld c, a ld b, $0 ld a, [rSVBK] push af ld a, $5 ld [rSVBK], a + push hl push bc ld hl, BGPals - ld bc, $40 + ld bc, 4 * 16 xor a call ByteFill pop bc pop hl + push hl - ld hl, Unknown_e5288 + ld hl, .BWFade rept 2 add hl, bc endr @@ -1696,8 +1709,9 @@ endr ld [hli], a ld a, d ld [hli], a + push hl - ld hl, Unknown_e52c8 + ld hl, .BlackLBlueFade rept 2 add hl, bc endr @@ -1709,8 +1723,9 @@ endr ld [hli], a ld a, d ld [hli], a + push hl - ld hl, Unknown_e5308 + ld hl, .BlackBlueFade rept 2 add hl, bc endr @@ -1722,6 +1737,7 @@ endr ld [hli], a ld a, d ld [hli], a + pop af ld [rSVBK], a ld a, $1 @@ -1729,7 +1745,7 @@ endr ret ; e5288 (39:5288) -Unknown_e5288: ; e5288 +.BWFade: ; e5288 ; Fade between black and white. hue = 0 rept 32 @@ -1738,7 +1754,7 @@ hue = hue + 1 endr ; e52c8 -Unknown_e52c8: ; e52c8 +.BlackLBlueFade: ; e52c8 ; Fade between black and light blue. hue = 0 rept 32 @@ -1747,7 +1763,7 @@ hue = hue + 1 endr ; e5308 -Unknown_e5308: ; e5308 +.BlackBlueFade: ; e5308 ; Fade between black and blue. hue = 0 rept 32 @@ -1756,14 +1772,18 @@ hue = hue + 1 endr ; e5348 -Functione5348: ; e5348 (39:5348) +Intro_Scene20_AppearUnown: ; e5348 (39:5348) +; Spawn the palette for the nth Unown and a - jr nz, .asm_e5350 - ld hl, Palette_e538d - jr .asm_e5353 -.asm_e5350 - ld hl, Palette_e5395 -.asm_e5353 + jr nz, .load_pal_2 + + ld hl, .pal1 + jr .got_pointer + +.load_pal_2 + ld hl, .pal2 + +.got_pointer ld a, [wcf65] and $7 rept 3 @@ -1774,17 +1794,21 @@ endr push af ld a, $5 ld [rSVBK], a + push bc ld de, BGPals + ld a, c add e ld e, a ld a, $0 adc d ld d, a - ld bc, $8 + + ld bc, 8 call CopyBytes pop bc + ld de, UnknBGPals ld a, c add e @@ -1792,8 +1816,10 @@ endr ld a, $0 adc d ld d, a - ld bc, $8 + + ld bc, 8 call CopyBytes + pop af ld [rSVBK], a ld a, $1 @@ -1801,21 +1827,23 @@ endr ret ; e538d (39:538d) -Palette_e538d: ; e538d +.pal1: ; e538d RGB 24, 12, 09 RGB 31, 31, 31 RGB 12, 00, 31 RGB 00, 00, 00 + ; e5395 -Palette_e5395: ; e5395 +.pal2: ; e5395 RGB 24, 12, 09 RGB 31, 31, 31 RGB 31, 31, 31 RGB 31, 31, 31 + ; e539d -Functione539d: ; e539d (39:539d) +Intro_FadeUnownWordPals: ; e539d (39:539d) rept 3 add a endr @@ -1830,12 +1858,14 @@ endr add a ld c, a ld b, $0 + ld a, [rSVBK] push af ld a, $5 ld [rSVBK], a + push hl - ld hl, Palette_e53db + ld hl, .FastFadePalettes add hl, bc ld a, [hli] ld d, [hl] @@ -1845,8 +1875,9 @@ endr ld [hli], a ld a, d ld [hli], a + push hl - ld hl, Palette_e53fb + ld hl, .SlowFadePalettes add hl, bc ld a, [hli] ld d, [hl] @@ -1856,6 +1887,7 @@ endr ld [hli], a ld a, d ld [hli], a + pop af ld [rSVBK], a ld a, $1 @@ -1863,7 +1895,7 @@ endr ret ; e53db (39:53db) -Palette_e53db: ; e53db +.FastFadePalettes: ; e53db hue = 31 rept 8 RGB hue, hue, hue @@ -1873,7 +1905,7 @@ hue = hue + -2 endr ; e53fb -Palette_e53fb: ; e53fb +.SlowFadePalettes: ; e53fb hue = 31 rept 16 RGB hue, hue, hue @@ -1881,76 +1913,80 @@ hue = hue + -1 endr ; e541b -Functione541b: ; e541b (39:541b) +Intro_LoadTilemap: ; e541b (39:541b) ld a, [rSVBK] push af ld a, $6 ld [rSVBK], a - ld hl, w6_d000 + + ld hl, wDecompressScratch decoord 0, 0 ld b, SCREEN_HEIGHT -.asm_e542a +.row ld c, SCREEN_WIDTH -.asm_e542c +.col ld a, [hli] ld [de], a inc de dec c - jr nz, .asm_e542c - ld a, $c + jr nz, .col + ; add hl, $20 - SCREEN_WIDTH + ld a, $20 - SCREEN_WIDTH add l ld l, a ld a, $0 adc h ld h, a dec b - jr nz, .asm_e542a + jr nz, .row + pop af ld [rSVBK], a ret -Functione5441: ; e5441 (39:5441) - ld a, [wcf64] +Intro_Scene16_AnimateSuicune: ; e5441 (39:5441) + ld a, [wIntroSceneFrameCounter] and $3 - jr z, Functione5451 + jr z, Intro_ColoredSuicuneFrameSwap cp $3 - jr z, .asm_e544d + jr z, .PrepareForSuicuneSwap ret -.asm_e544d + +.PrepareForSuicuneSwap xor a ld [hBGMapMode], a ret -Functione5451: ; e5451 (39:5451) +Intro_ColoredSuicuneFrameSwap: ; e5451 (39:5451) hlcoord 0, 0 ld bc, SCREEN_HEIGHT * SCREEN_WIDTH -.asm_e5457 +.loop ld a, [hl] and a - jr z, .asm_e5462 + jr z, .skip cp $80 - jr nc, .asm_e5462 + jr nc, .skip xor $8 ld [hl], a -.asm_e5462 +.skip inc hl dec bc ld a, c or b - jr nz, .asm_e5457 + jr nz, .loop ld a, $1 ld [hBGMapMode], a ret -Functione546d: ; e546d (39:546d) - ld a, [wcf64] - cp $24 +Intro_RustleGrass: ; e546d (39:546d) + ld a, [wIntroSceneFrameCounter] + cp 36 ret nc and $c srl a ld e, a ld d, $0 - ld hl, Unknown_e5496 + ld hl, .RustlingGrassPointers add hl, de ld a, [hli] ld [Requested2bppSource], a @@ -1960,32 +1996,34 @@ Functione546d: ; e546d (39:546d) ld [Requested2bppDest], a ld a, (VTiles2 tile $09) / $100 ld [Requested2bppDest + 1], a - ld a, $4 - ld [Requested2bpp], a + ld a, 4 + ld [Requested2bppSize], a ret ; e5496 (39:5496) -Unknown_e5496: ; e5496 - dw GFX_e799d - dw GFX_e79dd - dw GFX_e7a1d - dw GFX_e79dd +.RustlingGrassPointers: ; e5496 + dw IntroGrass1GFX + dw IntroGrass2GFX + dw IntroGrass3GFX + dw IntroGrass2GFX ; e549e -Functione549e: ; e549e (39:549e) +Intro_SetCGBPalUpdate: ; e549e (39:549e) ld a, $1 ld [hCGBPalUpdate], a ret -Functione54a3: ; e54a3 (39:54a3) +Intro_ClearBGPals: ; e54a3 (39:54a3) ld a, [rSVBK] push af ld a, $5 ld [rSVBK], a + ld hl, BGPals - ld bc, $80 + ld bc, 16 * 8 xor a call ByteFill + pop af ld [rSVBK], a ld a, $1 @@ -1994,83 +2032,99 @@ Functione54a3: ; e54a3 (39:54a3) call DelayFrame ret -Functione54c2: ; e54c2 (39:54c2) +Intro_DecompressRequest2bpp_128Tiles: ; e54c2 (39:54c2) ld a, [rSVBK] push af ld a, $6 ld [rSVBK], a + push de - ld de, w6_d000 + ld de, wDecompressScratch call Decompress pop hl - ld de, w6_d000 - ld bc, $180 + + ld de, wDecompressScratch + lb bc, $01, $80 call Request2bpp + pop af ld [rSVBK], a ret -Functione54de: ; e54de (39:54de) +Intro_DecompressRequest2bpp_255Tiles: ; e54de (39:54de) ld a, [rSVBK] push af ld a, $6 ld [rSVBK], a + push de - ld de, w6_d000 + ld de, wDecompressScratch call Decompress pop hl - ld de, w6_d000 - ld bc, $1ff + + ld de, wDecompressScratch + lb bc, $01, $ff call Request2bpp + pop af ld [rSVBK], a ret -Functione54fa: ; e54fa (39:54fa) +Intro_DecompressRequest2bpp_64Tiles: ; e54fa (39:54fa) ld a, [rSVBK] push af ld a, $6 ld [rSVBK], a + push de - ld de, w6_d000 + ld de, wDecompressScratch call Decompress pop hl - ld de, w6_d000 - ld bc, $140 + + ld de, wDecompressScratch + lb bc, $01, $40 call Request2bpp + pop af ld [rSVBK], a ret -Functione5516: ; e5516 (39:5516) +Intro_ResetLYOverrides: ; e5516 (39:5516) ld a, [rSVBK] push af ld a, $5 ld [rSVBK], a + ld hl, LYOverrides - ld bc, $90 + ld bc, LYOverridesEnd - LYOverrides xor a call ByteFill + pop af ld [rSVBK], a ld a, $43 ld [hLCDStatCustom], a ret -Functione552f: ; e552f (39:552f) +Intro_PerspectiveScrollBG: ; e552f (39:552f) ld a, [rSVBK] push af ld a, $5 ld [rSVBK], a - ld a, [wcf64] + ; Scroll the grass every frame. + ; Scroll the trees every other frame and at half speed. + ; This creates an illusion of perspective. + ld a, [wIntroSceneFrameCounter] and $1 - jr z, .asm_e5548 + jr z, .skip + ; trees in the back ld hl, LYOverrides ld a, [hl] inc a ld bc, $5f call ByteFill -.asm_e5548 +.skip + ; grass in the front ld hl, LYOverrides + $5f ld a, [hl] rept 2 @@ -2109,62 +2163,77 @@ Palette_e5edd: ; e5edd RGB 20, 20, 20 RGB 11, 11, 11 RGB 0, 0, 0 + RGB 0, 4, 5 RGB 1, 8, 5 RGB 4, 12, 9 RGB 24, 12, 9 + RGB 0, 4, 5 RGB 9, 6, 8 RGB 8, 16, 5 RGB 5, 10, 4 + RGB 31, 31, 31 RGB 9, 6, 8 RGB 18, 9, 9 RGB 13, 8, 9 + RGB 31, 31, 31 RGB 20, 20, 20 RGB 11, 11, 11 RGB 0, 0, 0 + RGB 31, 31, 31 RGB 20, 20, 20 RGB 11, 11, 11 RGB 0, 0, 0 + RGB 31, 31, 31 RGB 20, 20, 20 RGB 11, 11, 11 RGB 0, 0, 0 + RGB 31, 31, 31 RGB 20, 20, 20 RGB 11, 11, 11 RGB 0, 0, 0 + RGB 31, 31, 31 RGB 31, 31, 31 RGB 2, 5, 22 RGB 1, 5, 12 + RGB 31, 31, 31 RGB 31, 10, 25 RGB 31, 21, 0 RGB 0, 0, 0 + RGB 31, 31, 31 RGB 20, 20, 20 RGB 11, 21, 31 RGB 0, 0, 0 + RGB 31, 31, 31 RGB 20, 20, 20 RGB 11, 11, 11 RGB 0, 0, 0 + RGB 31, 31, 31 RGB 20, 20, 20 RGB 11, 11, 11 RGB 0, 0, 0 + RGB 31, 31, 31 RGB 20, 20, 20 RGB 11, 11, 11 RGB 0, 0, 0 + RGB 31, 31, 31 RGB 20, 20, 20 RGB 11, 11, 11 RGB 0, 0, 0 + RGB 31, 31, 31 RGB 20, 20, 20 RGB 11, 11, 11 @@ -2207,62 +2276,77 @@ Palette_365ad: ; e65ad RGB 0, 0, 0 RGB 0, 0, 0 RGB 0, 0, 0 + RGB 0, 0, 0 RGB 0, 0, 0 RGB 0, 0, 0 RGB 0, 0, 0 + RGB 0, 0, 0 RGB 0, 0, 0 RGB 0, 0, 0 RGB 0, 0, 0 + RGB 0, 0, 0 RGB 0, 0, 0 RGB 0, 0, 0 RGB 0, 0, 0 + RGB 0, 0, 0 RGB 0, 0, 0 RGB 0, 0, 0 RGB 0, 0, 0 + RGB 0, 0, 0 RGB 0, 0, 0 RGB 0, 0, 0 RGB 0, 0, 0 + RGB 0, 0, 0 RGB 0, 0, 0 RGB 0, 0, 0 RGB 0, 0, 0 + RGB 0, 0, 0 RGB 0, 0, 0 RGB 0, 0, 0 RGB 0, 0, 0 + RGB 31, 31, 31 RGB 10, 0, 10 RGB 19, 0, 19 RGB 31, 0, 31 + RGB 31, 31, 31 RGB 20, 20, 20 RGB 11, 11, 11 RGB 0, 0, 0 + RGB 31, 31, 31 RGB 20, 20, 20 RGB 11, 11, 11 RGB 0, 0, 0 + RGB 31, 31, 31 RGB 20, 20, 20 RGB 11, 11, 11 RGB 0, 0, 0 + RGB 31, 31, 31 RGB 20, 20, 20 RGB 11, 11, 11 RGB 0, 0, 0 + RGB 31, 31, 31 RGB 20, 20, 20 RGB 11, 11, 11 RGB 0, 0, 0 + RGB 31, 31, 31 RGB 20, 20, 20 RGB 11, 11, 11 RGB 0, 0, 0 + RGB 31, 31, 31 RGB 20, 20, 20 RGB 11, 11, 11 @@ -2285,62 +2369,77 @@ Palette_e679d: ; e679d RGB 31, 31, 31 RGB 31, 31, 31 RGB 31, 31, 31 + RGB 31, 31, 31 RGB 31, 31, 31 RGB 31, 31, 31 RGB 31, 31, 31 + RGB 31, 31, 31 RGB 31, 31, 31 RGB 31, 31, 31 RGB 31, 31, 31 + RGB 31, 31, 31 RGB 31, 31, 31 RGB 31, 31, 31 RGB 31, 31, 31 + RGB 31, 31, 31 RGB 31, 31, 31 RGB 31, 31, 31 RGB 31, 31, 31 + RGB 31, 31, 31 RGB 31, 31, 31 RGB 31, 31, 31 RGB 31, 31, 31 + RGB 31, 31, 31 RGB 31, 31, 31 RGB 31, 31, 31 RGB 31, 31, 31 + RGB 31, 31, 31 RGB 31, 31, 31 RGB 31, 31, 31 RGB 31, 31, 31 + RGB 31, 31, 31 RGB 20, 20, 20 RGB 11, 11, 11 RGB 0, 0, 0 + RGB 31, 31, 31 RGB 20, 20, 20 RGB 11, 11, 11 RGB 0, 0, 0 + RGB 31, 31, 31 RGB 20, 20, 20 RGB 11, 11, 11 RGB 0, 0, 0 + RGB 31, 31, 31 RGB 20, 20, 20 RGB 11, 11, 11 RGB 0, 0, 0 + RGB 31, 31, 31 RGB 20, 20, 20 RGB 11, 11, 11 RGB 0, 0, 0 + RGB 31, 31, 31 RGB 20, 20, 20 RGB 11, 11, 11 RGB 0, 0, 0 + RGB 31, 31, 31 RGB 20, 20, 20 RGB 11, 11, 11 RGB 0, 0, 0 + RGB 31, 31, 31 RGB 20, 20, 20 RGB 11, 11, 11 @@ -2363,62 +2462,77 @@ Palette_e6d6d: ; e6d6d RGB 20, 20, 20 RGB 11, 11, 11 RGB 0, 0, 0 + RGB 24, 12, 9 RGB 31, 31, 31 RGB 8, 9, 31 RGB 0, 0, 0 + RGB 24, 12, 9 RGB 12, 20, 31 RGB 19, 8, 31 RGB 0, 0, 0 + RGB 12, 20, 31 RGB 8, 9, 31 RGB 19, 8, 31 RGB 0, 0, 0 + RGB 31, 31, 31 RGB 12, 20, 31 RGB 8, 9, 31 RGB 0, 0, 0 + RGB 31, 31, 31 RGB 20, 20, 20 RGB 11, 11, 11 RGB 0, 0, 0 + RGB 31, 31, 31 RGB 20, 20, 20 RGB 11, 11, 11 RGB 0, 0, 0 + RGB 31, 31, 31 RGB 20, 20, 20 RGB 11, 11, 11 RGB 0, 0, 0 + RGB 31, 31, 31 RGB 20, 20, 20 RGB 11, 11, 11 RGB 0, 0, 0 + RGB 31, 31, 31 RGB 20, 20, 20 RGB 11, 11, 11 RGB 0, 0, 0 + RGB 31, 31, 31 RGB 20, 20, 20 RGB 11, 11, 11 RGB 0, 0, 0 + RGB 31, 31, 31 RGB 20, 20, 20 RGB 11, 11, 11 RGB 0, 0, 0 + RGB 31, 31, 31 RGB 20, 20, 20 RGB 11, 11, 11 RGB 0, 0, 0 + RGB 31, 31, 31 RGB 20, 20, 20 RGB 11, 11, 11 RGB 0, 0, 0 + RGB 31, 31, 31 RGB 20, 20, 20 RGB 11, 11, 11 RGB 0, 0, 0 + RGB 31, 31, 31 RGB 20, 20, 20 RGB 11, 11, 11 @@ -2453,62 +2567,77 @@ Palette_e77dd: ; e77dd RGB 20, 20, 20 RGB 11, 11, 11 RGB 0, 0, 0 + RGB 24, 12, 9 RGB 31, 31, 31 RGB 8, 9, 31 RGB 0, 0, 0 + RGB 24, 12, 9 RGB 24, 12, 9 RGB 24, 12, 9 RGB 24, 12, 9 + RGB 24, 12, 9 RGB 24, 12, 9 RGB 24, 12, 9 RGB 24, 12, 9 + RGB 24, 12, 9 RGB 24, 12, 9 RGB 24, 12, 9 RGB 24, 12, 9 + RGB 24, 12, 9 RGB 24, 12, 9 RGB 24, 12, 9 RGB 24, 12, 9 + RGB 24, 12, 9 RGB 24, 12, 9 RGB 24, 12, 9 RGB 24, 12, 9 + RGB 24, 12, 9 RGB 24, 12, 9 RGB 24, 12, 9 RGB 24, 12, 9 + RGB 31, 31, 31 RGB 31, 31, 31 RGB 12, 0, 31 RGB 0, 0, 0 + RGB 31, 31, 31 RGB 21, 9, 0 RGB 21, 9, 0 RGB 0, 0, 0 + RGB 31, 31, 31 RGB 20, 20, 20 RGB 11, 11, 11 RGB 0, 0, 0 + RGB 31, 31, 31 RGB 20, 20, 20 RGB 11, 11, 11 RGB 0, 0, 0 + RGB 31, 31, 31 RGB 20, 20, 20 RGB 11, 11, 11 RGB 0, 0, 0 + RGB 31, 31, 31 RGB 20, 20, 20 RGB 11, 11, 11 RGB 0, 0, 0 + RGB 31, 31, 31 RGB 20, 20, 20 RGB 11, 11, 11 RGB 0, 0, 0 + RGB 31, 31, 31 RGB 20, 20, 20 RGB 11, 11, 11 @@ -2518,14 +2647,12 @@ IntroUnownBackGFX: ; e785d INCBIN "gfx/intro/unown_back.2bpp.lz" ; e799d -GFX_e799d: ; e799d -INCBIN "gfx/unknown/0e799d.2bpp" -GFX_e79dd: ; e79dd -INCBIN "gfx/unknown/0e79dd.2bpp" -GFX_e7a1d: ; e7a1d -INCBIN "gfx/unknown/0e7a1d.2bpp" - -GFX_e7a5d: ; e7a5d -INCBIN "gfx/unknown/0e7a5d.2bpp" - +IntroGrass1GFX: ; e799d +INCBIN "gfx/intro/grass1.2bpp" +IntroGrass2GFX: ; e79dd +INCBIN "gfx/intro/grass2.2bpp" +IntroGrass3GFX: ; e7a1d +INCBIN "gfx/intro/grass3.2bpp" +IntroGrass4GFX: ; e7a5d +INCBIN "gfx/intro/grass4.2bpp" diff --git a/engine/debug.asm b/engine/debug.asm index 0d2720990..10e446b75 100755 --- a/engine/debug.asm +++ b/engine/debug.asm @@ -395,7 +395,7 @@ Function81adb: ; 81adb hlcoord 4, 1 call PlaceString xor a - ld [wc2c6], a + ld [wBoxAlignment], a hlcoord 12, 3 call _PrepMonFrontpic ld de, VTiles2 tile $31 @@ -425,7 +425,7 @@ Function81adb: ; 81adb .asm_81b7a ld a, [wd265] ld [TrainerClass], a - callab Function3957b + callab GetTrainerAttributes ld de, StringBuffer1 hlcoord 4, 1 call PlaceString @@ -542,7 +542,7 @@ Function81c33: ; 81c33 ret .asm_81c69 - ld hl, wcda9 + ld hl, wSGBPals ld a, $1 ld [hli], a ld a, $ff @@ -562,7 +562,7 @@ rept 2 ld [hli], a endr ld [hl], a - ld hl, wcda9 + ld hl, wSGBPals call Function81f0c hlcoord 10, 2 ld de, wc608 @@ -828,7 +828,7 @@ Function81df4: ; 81df4 ld [wd265], a predef GetTMHMMove ld a, [wd265] - ld [wd262], a + ld [wPutativeTMHMMove], a call GetMoveName hlcoord 10, 12 call PlaceString @@ -1149,7 +1149,7 @@ TilesetColorTest: ld [hMapAnims], a call ClearSprites call OverworldTextModeSwitch - call Function3200 + call WaitBGMap2 xor a ld [hBGMapMode], a ld de, DebugColorTestGFX + $10 @@ -1184,7 +1184,7 @@ TilesetColorTest: call Function821d2 call Function821f4 call Function8220f - call Function3200 + call WaitBGMap2 ld [wJumptableIndex], a ld a, $40 ld [hWY], a diff --git a/engine/decorations.asm b/engine/decorations.asm index 1fa5cac7e..22b6272a7 100755 --- a/engine/decorations.asm +++ b/engine/decorations.asm @@ -6,21 +6,21 @@ InitDecorations: ; 26751 (9:6751) ret _KrisDecorationMenu: ; 0x2675c - ld a, [wcf76] + ld a, [wWhichIndexSet] push af ld hl, .MenuDataHeader call LoadMenuDataHeader xor a - ld [wd1ee], a + ld [Buffer5], a ld a, $1 - ld [wd1ef], a + ld [Buffer6], a .top_loop - ld a, [wd1ef] + ld a, [Buffer6] ld [wMenuCursorBuffer], a call .FindCategoriesWithOwnedDecos call DoNthMenu - ld a, [MenuSelection2] - ld [wd1ef], a + ld a, [wMenuCursorY] + ld [Buffer6], a jr c, .exit_menu ld a, [MenuSelection] ld hl, .pointers @@ -30,8 +30,8 @@ _KrisDecorationMenu: ; 0x2675c .exit_menu call ExitMenu pop af - ld [wcf76], a - ld a, [wd1ee] + ld [wWhichIndexSet], a + ld a, [Buffer5] ld c, a ret ; 0x2679a @@ -74,7 +74,7 @@ _KrisDecorationMenu: ; 0x2675c .FindCategoriesWithOwnedDecos: ; 26806 xor a - ld [wcf76], a + ld [wWhichIndexSet], a call .ClearStringBuffer2 call .FindOwndDecos ld a, 7 @@ -374,7 +374,7 @@ PopulateDecoCategoryMenu: ; 2695b cp 8 jr nc, .beyond_eight xor a - ld [wcf76], a + ld [wWhichIndexSet], a ld hl, .NonscrollingMenuDataHeader call LoadMenuDataHeader call DoNthMenu @@ -400,8 +400,8 @@ PopulateDecoCategoryMenu: ; 2695b call InitScrollingMenu xor a ld [wMenuScrollPosition], a - call HandleScrollingMenu - ld a, [wcf73] + call ScrollingMenu + ld a, [wMenuJoypad] cp 2 jr z, .no_action_2 call DoDecorationAction2 @@ -803,7 +803,7 @@ DecoAction_TrySetItUp: ; 26d2d call DecoAction_SetItUp jr c, .failed ld a, 1 - ld [wd1ee], a + ld [Buffer5], a pop hl ld a, [MenuSelection] ld [hl], a @@ -865,7 +865,7 @@ DecoAction_TryPutItAway: ; 26d86 jr z, .nothingthere ; Put it away. ld a, $1 - ld [wd1ee], a + ld [Buffer5], a ld a, [Buffer1] ld [MenuSelection], a ld hl, StringBuffer3 @@ -889,7 +889,7 @@ DecoAction_setupornament: ; 26db3 call DecoAction_SetItUp_Ornament jr c, .cancel ld a, $1 - ld [wd1ee], a + ld [Buffer5], a jr DecoAction_FinishUp_Ornament .cancel @@ -981,7 +981,7 @@ DecoAction_PutItAway_Ornament: ; 26e46 ld hl, StringBuffer3 call GetDecorationName ld a, $1 - ld [wd1ee], a + ld [Buffer5], a xor a ld [wd1ec], a ld hl, DecoText_PutAwayTheDeco @@ -1009,7 +1009,7 @@ DecoAction_AskWhichSide: ; 26e70 call ExitMenu call CopyMenuData2 jr c, .nope - ld a, [MenuSelection2] + ld a, [wMenuCursorY] cp 3 jr z, .nope ld [Buffer2], a @@ -1244,11 +1244,11 @@ DecorationDesc_PosterPointers: ; 26f84 ; 26f91 DecorationDesc_TownMapPoster: ; 0x26f91 - loadfont + opentext writetext .TownMapText - closetext + waitbutton special Special_TownMap - loadmovesprites + closetext end ; 0x26f9b diff --git a/engine/dummy_game.asm b/engine/dummy_game.asm index 4e8dad1a3..e10633c88 100755 --- a/engine/dummy_game.asm +++ b/engine/dummy_game.asm @@ -10,7 +10,7 @@ Functione1e67: ; e1e67 (38:5e67) call DisableLCD ld b, SCGB_08 call GetSGBLayout - callab Function8cf53 + callab ClearSpriteAnims ld hl, LZ_e2221 ld de, VTiles2 tile $00 call Decompress @@ -39,7 +39,7 @@ Functione1e67: ; e1e67 (38:5e67) ld a, $e4 call DmgToCgbBGPals ld a, $e0 - call Functioncf8 + call DmgToCgbObjPal0 ret Functione1ebb: ; e1ebb (38:5ebb) @@ -47,7 +47,7 @@ Functione1ebb: ; e1ebb (38:5ebb) bit 7, a jr nz, .asm_e1ed0 call Functione1ed2 - callab Function8cf69 + callab PlaySpriteAnimations call DelayFrame and a ret @@ -89,7 +89,7 @@ Functione1ef3: ; e1ef3 ; e1efb Functione1efb: ; e1efb - call Functione00ed + call ret_e00ed jr nc, .asm_e1f06 ld hl, wJumptableIndex set 7, [hl] @@ -251,7 +251,7 @@ Functione1fcc: ; e1fcc inc [hl] Functione2000: ; e2000 - call Functione00ed + call ret_e00ed jr nc, .asm_e200b ld hl, wJumptableIndex set 7, [hl] @@ -416,7 +416,7 @@ Functione20e5: ; e20e5 ; e2101 Functione2101: ; e2101 - ld a, [MenuSelection2] + ld a, [wMenuCursorY] dec a ld l, a ld h, 0 diff --git a/engine/events.asm b/engine/events.asm index 40e863cdc..4dbe202cd 100644 --- a/engine/events.asm +++ b/engine/events.asm @@ -1,6 +1,5 @@ INCLUDE "includes.asm" - SECTION "Events", ROMX, BANK[EVENTS] OverworldLoop:: ; 966b0 @@ -23,7 +22,6 @@ OverworldLoop:: ; 966b0 dw .done ; 966cb - DisableEvents: ; 966cb xor a ld [ScriptFlags3], a @@ -114,21 +112,16 @@ CheckWildEncountersScriptFlag: ; 9671e ret ; 96724 - StartMap: ; 96724 xor a ld [ScriptVar], a xor a ld [ScriptRunning], a ld hl, MapStatus - ld bc, $3e ; 62 + ld bc, wMapStatusEnd - MapStatus call ByteFill callba InitCallReceiveDelay call ClearJoypad - ; fallthrough -; 9673e - - EnterMap: ; 9673e xor a ld [wd453], a @@ -157,17 +150,15 @@ EnterMap: ; 9673e ret ; 9676d - -Function9676d: ; 9676d +UnusedWait30Frames: ; 9676d ld c, 30 call DelayFrames ret ; 96773 - HandleMap: ; 96773 call ResetOverworldDelay - call Function967c1 + call HandleMapTimeAndJoypad callba HandleCmdQueue ; no need to farcall call MapEvents @@ -183,7 +174,6 @@ HandleMap: ; 96773 ret ; 96795 - MapEvents: ; 96795 ld a, [MapEventStatus] ld hl, .jumps @@ -206,7 +196,6 @@ MapEvents: ; 96795 ret ; 967af - MaxOverworldDelay: ; 967af db 2 ; 967b0 @@ -226,7 +215,7 @@ NextOverworldFrame: ; 967b7 ret ; 967c1 -Function967c1: ; 967c1 +HandleMapTimeAndJoypad: ; 967c1 ld a, [MapEventStatus] cp 1 ; no events ret z @@ -281,7 +270,6 @@ Function96812: ; 96812 ret ; 9681f - PlayerEvents: ; 9681f xor a @@ -313,7 +301,6 @@ PlayerEvents: ; 9681f xor a ret - .ok push af callba EnableScriptMode @@ -335,7 +322,6 @@ PlayerEvents: ; 9681f ret ; 96867 - CheckTrainerBattle3: ; 96867 nop nop @@ -351,7 +337,6 @@ CheckTrainerBattle3: ; 96867 ret ; 96874 - CheckTileEvent: ; 96874 ; Check for warps, tile triggers or wild battles. @@ -418,7 +403,6 @@ CheckTileEvent: ; 96874 ret ; 968c7 - CheckWildEncounterCooldown:: ; 968c7 ld hl, wWildEncounterCooldown ld a, [hl] @@ -491,11 +475,11 @@ endr bit 3, [hl] jr z, .nope - ld hl, ScriptDelay + 2 + ld hl, wPriorityScriptAddr ld a, [hli] ld h, [hl] ld l, a - ld a, [ScriptDelay + 1] + ld a, [wPriorityScriptBank] call CallScript scf ret @@ -543,7 +527,6 @@ CheckTimeEvents: ; 9693a ret ; 96974 - OWPlayerInput: ; 96974 call PlayerMovement @@ -573,7 +556,6 @@ OWPlayerInput: ; 96974 ret ; 96999 - CheckAPressOW: ; 96999 ld a, [hJoyPressed] and A_BUTTON @@ -588,7 +570,6 @@ CheckAPressOW: ; 96999 ret ; 969ac - PlayTalkObject: ; 969ac push de ld de, SFX_READ_TEXT_2 @@ -597,7 +578,6 @@ PlayTalkObject: ; 969ac ret ; 969b5 - TryObjectEvent: ; 969b5 callba CheckFacingObject jr c, .IsObject @@ -641,7 +621,7 @@ TryObjectEvent: ; 969b5 .pointers dbw PERSONTYPE_SCRIPT, .script - dbw PERSONTYPE_ITEMFRAGMENT, .itemfragment + dbw PERSONTYPE_ITEMBALL, .itemball dbw PERSONTYPE_TRAINER, .trainer ; the remaining four are dummy events dbw PERSONTYPE_3, .three @@ -662,7 +642,7 @@ TryObjectEvent: ; 969b5 ret ; 96a12 -.itemfragment ; 96a12 +.itemball ; 96a12 ld hl, MAPOBJECT_SCRIPT_POINTER add hl, bc ld a, [hli] @@ -704,7 +684,6 @@ TryObjectEvent: ; 969b5 ret ; 96a38 - TryReadSign: ; 96a38 call CheckFacingSign jr c, .IsSign @@ -767,8 +746,8 @@ TryReadSign: ; 96a38 ld de, EngineBuffer1 ld bc, 3 call FarCopyBytes - ld a, BANK(SignpostItemScript) - ld hl, SignpostItemScript + ld a, BANK(HiddenItemScript) + ld hl, HiddenItemScript call CallScript scf ret @@ -810,7 +789,6 @@ endr ret ; 96ad8 - CheckSignFlag: ; 96ad8 ld hl, EngineBuffer4 ld a, [hli] @@ -829,7 +807,6 @@ CheckSignFlag: ; 96ad8 ret ; 96af0 - PlayerMovement: ; 96af0 callba DoPlayerMovement ld a, c @@ -896,7 +873,6 @@ PlayerMovement: ; 96af0 ret ; 96b30 - CheckMenuOW: ; 96b30 xor a ld [hMenuReturn], a @@ -928,7 +904,6 @@ CheckMenuOW: ; 96b30 ret ; 96b58 - StartMenuScript: ; 96b58 callasm StartMenu jump StartMenuCallback @@ -956,7 +931,6 @@ SelectMenuCallback: ; 96b66 end ; 96b79 - CountStep: ; 96b79 ; Don't count steps in link communication rooms. ld a, [wLinkMode] @@ -1024,7 +998,6 @@ CountStep: ; 96b79 ret ; 96bd3 - .unreferenced: ; 96bd3 ld a, 7 scf diff --git a/engine/events_2.asm b/engine/events_2.asm index c9b673e81..97e2b76da 100644 --- a/engine/events_2.asm +++ b/engine/events_2.asm @@ -142,7 +142,7 @@ RandomEncounter:: ; 97cc0 ; 97cf9 WildBattleScript: ; 97cf9 - battlecheck + randomwildmon startbattle returnafterbattle end @@ -627,7 +627,7 @@ CmdQueue_StoneTable: ; 97f42 ld hl, OBJECT_MOVEMENTTYPE add hl, de ld a, [hl] - cp STEP_TYPE_19 + cp STEP_TYPE_SKYFALL_TOP jr nz, .next ld hl, OBJECT_NEXT_TILE diff --git a/engine/events_3.asm b/engine/events_3.asm index f9f8ffedc..686a794b7 100755 --- a/engine/events_3.asm +++ b/engine/events_3.asm @@ -276,7 +276,7 @@ endr ret ; b8172 -CheckForSignpostItems: ; b8172 +CheckForHiddenItems: ; b8172 ; Checks to see if there are hidden items on the screen that have not yet been found. If it finds one, returns carry. call GetMapScriptHeaderBank ld [Buffer1], a diff --git a/engine/evolution_animation.asm b/engine/evolution_animation.asm index 835db8b52..1561c70fa 100755 --- a/engine/evolution_animation.asm +++ b/engine/evolution_animation.asm @@ -9,7 +9,7 @@ EvolutionAnimation: ; 4e5e1 ld a, [BaseDexNo] push af - call _EvolutionAnimation + call .EvolutionAnimation pop af ld [BaseDexNo], a @@ -21,7 +21,7 @@ EvolutionAnimation: ; 4e5e1 pop de pop hl - ld a, [wd1ed] + ld a, [Buffer4] and a ret z @@ -29,18 +29,18 @@ EvolutionAnimation: ; 4e5e1 ret ; 4e607 -_EvolutionAnimation: ; 4e607 +.EvolutionAnimation: ; 4e607 ld a, $e4 ld [rOBP0], a ld de, MUSIC_NONE call PlayMusic - callba Function8cf53 + callba ClearSpriteAnims - ld de, EvolutionGFX + ld de, .GFX ld hl, VTiles0 - lb bc, BANK(EvolutionGFX), 8 + lb bc, BANK(.GFX), 8 call Request2bpp xor a @@ -76,7 +76,7 @@ _EvolutionAnimation: ; 4e607 ld a, $1 ld [hBGMapMode], a - call Function4e794 + call .check_statused jr c, .skip_cry ld a, [Buffer1] @@ -99,22 +99,22 @@ _EvolutionAnimation: ; 4e607 call .ReplaceFrontpic xor a - ld [wd1ed], a + ld [Buffer4], a ld a, [Buffer2] ld [PlayerHPPal], a ld c, $0 call .GetSGBLayout - call Function4e7a6 - callba Function8cf53 - call Function4e794 - jr c, .asm_4e6de + call .PlayEvolvedSFX + callba ClearSpriteAnims + call .check_statused + jr c, .no_anim - ld a, [wc2c6] + ld a, [wBoxAlignment] push af ld a, $1 - ld [wc2c6], a + ld [wBoxAlignment], a ld a, [CurPartySpecies] push af @@ -128,24 +128,24 @@ _EvolutionAnimation: ; 4e607 pop af ld [CurPartySpecies], a pop af - ld [wc2c6], a + ld [wBoxAlignment], a ret -.asm_4e6de +.no_anim ret .cancel_evo ld a, $1 - ld [wd1ed], a + ld [Buffer4], a ld a, [Buffer1] ld [PlayerHPPal], a ld c, $0 call .GetSGBLayout - call Function4e7a6 - callba Function8cf53 - call Function4e794 + call .PlayEvolvedSFX + callba ClearSpriteAnims + call .check_statused ret c ld a, [PlayerHPPal] @@ -167,11 +167,11 @@ _EvolutionAnimation: ; 4e607 .LoadFrontpic: ; 4e711 call GetBaseData ld a, $1 - ld [wc2c6], a + ld [wBoxAlignment], a ld de, VTiles2 predef FrontpicPredef xor a - ld [wc2c6], a + ld [wBoxAlignment], a ret ; 4e726 @@ -252,14 +252,14 @@ endr ret .pressed_b - ld a, [wd1e9] + ld a, [wForceEvolution] and a jr nz, .loop3 scf ret ; 4e794 -Function4e794: ; 4e794 +.check_statused: ; 4e794 ld a, [CurPartyMon] ld hl, PartyMon1Species call GetPartyLocation @@ -269,8 +269,8 @@ Function4e794: ; 4e794 ret ; 4e7a6 -Function4e7a6: ; 4e7a6 - ld a, [wd1ed] +.PlayEvolvedSFX: ; 4e7a6 + ld a, [Buffer4] and a ret nz ld de, SFX_EVOLVED @@ -279,70 +279,70 @@ Function4e7a6: ; 4e7a6 ld a, [hl] push af ld [hl], $0 -.loop - call Function4e7cf +.loop4 + call .balls_of_light jr nc, .done - call Function4e80c - jr .loop + call .AnimateBallsOfLight + jr .loop4 .done - ld c, $20 -.loop2 - call Function4e80c + ld c, 32 +.loop5 + call .AnimateBallsOfLight dec c - jr nz, .loop2 + jr nz, .loop5 pop af ld [wJumptableIndex], a ret ; 4e7cf -Function4e7cf: ; 4e7cf +.balls_of_light: ; 4e7cf ld hl, wJumptableIndex ld a, [hl] - cp $20 + cp 32 ret nc ld d, a inc [hl] and $1 - jr nz, .asm_4e7e6 + jr nz, .done_balls ld e, $0 - call Function4e7e8 + call .GenerateBallOfLight ld e, $10 - call Function4e7e8 + call .GenerateBallOfLight -.asm_4e7e6 +.done_balls scf ret ; 4e7e8 -Function4e7e8: ; 4e7e8 +.GenerateBallOfLight: ; 4e7e8 push de - lb de, $48, $58 - ld a, $13 + depixel 9, 11 + ld a, SPRITE_ANIM_INDEX_13 call _InitSpriteAnimStruct - ld hl, $b + ld hl, SPRITEANIMSTRUCT_0B add hl, bc ld a, [wJumptableIndex] - and $e + and %1110 sla a pop de add e ld [hl], a - ld hl, $3 + ld hl, SPRITEANIMSTRUCT_TILE_ID add hl, bc ld [hl], $0 - ld hl, $c + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld [hl], $10 ret ; 4e80c -Function4e80c: ; 4e80c +.AnimateBallsOfLight: ; 4e80c push bc - callab Function8cf69 + callab PlaySpriteAnimations ; a = (([hVBlankCounter] + 4) / 2) % NUM_PALETTES ld a, [hVBlankCounter] - and $e + and %1110 srl a rept 2 inc a @@ -351,7 +351,7 @@ endr ld b, a ld hl, Sprites + 3 ; attributes ld c, 40 -.loop +.loop6 ld a, [hl] or b ld [hli], a @@ -359,98 +359,13 @@ rept 3 inc hl endr dec c - jr nz, .loop + jr nz, .loop6 pop bc call DelayFrame ret ; 4e831 -EvolutionGFX: +.GFX: INCBIN "gfx/evo/bubble_large.2bpp" INCBIN "gfx/evo/bubble.2bpp" - -Function4e881: ; 4e881 - call ClearBGPalettes - call ClearTileMap - call ClearSprites - call DisableLCD - call LoadStandardFont - call LoadFontsBattleExtra - hlbgcoord 0, 0 - ld bc, VBGMap1 - VBGMap0 - ld a, " " - call ByteFill - hlcoord 0, 0, AttrMap - ld bc, SCREEN_WIDTH * SCREEN_HEIGHT - xor a - call ByteFill - xor a - ld [hSCY], a - ld [hSCX], a - call EnableLCD - ld hl, UnknownText_0x4e8bd - call PrintText - call Function3200 - call SetPalettes - ret -; 4e8bd - -UnknownText_0x4e8bd: ; 0x4e8bd - ; SAVING RECORD… DON'T TURN OFF! - text_jump UnknownText_0x1bd39e - db "@" -; 0x4e8c2 - - -Function4e8c2: ; 4e8c2 - call ClearBGPalettes - call ClearTileMap - call ClearSprites - call DisableLCD - call LoadStandardFont - call LoadFontsBattleExtra - hlbgcoord 0, 0 - ld bc, VBGMap1 - VBGMap0 - ld a, " " - call ByteFill - hlcoord 0, 0, AttrMap - ld bc, SCREEN_WIDTH * SCREEN_HEIGHT - xor a - call ByteFill - ld hl, wd000 - ld c, $40 -.asm_4e8ee - ld a, -1 - ld [hli], a - ld a, " " - ld [hli], a - dec c - jr nz, .asm_4e8ee - xor a - ld [hSCY], a - ld [hSCX], a - call EnableLCD - call Function3200 - call SetPalettes - ret -; 4e906 - -Function4e906: ; 4e906 - ld a, [rSVBK] - push af - ld a, $6 - ld [rSVBK], a - ld hl, w6_d000 - ld bc, w6_d400 - w6_d000 - ld a, " " - call ByteFill - hlbgcoord 0, 0 - ld de, w6_d000 - ld b, $0 - ld c, $40 - call Request2bpp - pop af - ld [rSVBK], a - ret -; 4e929 diff --git a/engine/evolve.asm b/engine/evolve.asm index 6772db932..4a959529a 100755 --- a/engine/evolve.asm +++ b/engine/evolve.asm @@ -78,7 +78,7 @@ endr cp EVOLVE_ITEM jp z, .item - ld a, [wd1e9] + ld a, [wForceEvolution] and a jp nz, .dont_evolve_2 @@ -179,7 +179,7 @@ endr cp b jp nz, .dont_evolve_3 - ld a, [wd1e9] + ld a, [wForceEvolution] and a jp z, .dont_evolve_3 ld a, [wLinkMode] @@ -485,7 +485,7 @@ endr .learn ld a, d - ld [wd262], a + ld [wPutativeTMHMMove], a ld [wd265], a call GetMoveName call CopyName1 diff --git a/engine/fruit_trees.asm b/engine/fruit_trees.asm index 28e6e8cec..cbbe5faaf 100644 --- a/engine/fruit_trees.asm +++ b/engine/fruit_trees.asm @@ -1,15 +1,15 @@ FruitTreeScript:: ; 44000 callasm GetCurTreeFruit - loadfont + opentext copybytetovar CurFruit itemtotext $0, $0 writetext FruitBearingTreeText - keeptextopen + buttonsound callasm TryResetFruitTrees callasm CheckFruitTree iffalse .fruit writetext NothingHereText - closetext + waitbutton jump .end .fruit @@ -17,7 +17,7 @@ FruitTreeScript:: ; 44000 copybytetovar CurFruit giveitem ITEM_FROM_MEM iffalse .packisfull - keeptextopen + buttonsound writetext ObtainedFruitText callasm PickedFruitTree specialsound @@ -25,12 +25,12 @@ FruitTreeScript:: ; 44000 jump .end .packisfull - keeptextopen + buttonsound writetext FruitPackIsFullText - closetext + waitbutton .end - loadmovesprites + closetext end ; 44041 diff --git a/engine/healmachineanim.asm b/engine/healmachineanim.asm index 174d1ae5a..57f03a8df 100755 --- a/engine/healmachineanim.asm +++ b/engine/healmachineanim.asm @@ -13,7 +13,7 @@ HealMachineAnim: ; 12324 ld [Buffer2], a call .DoJumptableFunctions ld a, [Buffer2] - call Functiond24 + call DmgToCgbObjPal1 ret ; 1233e diff --git a/engine/init_gender.asm b/engine/init_gender.asm new file mode 100755 index 000000000..e4fbfd9e6 --- /dev/null +++ b/engine/init_gender.asm @@ -0,0 +1,115 @@ +InitCrystalData: ; 48000 + ld a, $1 + ld [wd474], a + xor a + ld [wd473], a + ld [PlayerGender], a + ld [wd475], a + ld [wd476], a + ld [wd477], a + ld [wd478], a + ld [wd002], a + ld [wd003], a + ; could have done "ld a, [wd479] \ and %11111100", saved four operations + ld a, [wd479] + res 0, a + ld [wd479], a + ld a, [wd479] + res 1, a + ld [wd479], a + ret +; 4802f + +INCLUDE "misc/mobile_12.asm" + +InitGender: ; 48dcb (12:4dcb) + call InitGenderScreen + call LoadGenderScreenPal + call LoadGenderScreenLightBlueTile + call WaitBGMap2 + call SetPalettes + ld hl, TextJump_AreYouABoyOrAreYouAGirl + call PrintText + ld hl, .MenuDataHeader + call LoadMenuDataHeader + call WaitBGMap2 + call VerticalMenu + call WriteBackup + ld a, [wMenuCursorY] + dec a + ld [PlayerGender], a + ld c, 10 + call DelayFrames + ret +; 48dfc (12:4dfc) + +.MenuDataHeader: ; 0x48dfc + db $40 ; flags + db 04, 06 ; start coords + db 09, 12 ; end coords + dw .MenuData2 + db 1 ; default option +; 0x48e04 + +.MenuData2: ; 0x48e04 + db $a1 ; flags + db 2 ; items + db "Boy@" + db "Girl@" +; 0x48e0f + +TextJump_AreYouABoyOrAreYouAGirl: ; 0x48e0f + ; Are you a boy? Or are you a girl? + text_jump Text_AreYouABoyOrAreYouAGirl + db "@" +; 0x48e14 + +InitGenderScreen: ; 48e14 (12:4e14) + ld a, $10 + ld [MusicFade], a + ld a, $0 + ld [MusicFadeIDLo], a + ld a, $0 + ld [MusicFadeIDHi], a + ld c, 8 + call DelayFrames + call ClearBGPalettes + call InitCrystalData + call LoadFontsExtra + hlcoord 0, 0 + ld bc, SCREEN_HEIGHT * SCREEN_WIDTH + ld a, $0 + call ByteFill + hlcoord 0, 0, AttrMap + ld bc, SCREEN_HEIGHT * SCREEN_WIDTH + xor a + call ByteFill + ret + +LoadGenderScreenPal: ; 48e47 (12:4e47) + ld hl, .Palette + ld de, UnknBGPals + ld bc, 1 palettes + ld a, $5 + call FarCopyWRAM + callba ApplyPals + ret +; 48e5c (12:4e5c) + +.Palette: ; 48e5c + RGB 31, 31, 31 + RGB 09, 30, 31 + RGB 01, 11, 31 + RGB 00, 00, 00 +; 48e64 + +LoadGenderScreenLightBlueTile: ; 48e64 (12:4e64) + ld de, .LightBlueTile + ld hl, VTiles2 tile $00 + lb bc, BANK(.LightBlueTile), 1 + call Get2bpp + ret +; 48e71 (12:4e71) + +.LightBlueTile: ; 48e71 +INCBIN "gfx/intro/gender_screen.2bpp" diff --git a/engine/intro_menu.asm b/engine/intro_menu.asm index cf5bcf8a0..ddc728c4f 100755 --- a/engine/intro_menu.asm +++ b/engine/intro_menu.asm @@ -7,7 +7,7 @@ _MainMenu: ; 5ae8 ld [wMapMusic], a call PlayMusic callba MainMenu - jp Function6219 + jp StartTitleScreen ; 5b04 ; unreferenced @@ -50,7 +50,7 @@ NewGame_ClearTileMapEtc: ; 5b44 call ClearTileMap call LoadFontsExtra call LoadStandardFont - call ResetTextRelatedRAM + call ClearWindowData ret ; 5b54 @@ -353,7 +353,7 @@ LoadOrRegenerateLuckyIDNumber: ; 5d33 Continue: ; 5d65 callba TryLoadSaveFile jr c, .FailToLoad - callba Function150b9 + callba _LoadData call LoadStandardMenuDataHeader call DisplaySaveInfoOnContinue ld a, $1 @@ -450,9 +450,9 @@ ConfirmContinue: ; 5e34 call DelayFrame call GetJoypad ld hl, hJoyPressed - bit 0, [hl] + bit A_BUTTON_F, [hl] jr nz, .PressA - bit 1, [hl] + bit B_BUTTON_F, [hl] jr z, .loop scf ret @@ -545,9 +545,9 @@ Continue_LoadMenuHeader: ; 5ebf ld hl, .MenuDataHeader_NoDex .pokedex_header - call Function1e35 + call _OffsetMenuDataHeader call MenuBox - call Function1c89 + call PlaceVerticalMenuItems ret ; 5ed9 @@ -685,7 +685,7 @@ OakSpeech: ; 0x5f99 ld [TrainerClass], a call Intro_PrepTrainerPic - ld b, SCGB_1C + ld b, SCGB_FRONTPICPALS call GetSGBLayout call Intro_RotatePalettesLeftFrontpic @@ -706,7 +706,7 @@ OakSpeech: ; 0x5f99 ld [TempMonDVs], a ld [TempMonDVs + 1], a - ld b, SCGB_1C + ld b, SCGB_FRONTPICPALS call GetSGBLayout call Intro_WipeInFrontpic @@ -723,7 +723,7 @@ OakSpeech: ; 0x5f99 ld [TrainerClass], a call Intro_PrepTrainerPic - ld b, SCGB_1C + ld b, SCGB_FRONTPICPALS call GetSGBLayout call Intro_RotatePalettesLeftFrontpic @@ -736,7 +736,7 @@ OakSpeech: ; 0x5f99 ld [CurPartySpecies], a callba DrawIntroPlayerPic - ld b, SCGB_1C + ld b, SCGB_FRONTPICPALS call GetSGBLayout call Intro_RotatePalettesLeftFrontpic @@ -783,7 +783,7 @@ OakText7: ; 0x606f NamePlayer: ; 0x6074 callba MovePlayerPicRight callba ShowPlayerNamingChoices - ld a, [MenuSelection2] + ld a, [wMenuCursorY] dec a jr z, .NewName call StorePlayerName @@ -806,7 +806,7 @@ NamePlayer: ; 0x6074 ld [CurPartySpecies], a callba DrawIntroPlayerPic - ld b, SCGB_1C + ld b, SCGB_FRONTPICPALS call GetSGBLayout call RotateThreePalettesLeft @@ -828,8 +828,8 @@ NamePlayer: ; 0x6074 Function60e9: ; Unreferenced call LoadMenuDataHeader - call InterpretMenu2 - ld a, [MenuSelection2] + call VerticalMenu + ld a, [wMenuCursorY] dec a call CopyNameFromMenu call WriteBackup @@ -1003,19 +1003,19 @@ Intro_PlacePlayerSprite: ; 61cd .sprites ; 61fe db 4 - db $4c, $48, 0 - db $4c, $50, 1 - db $54, $48, 2 - db $54, $50, 3 + db 9 * 8 + 4, 9 * 8, 0 + db 9 * 8 + 4, 10 * 8, 1 + db 10 * 8 + 4, 9 * 8, 2 + db 10 * 8 + 4, 10 * 8, 3 ; 620b -Function620b: ; 620b - callab Functione4579 - jr c, Function6219 +CrystalIntroSequence: ; 620b + callab Copyright_GFPresents + jr c, StartTitleScreen callba CrystalIntro -Function6219: ; 6219 +StartTitleScreen: ; 6219 ld a, [rSVBK] push af ld a, $5 @@ -1036,7 +1036,7 @@ Function6219: ; 6219 ld hl, rLCDC res 2, [hl] call ClearScreen - call Function3200 + call WaitBGMap2 xor a ld [hLCDStatCustom], a ld [hSCX], a @@ -1067,9 +1067,9 @@ endr .jumptable dw _MainMenu - dw Function6389 - dw Function620b - dw Function620b + dw DeleteSaveData + dw CrystalIntroSequence + dw CrystalIntroSequence dw ResetClock ; 6274 @@ -1320,8 +1320,8 @@ TitleScreenEnd: ; 6375 ret ; 6389 -Function6389: ; 6389 - callba Function4d54c +DeleteSaveData: ; 6389 + callba _DeleteSaveData jp Init ; 6392 @@ -1336,7 +1336,7 @@ Function639b: ; unreferenced and $3 ret nz ld bc, SpriteAnim10 - ld hl, SpriteAnim10FrameIndex - SpriteAnim10 + ld hl, SPRITEANIMSTRUCT_FRAME add hl, bc ; over-the-top compicated way to load wc3ae into hl ld l, [hl] ld h, 0 @@ -1410,7 +1410,7 @@ CopyrightString: ; 63fd GameInit:: ; 642e callba TryLoadSaveData - call ResetTextRelatedRAM + call ClearWindowData call ClearBGPalettes call ClearTileMap ld a, VBGMap0 / $100 @@ -1423,5 +1423,5 @@ GameInit:: ; 642e ld a, $90 ld [hWY], a call WaitBGMap - jp Function620b + jp CrystalIntroSequence ; 6454 diff --git a/engine/learn.asm b/engine/learn.asm new file mode 100755 index 000000000..e5ffabc62 --- /dev/null +++ b/engine/learn.asm @@ -0,0 +1,257 @@ +LearnMove: ; 6508 + call LoadTileMapToTempTileMap + ld a, [CurPartyMon] + ld hl, PartyMonNicknames + call GetNick + ld hl, StringBuffer1 + ld de, wMonOrItemNameBuffer + ld bc, PKMN_NAME_LENGTH + call CopyBytes + +.loop + ld hl, PartyMon1Moves + ld bc, PARTYMON_STRUCT_LENGTH + ld a, [CurPartyMon] + call AddNTimes + ld d, h + ld e, l + ld b, NUM_MOVES +; Get the first empty move slot. This routine also serves to +; determine whether the Pokemon learning the moves already has +; all four slots occupied, in which case one would need to be +; deleted. +.next + ld a, [hl] + and a + jr z, .learn + inc hl + dec b + jr nz, .next +; If we're here, we enter the routine for forgetting a move +; to make room for the new move we're trying to learn. + push de + call ForgetMove + pop de + jp c, .cancel + + push hl + push de + ld [wd265], a + + ld b, a + ld a, [wBattleMode] + and a + jr z, .not_disabled + ld a, [DisabledMove] + cp b + jr nz, .not_disabled + xor a + ld [DisabledMove], a + ld [PlayerDisableCount], a +.not_disabled + + call GetMoveName + ld hl, UnknownText_0x6684 ; 1, 2 and… + call PrintText + pop de + pop hl + +.learn + ld a, [wPutativeTMHMMove] + ld [hl], a + ld bc, MON_PP - MON_MOVES + add hl, bc + + push hl + push de + dec a + ld hl, Moves + MOVE_PP + ld bc, MOVE_LENGTH + call AddNTimes + ld a, BANK(Moves) + call GetFarByte + pop de + pop hl + + ld [hl], a + + ld a, [wBattleMode] + and a + jp z, .learned + + ld a, [CurPartyMon] + ld b, a + ld a, [CurBattleMon] + cp b + jp nz, .learned + + ld a, [PlayerSubStatus5] + bit SUBSTATUS_TRANSFORMED, a + jp nz, .learned + + ld h, d + ld l, e + ld de, BattleMonMoves + ld bc, NUM_MOVES + call CopyBytes + ld bc, PartyMon1PP - (PartyMon1Moves + NUM_MOVES) + add hl, bc + ld de, BattleMonPP + ld bc, NUM_MOVES + call CopyBytes + jp .learned + +.cancel + ld hl, UnknownText_0x6675 ; Stop learning <MOVE>? + call PrintText + call YesNoBox + jp c, .loop + + ld hl, UnknownText_0x667a ; <MON> did not learn <MOVE>. + call PrintText + ld b, 0 + ret + +.learned + ld hl, UnknownText_0x666b ; <MON> learned <MOVE>! + call PrintText + ld b, 1 + ret +; 65d3 + +ForgetMove: ; 65d3 + push hl + ld hl, UnknownText_0x667f + call PrintText + call YesNoBox + pop hl + ret c + ld bc, -NUM_MOVES + add hl, bc + push hl + ld de, wListMoves_MoveIndicesBuffer + ld bc, NUM_MOVES + call CopyBytes + pop hl +.loop + push hl + ld hl, UnknownText_0x6670 + call PrintText + hlcoord 5, 2 + ld b, NUM_MOVES * 2 + ld c, MOVE_NAME_LENGTH + call TextBox + hlcoord 5 + 2, 2 + 2 + ld a, SCREEN_WIDTH * 2 + ld [Buffer1], a + predef ListMoves + ; wMenuData3 + ld a, $4 + ld [w2DMenuCursorInitY], a + ld a, $6 + ld [w2DMenuCursorInitX], a + ld a, [wNumMoves] + inc a + ld [w2DMenuNumRows], a + ld a, $1 + ld [w2DMenuNumCols], a + ld [wMenuCursorY], a + ld [wMenuCursorX], a + ld a, $3 + ld [wMenuJoypadFilter], a + ld a, $20 + ld [w2DMenuFlags1], a + xor a + ld [w2DMenuFlags2], a + ld a, $20 + ld [w2DMenuCursorOffsets], a + call StaticMenuJoypad + push af + call Call_LoadTempTileMapToTileMap + pop af + pop hl + bit 1, a + jr nz, .cancel + push hl + ld a, [wMenuCursorY] + dec a + ld c, a + ld b, 0 + add hl, bc + ld a, [hl] + push af + push bc + call IsHMMove + pop bc + pop de + ld a, d + jr c, .hmmove + pop hl + add hl, bc + and a + ret + +.hmmove + ld hl, UnknownText_0x669a + call PrintText + pop hl + jr .loop + +.cancel + scf + ret +; 666b + +UnknownText_0x666b: ; 666b +; <MON> learned <MOVE>! + text_jump UnknownText_0x1c5660 + db "@" +; 6670 + +UnknownText_0x6670: ; 6670 +; Which move should be forgotten? + text_jump UnknownText_0x1c5678 + db "@" +; 6675 + +UnknownText_0x6675: ; 6675 +; Stop learning <MOVE>? + text_jump UnknownText_0x1c5699 + db "@" +; 667a + +UnknownText_0x667a: ; 667a +; <MON> did not learn <MOVE>. + text_jump UnknownText_0x1c56af + db "@" +; 667f + +UnknownText_0x667f: ; 667f +; <MON> is trying to learn <MOVE>. But <MON> can't learn more than +; four moves. Delete an older move to make room for <MOVE>? + text_jump UnknownText_0x1c56c9 + db "@" +; 6684 + +UnknownText_0x6684: ; 6684 + text_jump UnknownText_0x1c5740 ; 1, 2 and… + start_asm + push de + ld de, SFX_SWITCH_POKEMON + call PlaySFX + pop de + ld hl, UnknownText_0x6695 + ret +; 6695 + +UnknownText_0x6695: ; 6695 +; Poof! <MON> forgot <MOVE>. And… + text_jump UnknownText_0x1c574e + db "@" +; 669a + +UnknownText_0x669a: ; 669a +; HM moves can't be forgotten now. + text_jump UnknownText_0x1c5772 + db "@" +; 669f diff --git a/engine/link.asm b/engine/link.asm index 8ba1702e9..c7fd9dae3 100755 --- a/engine/link.asm +++ b/engine/link.asm @@ -14,38 +14,38 @@ LinkCommunications: ; 28000 call UpdateSprites call LoadStandardFont call LoadFontsBattleExtra - callba Function16d69a - call Function3200 + callba LinkComms_LoadPleaseWaitTextboxBorderGFX + call WaitBGMap2 hlcoord 3, 8 - ld b, $2 - ld c, $c + ld b, 2 + ld c, 12 ld d, h ld e, l - callba Function4d35b + callba LinkTextbox2 hlcoord 4, 10 - ld de, String28419 + ld de, String_PleaseWait call PlaceString call Function28eff - call Function3200 + call WaitBGMap2 ld hl, wcf5d xor a ld [hli], a ld [hl], $50 ld a, [wLinkMode] cp LINK_TIMECAPSULE - jp nz, Function28177 + jp nz, Gen2ToGen2LinkComms -Function2805d: ; 2805d - call Function28426 - call Function28499 - call Function28434 +TimeCapsule: ; 2805d + call ClearLinkData + call Link_PrepPartyData_Gen1 + call FixDataForLinkTransfer xor a ld [wPlayerLinkAction], a call Function87d ld a, [hLinkPlayerNumber] cp $2 - jr nz, .asm_28091 - ld c, $3 + jr nz, .player_1 + ld c, 3 call DelayFrames xor a ld [hSerialSend], a @@ -61,7 +61,7 @@ Function2805d: ; 2805d ld a, $81 ld [rSC], a -.asm_28091 +.player_1 ld de, MUSIC_NONE call PlayMusic ld c, $3 @@ -76,23 +76,23 @@ Function2805d: ; 2805d call Function75f ld a, $fe ld [de], a - ld hl, OverworldMap - ld de, wd26b + ld hl, wLinkData + ld de, OTPlayerName ld bc, $1a8 call Function75f ld a, $fe ld [de], a - ld hl, wc608 + ld hl, wMisc ld de, wPlayerTrademonSpecies - ld bc, wPlayerTrademonSpecies - wc608 + ld bc, wPlayerTrademonSpecies - wMisc call Function75f xor a ld [rIF], a ld a, $1d ld [rIE], a - call Function287ab - ld hl, wd26b - call Function287ca + call Link_CopyRandomNumbers + ld hl, OTPlayerName + call Link_FindFirstNonControlCharacter_SkipZero push hl ld bc, NAME_LENGTH add hl, bc @@ -102,23 +102,23 @@ Function2805d: ; 2805d jp z, Function28b22 cp $7 jp nc, Function28b22 - ld de, OverworldMap + ld de, wLinkData ld bc, $1a2 - call Function2879e + call Link_CopyOTData ld de, wPlayerTrademonSpecies - ld hl, wc813 + ld hl, wTimeCapsulePartyMon1Species ld c, $2 -.asm_280fe +.loop ld a, [de] inc de and a - jr z, .asm_280fe + jr z, .loop cp $fd - jr z, .asm_280fe + jr z, .loop cp $fe - jr z, .asm_280fe + jr z, .loop cp $ff - jr z, .asm_2811d + jr z, .next push hl push bc ld b, $0 @@ -129,24 +129,24 @@ Function2805d: ; 2805d ld [hl], a pop bc pop hl - jr .asm_280fe + jr .loop -.asm_2811d +.next ld hl, wc90f dec c - jr nz, .asm_280fe - ld hl, OverworldMap - ld de, wd26b + jr nz, .loop + ld hl, wLinkPlayerName + ld de, OTPlayerName ld bc, NAME_LENGTH call CopyBytes ld de, OTPartyCount ld a, [hli] ld [de], a inc de -.asm_28135 +.party_loop ld a, [hli] - cp $ff - jr z, .asm_2814e + cp -1 + jr z, .done_party ld [wd265], a push hl push de @@ -156,11 +156,11 @@ Function2805d: ; 2805d ld a, [wd265] ld [de], a inc de - jr .asm_28135 + jr .party_loop -.asm_2814e +.done_party ld [de], a - ld hl, wc813 + ld hl, wTimeCapsulePartyMon1Species call Function2868a ld a, OTPartyMonOT % $100 ld [wd102], a @@ -174,21 +174,21 @@ Function2805d: ; 2805d call z, DelayFrames ld de, MUSIC_ROUTE_30 call PlayMusic - jp Function287e3 + jp InitTradeMenuDisplay ; 28177 -Function28177: ; 28177 - call Function28426 - call Function28595 - call Function28434 +Gen2ToGen2LinkComms: ; 28177 + call ClearLinkData + call Link_PrepPartyData_Gen2 + call FixDataForLinkTransfer call Function29dba ld a, [ScriptVar] and a jp z, Function283b2 ld a, [hLinkPlayerNumber] cp $2 - jr nz, .asm_281ae - ld c, $3 + jr nz, .Player1 + ld c, 3 call DelayFrames xor a ld [hSerialSend], a @@ -204,10 +204,10 @@ Function28177: ; 28177 ld a, $81 ld [rSC], a -.asm_281ae +.Player1 ld de, MUSIC_NONE call PlayMusic - ld c, $3 + ld c, 3 call DelayFrames xor a ld [rIF], a @@ -219,51 +219,51 @@ Function28177: ; 28177 call Function75f ld a, $fe ld [de], a - ld hl, OverworldMap - ld de, wd26b + ld hl, wLinkData + ld de, OTPlayerName ld bc, $1c2 call Function75f ld a, $fe ld [de], a - ld hl, wc608 + ld hl, wMisc ld de, wPlayerTrademonSpecies ld bc, $c8 call Function75f ld a, [wLinkMode] cp LINK_TRADECENTER - jr nz, .asm_281fd + jr nz, .not_trading ld hl, wc9f4 ld de, wcb84 ld bc, $186 call Function283f2 -.asm_281fd +.not_trading xor a ld [rIF], a ld a, $1d ld [rIE], a ld de, MUSIC_NONE call PlayMusic - call Function287ab - ld hl, wd26b - call Function287ca - ld de, OverworldMap + call Link_CopyRandomNumbers + ld hl, OTPlayerName + call Link_FindFirstNonControlCharacter_SkipZero + ld de, wLinkData ld bc, $1b9 - call Function2879e + call Link_CopyOTData ld de, wPlayerTrademonSpecies - ld hl, wc813 + ld hl, wLinkPlayerPartyMon1Species ld c, $2 -.asm_28224 +.loop1 ld a, [de] inc de and a - jr z, .asm_28224 + jr z, .loop1 cp $fd - jr z, .asm_28224 + jr z, .loop1 cp $fe - jr z, .asm_28224 + jr z, .loop1 cp $ff - jr z, .asm_28243 + jr z, .next1 push hl push bc ld b, $0 @@ -274,93 +274,92 @@ Function28177: ; 28177 ld [hl], a pop bc pop hl - jr .asm_28224 + jr .loop1 -.asm_28243 +.next1 ld hl, wc90f dec c - jr nz, .asm_28224 + jr nz, .loop1 ld a, [wLinkMode] cp LINK_TRADECENTER - jp nz, .asm_282fe + jp nz, .skip_mail ld hl, wcb84 -.asm_28254 +.loop2 ld a, [hli] cp $20 - jr nz, .asm_28254 -.asm_28259 + jr nz, .loop2 +.loop3 ld a, [hli] cp $fe - jr z, .asm_28259 + jr z, .loop3 cp $20 - jr z, .asm_28259 + jr z, .loop3 dec hl ld de, wcb84 - ld bc, $190 + ld bc, $190 ; 400 call CopyBytes ld hl, wcb84 - ld bc, $c6 -.asm_28272 + ld bc, $c6 ; 198 +.loop4 ld a, [hl] cp $21 - jr nz, .asm_28279 + jr nz, .okay1 ld [hl], $fe - -.asm_28279 +.okay1 inc hl dec bc ld a, b or c - jr nz, .asm_28272 + jr nz, .loop4 ld de, wcc9e -.asm_28282 +.loop5 ld a, [de] inc de cp $ff - jr z, .asm_28294 + jr z, .start_copying_mail ld hl, wcc4a dec a ld b, $0 ld c, a add hl, bc ld [hl], $fe - jr .asm_28282 + jr .loop5 -.asm_28294 +.start_copying_mail ld hl, wcb84 ld de, wc9f4 - ld b, $6 -.asm_2829c + ld b, PARTY_LENGTH +.copy_mail_loop push bc - ld bc, $21 + ld bc, MAIL_MSG_LENGTH + 1 call CopyBytes - ld a, $e + ld a, (MAIL_STRUCT_LENGTH - (MAIL_MSG_LENGTH + 1)) % $100 add e ld e, a - ld a, $0 + ld a, (MAIL_STRUCT_LENGTH - (MAIL_MSG_LENGTH + 1)) / $100 adc d ld d, a pop bc dec b - jr nz, .asm_2829c + jr nz, .copy_mail_loop ld de, wc9f4 - ld b, $6 -.asm_282b4 + ld b, PARTY_LENGTH +.copy_author_loop push bc - ld a, $21 + ld a, (MAIL_MSG_LENGTH + 1) % $100 add e ld e, a - ld a, $0 + ld a, (MAIL_MSG_LENGTH + 1) / $100 adc d ld d, a - ld bc, $e + ld bc, MAIL_STRUCT_LENGTH - (MAIL_MSG_LENGTH + 1) call CopyBytes pop bc dec b - jr nz, .asm_282b4 - ld b, $6 + jr nz, .copy_author_loop + ld b, PARTY_LENGTH ld de, wc9f4 -.asm_282cc +.fix_mail_loop push bc push de callba IsMailEuropean @@ -385,14 +384,14 @@ Function28177: ; 28177 ld e, l pop bc dec b - jr nz, .asm_282cc + jr nz, .fix_mail_loop ld de, wcb0e xor a ld [de], a -.asm_282fe - ld hl, OverworldMap - ld de, wd26b +.skip_mail + ld hl, wLinkData + ld de, OTPlayerName ld bc, NAME_LENGTH call CopyBytes ld de, OTPartyCount @@ -416,7 +415,7 @@ Function28177: ; 28177 call z, DelayFrames ld a, [wLinkMode] cp LINK_COLOSSEUM - jr nz, .asm_283a9 + jr nz, .ready_to_trade ld a, CAL ld [OtherTrainerClass], a call ClearScreen @@ -427,7 +426,7 @@ Function28177: ; 28177 and $20 or $3 ld [hl], a - ld hl, wd26b + ld hl, OTPlayerName ld de, OTName ld bc, NAME_LENGTH call CopyBytes @@ -463,32 +462,32 @@ Function28177: ; 28177 callba LoadPokemonData jp Function28b22 -.asm_283a9 +.ready_to_trade ld de, MUSIC_ROUTE_30 call PlayMusic - jp Function287e3 + jp InitTradeMenuDisplay ; 283b2 Function283b2: ; 283b2 - ld de, UnknownText_0x283ed + ld de, .TooMuchTimeHasElapsed ld b, $a -.asm_283b7 +.loop call DelayFrame - call LinkCommunicationsSignalDataReceived + call LinkDataReceived dec b - jr nz, .asm_283b7 + jr nz, .loop xor a ld [hld], a ld [hl], a ld [hVBlank], a push de hlcoord 0, 12 - ld b, $4 - ld c, $12 + ld b, 4 + ld c, 18 push de ld d, h ld e, l - callba Function4d35b + callba LinkTextbox2 pop de pop hl bccoord 1, 14 @@ -497,11 +496,11 @@ Function283b2: ; 283b2 call ClearScreen ld b, SCGB_08 call GetSGBLayout - call Function3200 + call WaitBGMap2 ret ; 283ed -UnknownText_0x283ed: ; 0x283ed +.TooMuchTimeHasElapsed: ; 0x283ed ; Too much time has elapsed. Please try again. text_jump UnknownText_0x1c4183 db "@" @@ -510,7 +509,7 @@ UnknownText_0x283ed: ; 0x283ed Function283f2: ; 283f2 ld a, $1 ld [hFFCC], a -.asm_283f6 +.loop ld a, [hl] ld [hSerialSend], a call Function78a @@ -518,130 +517,128 @@ Function283f2: ; 283f2 ld b, a inc hl ld a, $30 -.asm_28401 +.delay_cycles dec a - jr nz, .asm_28401 + jr nz, .delay_cycles ld a, [hFFCC] and a ld a, b pop bc - jr z, .asm_28411 + jr z, .load dec hl xor a ld [hFFCC], a - jr .asm_283f6 + jr .loop -.asm_28411 +.load ld [de], a inc de dec bc ld a, b or c - jr nz, .asm_283f6 + jr nz, .loop ret ; 28419 -String28419: ; 28419 +String_PleaseWait: ; 28419 db "PLEASE WAIT!@" ; 28426 -Function28426: ; 28426 - ld hl, OverworldMap - lb bc, 5, SCREEN_WIDTH -.asm_2842c +ClearLinkData: ; 28426 + ld hl, wLinkData + ld bc, wLinkDataEnd - wLinkData +.loop xor a ld [hli], a dec bc ld a, b or c - jr nz, .asm_2842c + jr nz, .loop ret ; 28434 -Function28434: ; 28434 +FixDataForLinkTransfer: ; 28434 ld hl, wd1f3 ld a, $fd - ld b, $7 -.asm_2843b + ld b, LinkBattleRNs - wd1f3 +.loop1 ld [hli], a dec b - jr nz, .asm_2843b - ld b, $a -.asm_28441 + jr nz, .loop1 + ld b, TempEnemyMonSpecies - LinkBattleRNs +.loop2 call Random cp $fd - jr nc, .asm_28441 + jr nc, .loop2 ld [hli], a dec b - jr nz, .asm_28441 - ld hl, wc608 + jr nz, .loop2 + ld hl, wMisc ld a, $fd rept 3 ld [hli], a endr - ld b, $c8 + ld b, wc6d3 - (wMisc + 3) xor a -.asm_28457 +.loop3 ld [hli], a dec b - jr nz, .asm_28457 - ld hl, wc818 - ld de, wc608 + 10 - ld bc, 0 -.asm_28464 + jr nz, .loop3 + ld hl, wTimeCapsulePartyMon1 - 1 + 6 + ld de, wc612 + lb bc, 0, 0 +.loop4 inc c ld a, c cp $fd - jr z, .asm_2848c + jr z, .next1 ld a, b dec a - jr nz, .asm_2847f + jr nz, .next2 push bc ld a, [wLinkMode] cp LINK_TIMECAPSULE ld b, $d - jr z, .asm_2847a + jr z, .got_value ld b, $27 - -.asm_2847a +.got_value ld a, c cp b pop bc - jr z, .asm_28495 - -.asm_2847f + jr z, .done +.next2 inc hl ld a, [hl] cp $fe - jr nz, .asm_28464 + jr nz, .loop4 ld a, c ld [de], a inc de ld [hl], $ff - jr .asm_28464 + jr .loop4 -.asm_2848c +.next1 ld a, $ff ld [de], a inc de lb bc, 1, 0 - jr .asm_28464 + jr .loop4 -.asm_28495 +.done ld a, $ff ld [de], a ret ; 28499 -Function28499: ; 28499 - ld de, OverworldMap +Link_PrepPartyData_Gen1: ; 28499 + ld de, wLinkData ld a, $fd - ld b, $6 -.asm_284a0 + ld b, 6 +.loop1 ld [de], a inc de dec b - jr nz, .asm_284a0 + jr nz, .loop1 ld hl, PlayerName ld bc, NAME_LENGTH call CopyBytes @@ -650,10 +647,10 @@ Function28499: ; 28499 ld a, [hli] ld [de], a inc de -.asm_284b5 +.loop2 ld a, [hli] - cp $ff - jr z, .asm_284ce + cp -1 + jr z, .done_party ld [wd265], a push hl push de @@ -663,34 +660,34 @@ Function28499: ; 28499 ld a, [wd265] ld [de], a inc de - jr .asm_284b5 + jr .loop2 -.asm_284ce +.done_party ld [de], a pop de - ld hl, $8 + ld hl, 1 + PARTY_LENGTH + 1 add hl, de ld d, h ld e, l ld hl, PartyMon1Species - ld c, $6 -.asm_284db + ld c, PARTY_LENGTH +.mon_loop push bc - call Function284f6 + call .ConvertPartyStruct2to1 ld bc, PARTYMON_STRUCT_LENGTH add hl, bc pop bc dec c - jr nz, .asm_284db + jr nz, .mon_loop ld hl, PartyMonOT - call .asm_284f0 + call .copy_ot_nicks ld hl, PartyMonNicknames -.asm_284f0 - ld bc, $42 +.copy_ot_nicks + ld bc, PARTY_LENGTH * NAME_LENGTH jp CopyBytes ; 284f6 -Function284f6: ; 284f6 +.ConvertPartyStruct2to1: ; 284f6 ld b, h ld c, l push de @@ -703,7 +700,7 @@ Function284f6: ; 284f6 ld a, [wd265] ld [de], a inc de - ld hl, $22 + ld hl, MON_HP add hl, bc ld a, [hli] ld [de], a @@ -714,26 +711,26 @@ Function284f6: ; 284f6 xor a ld [de], a inc de - ld hl, $20 + ld hl, MON_STATUS add hl, bc ld a, [hl] ld [de], a inc de ld a, [bc] - cp $51 - jr z, .asm_28528 - cp $52 - jr nz, .asm_28530 + cp MAGNEMITE + jr z, .steel_type + cp MAGNETON + jr nz, .skip_steel -.asm_28528 - ld a, $17 +.steel_type + ld a, ELECTRIC ld [de], a inc de ld [de], a inc de - jr .asm_28544 + jr .done_steel -.asm_28530 +.skip_steel push bc dec a ld hl, BaseData + 7 ; type @@ -744,15 +741,15 @@ Function284f6: ; 284f6 call FarCopyBytes pop bc -.asm_28544 +.done_steel push bc - ld hl, $1 + ld hl, MON_ITEM add hl, bc - ld bc, $1a + ld bc, MON_HAPPINESS - MON_ITEM call CopyBytes pop bc - ld hl, $1f + ld hl, MON_LEVEL add hl, bc ld a, [hl] ld [de], a @@ -760,9 +757,9 @@ Function284f6: ; 284f6 inc de push bc - ld hl, $24 + ld hl, MON_MAXHP add hl, bc - ld bc, 8 + ld bc, MON_SAT - MON_MAXHP call CopyBytes pop bc @@ -781,19 +778,19 @@ Function284f6: ; 284f6 ld [BaseSpecialAttack], a pop bc - ld hl, $a + ld hl, MON_STAT_EXP - 1 add hl, bc - ld c, $5 - ld b, $1 + ld c, STAT_SATK + ld b, TRUE predef CalcPkmnStatC pop bc pop de - ld a, [$ffb5] + ld a, [hQuotient + 1] ld [de], a inc de - ld a, [$ffb6] + ld a, [hQuotient + 2] ld [de], a inc de ld h, b @@ -801,10 +798,10 @@ Function284f6: ; 284f6 ret ; 28595 -Function28595: ; 28595 - ld de, wc800 - ld a, EGG - ld b, PARTY_LENGTH +Link_PrepPartyData_Gen2: ; 28595 + ld de, wLinkData + ld a, $fd + ld b, 6 .loop1 ld [de], a inc de @@ -960,31 +957,31 @@ Function2868a: ; 2868a push hl ld d, h ld e, l - ld bc, wcbea + ld bc, wLinkOTPartyMonTypes ld hl, wcbe8 ld a, c ld [hli], a ld [hl], b ld hl, OTPartyMon1Species - ld c, $6 + ld c, PARTY_LENGTH .loop push bc - call Function286ba + call .ConvertToGen2 pop bc dec c jr nz, .loop pop hl - lb bc, 1, 8 + ld bc, PARTY_LENGTH * REDMON_STRUCT_LENGTH add hl, bc ld de, OTPartyMonOT - ld bc, $42 + ld bc, PARTY_LENGTH * NAME_LENGTH call CopyBytes ld de, OTPartyMonNicknames - ld bc, $42 + ld bc, PARTY_LENGTH * PKMN_NAME_LENGTH jp CopyBytes ; 286ba -Function286ba: ; 286ba +.ConvertToGen2: ; 286ba ld b, h ld c, l ld a, [de] @@ -998,7 +995,7 @@ Function286ba: ; 286ba ld a, [wd265] ld [bc], a ld [CurSpecies], a - ld hl, $22 + ld hl, MON_HP add hl, bc ld a, [de] inc de @@ -1007,7 +1004,7 @@ Function286ba: ; 286ba inc de ld [hl], a inc de - ld hl, $20 + ld hl, MON_STATUS add hl, bc ld a, [de] inc de @@ -1025,9 +1022,9 @@ Function286ba: ; 286ba ld a, l ld [wcbe8], a ld a, h - ld [wcbe9], a + ld [wcbe8 + 1], a push bc - ld hl, $1 + ld hl, MON_ITEM add hl, bc push hl ld h, d @@ -1036,7 +1033,7 @@ Function286ba: ; 286ba push bc ld a, [hli] ld b, a - call Function28771 + call TimeCapsule_ReplaceTeruSama ld a, b ld [de], a inc de @@ -1067,29 +1064,29 @@ Function286ba: ; 286ba push bc ld d, h ld e, l - ld hl, $a + ld hl, MON_STAT_EXP - 1 add hl, bc - ld c, $5 - ld b, $1 + ld c, STAT_SATK + ld b, TRUE predef CalcPkmnStatC pop bc pop hl - ld a, [$ffb5] + ld a, [hQuotient + 1] ld [hli], a - ld a, [$ffb6] + ld a, [hQuotient + 2] ld [hli], a push hl push bc - ld hl, $a + ld hl, MON_STAT_EXP - 1 add hl, bc - ld c, $6 - ld b, $1 + ld c, STAT_SDEF + ld b, TRUE predef CalcPkmnStatC pop bc pop hl - ld a, [$ffb5] + ld a, [hQuotient + 1] ld [hli], a - ld a, [$ffb6] + ld a, [hQuotient + 2] ld [hli], a push hl ld hl, $1b @@ -1108,7 +1105,7 @@ endr ret ; 28771 -Function28771: ; 28771 +TimeCapsule_ReplaceTeruSama: ; 28771 ld a, b and a ret z @@ -1145,356 +1142,356 @@ Function28771: ; 28771 db ITEM_C3, BERRY db ITEM_DC, BERRY db HM_08, BERRY - db $ff, BERRY - db $00 + db -1, BERRY + db 0 ; 2879e -Function2879e: ; 2879e -.asm_2879e +Link_CopyOTData: ; 2879e +.loop ld a, [hli] cp $fe - jr z, .asm_2879e + jr z, .loop ld [de], a inc de dec bc ld a, b or c - jr nz, .asm_2879e + jr nz, .loop ret ; 287ab -Function287ab: ; 287ab +Link_CopyRandomNumbers: ; 287ab ld a, [hLinkPlayerNumber] cp $2 ret z ld hl, EnemyMonSpecies - call Function287d8 + call Link_FindFirstNonControlCharacter_AllowZero ld de, LinkBattleRNs - ld c, $a -.asm_287bb + ld c, 10 +.loop ld a, [hli] cp $fe - jr z, .asm_287bb + jr z, .loop cp $fd - jr z, .asm_287bb + jr z, .loop ld [de], a inc de dec c - jr nz, .asm_287bb + jr nz, .loop ret ; 287ca -Function287ca: ; 287ca -.asm_287ca +Link_FindFirstNonControlCharacter_SkipZero: ; 287ca +.loop ld a, [hli] and a - jr z, .asm_287ca + jr z, .loop cp $fd - jr z, .asm_287ca + jr z, .loop cp $fe - jr z, .asm_287ca + jr z, .loop dec hl ret ; 287d8 -Function287d8: ; 287d8 -.asm_287d8 +Link_FindFirstNonControlCharacter_AllowZero: ; 287d8 +.loop ld a, [hli] cp $fd - jr z, .asm_287d8 + jr z, .loop cp $fe - jr z, .asm_287d8 + jr z, .loop dec hl ret ; 287e3 -Function287e3: ; 287e3 +InitTradeMenuDisplay: ; 287e3 call ClearScreen - call Function28ef8 - callba Function16d673 + call LoadTradeScreenBorder + callba InitTradeSpeciesList xor a ld hl, wOtherPlayerLinkMode rept 3 ld [hli], a endr ld [hl], a - ld a, $1 - ld [MenuSelection2], a + ld a, 1 + ld [wMenuCursorY], a inc a ld [wPlayerLinkAction], a - jp Function2888b + jp LinkTrade_PlayerPartyMenu ; 28803 -Function28803: ; 28803 - ld a, $1 +LinkTrade_OTPartyMenu: ; 28803 + ld a, OTPARTYMON ld [MonType], a - ld a, $c1 - ld [wcfa8], a + ld a, A_BUTTON | D_UP | D_DOWN + ld [wMenuJoypadFilter], a ld a, [OTPartyCount] - ld [wcfa3], a - ld a, $1 - ld [wcfa4], a - ld a, $9 - ld [wcfa1], a - ld a, $6 - ld [wcfa2], a - ld a, $1 - ld [wcfaa], a - ld a, $10 - ld [wcfa7], a + ld [w2DMenuNumRows], a + ld a, 1 + ld [w2DMenuNumCols], a + ld a, 9 + ld [w2DMenuCursorInitY], a + ld a, 6 + ld [w2DMenuCursorInitX], a + ld a, 1 + ld [wMenuCursorX], a + ln a, 1, 0 + ld [w2DMenuCursorOffsets], a ld a, $20 - ld [wcfa5], a + ld [w2DMenuFlags1], a xor a - ld [wcfa6], a + ld [w2DMenuFlags2], a -Function28835: ; 28835 - callba Function16d70c +LinkTradeOTPartymonMenuLoop: ; 28835 + callba LinkTradeMenu ld a, d and a - jp z, Function2891c - bit 0, a - jr z, .asm_2885b + jp z, LinkTradePartiesMenuMasterLoop + bit A_BUTTON_F, a + jr z, .not_a_button ld a, $1 ld [wd263], a callab Function50db9 ld hl, OTPartyMon1Species - callba Function4d319 - jp Function2891c + callba LinkMonStatsScreen + jp LinkTradePartiesMenuMasterLoop -.asm_2885b - bit 6, a - jr z, .asm_28883 - ld a, [MenuSelection2] +.not_a_button + bit D_UP_F, a + jr z, .not_d_up + ld a, [wMenuCursorY] ld b, a ld a, [OTPartyCount] cp b - jp nz, Function2891c + jp nz, LinkTradePartiesMenuMasterLoop xor a ld [MonType], a - call Function1bf7 + call HideCursor push hl push bc ld bc, NAME_LENGTH add hl, bc - ld [hl], $7f + ld [hl], " " pop bc pop hl ld a, [PartyCount] - ld [MenuSelection2], a - jr Function2888b + ld [wMenuCursorY], a + jr LinkTrade_PlayerPartyMenu -.asm_28883 - bit 7, a - jp z, Function2891c +.not_d_up + bit D_DOWN_F, a + jp z, LinkTradePartiesMenuMasterLoop jp Function28ac9 ; 2888b -Function2888b: ; 2888b - callba Function49856 +LinkTrade_PlayerPartyMenu: ; 2888b + callba InitMG_Mobile_LinkTradePalMap xor a ld [MonType], a - ld a, $c1 - ld [wcfa8], a + ld a, A_BUTTON | D_UP | D_DOWN + ld [wMenuJoypadFilter], a ld a, [PartyCount] - ld [wcfa3], a - ld a, $1 - ld [wcfa4], a - ld a, $1 - ld [wcfa1], a - ld a, $6 - ld [wcfa2], a - ld a, $1 - ld [wcfaa], a - ld a, $10 - ld [wcfa7], a + ld [w2DMenuNumRows], a + ld a, 1 + ld [w2DMenuNumCols], a + ld a, 1 + ld [w2DMenuCursorInitY], a + ld a, 6 + ld [w2DMenuCursorInitX], a + ld a, 1 + ld [wMenuCursorX], a + ln a, 1, 0 + ld [w2DMenuCursorOffsets], a ld a, $20 - ld [wcfa5], a + ld [w2DMenuFlags1], a xor a - ld [wcfa6], a - call Function3200 + ld [w2DMenuFlags2], a + call WaitBGMap2 -Function288c5: ; 288c5 - callba Function16d70c +LinkTradePartymonMenuLoop: ; 288c5 + callba LinkTradeMenu ld a, d and a - jr nz, .asm_288d2 - jp Function2891c + jr nz, .check_joypad + jp LinkTradePartiesMenuMasterLoop -.asm_288d2 - bit 0, a - jr z, .asm_288d9 +.check_joypad + bit A_BUTTON_F, a + jr z, .not_a_button jp Function28926 -.asm_288d9 - bit 7, a - jr z, .asm_288fe - ld a, [MenuSelection2] +.not_a_button + bit D_DOWN_F, a + jr z, .not_d_down + ld a, [wMenuCursorY] dec a - jp nz, Function2891c - ld a, $1 + jp nz, LinkTradePartiesMenuMasterLoop + ld a, OTPARTYMON ld [MonType], a - call Function1bf7 + call HideCursor push hl push bc ld bc, NAME_LENGTH add hl, bc - ld [hl], $7f + ld [hl], " " pop bc pop hl - ld a, $1 - ld [MenuSelection2], a - jp Function28803 - -.asm_288fe - bit 6, a - jr z, Function2891c - ld a, [MenuSelection2] + ld a, 1 + ld [wMenuCursorY], a + jp LinkTrade_OTPartyMenu + +.not_d_down + bit D_UP_F, a + jr z, LinkTradePartiesMenuMasterLoop + ld a, [wMenuCursorY] ld b, a ld a, [PartyCount] cp b - jr nz, Function2891c - call Function1bf7 + jr nz, LinkTradePartiesMenuMasterLoop + call HideCursor push hl push bc ld bc, NAME_LENGTH add hl, bc - ld [hl], $7f + ld [hl], " " pop bc pop hl jp Function28ade ; 2891c -Function2891c: ; 2891c +LinkTradePartiesMenuMasterLoop: ; 2891c ld a, [MonType] and a - jp z, Function288c5 - jp Function28835 + jp z, LinkTradePartymonMenuLoop ; PARTYMON + jp LinkTradeOTPartymonMenuLoop ; OTPARTYMON ; 28926 Function28926: ; 28926 call LoadTileMapToTempTileMap - ld a, [MenuSelection2] + ld a, [wMenuCursorY] push af hlcoord 0, 15 - ld b, $1 - ld c, $12 + ld b, 1 + ld c, 18 call Predef_LinkTextbox hlcoord 2, 16 - ld de, String28ab4 + ld de, .String_Stats_Trade call PlaceString callba Function4d354 -.asm_28946 - ld a, $7f +.joy_loop + ld a, " " ldcoord_a 11, 16 - ld a, $13 - ld [wcfa8], a - ld a, $1 - ld [wcfa3], a - ld a, $1 - ld [wcfa4], a - ld a, $10 - ld [wcfa1], a - ld a, $1 - ld [wcfa2], a - ld a, $1 - ld [MenuSelection2], a - ld [wcfaa], a - ld a, $20 - ld [wcfa7], a + ld a, A_BUTTON | B_BUTTON | D_RIGHT + ld [wMenuJoypadFilter], a + ld a, 1 + ld [w2DMenuNumRows], a + ld a, 1 + ld [w2DMenuNumCols], a + ld a, 16 + ld [w2DMenuCursorInitY], a + ld a, 1 + ld [w2DMenuCursorInitX], a + ld a, 1 + ld [wMenuCursorY], a + ld [wMenuCursorX], a + ln a, 2, 0 + ld [w2DMenuCursorOffsets], a xor a - ld [wcfa5], a - ld [wcfa6], a - call Function1bd3 - bit 4, a - jr nz, .asm_2898d - bit 1, a - jr z, .asm_289cd -.asm_28983 + ld [w2DMenuFlags1], a + ld [w2DMenuFlags2], a + call ScrollingMenuJoypad + bit D_RIGHT_F, a + jr nz, .d_right + bit B_BUTTON_F, a + jr z, .show_stats +.b_button pop af - ld [MenuSelection2], a + ld [wMenuCursorY], a call Call_LoadTempTileMapToTileMap - jp Function2888b + jp LinkTrade_PlayerPartyMenu -.asm_2898d - ld a, $7f +.d_right + ld a, " " ldcoord_a 1, 16 - ld a, $23 - ld [wcfa8], a - ld a, $1 - ld [wcfa3], a - ld a, $1 - ld [wcfa4], a - ld a, $10 - ld [wcfa1], a - ld a, $b - ld [wcfa2], a - ld a, $1 - ld [MenuSelection2], a - ld [wcfaa], a - ld a, $20 - ld [wcfa7], a + ld a, A_BUTTON | B_BUTTON | D_LEFT + ld [wMenuJoypadFilter], a + ld a, 1 + ld [w2DMenuNumRows], a + ld a, 1 + ld [w2DMenuNumCols], a + ld a, 16 + ld [w2DMenuCursorInitY], a + ld a, 11 + ld [w2DMenuCursorInitX], a + ld a, 1 + ld [wMenuCursorY], a + ld [wMenuCursorX], a + ln a, 2, 0 + ld [w2DMenuCursorOffsets], a xor a - ld [wcfa5], a - ld [wcfa6], a - call Function1bd3 - bit 5, a - jp nz, .asm_28946 - bit 1, a - jr nz, .asm_28983 - jr .asm_289fe - -.asm_289cd + ld [w2DMenuFlags1], a + ld [w2DMenuFlags2], a + call ScrollingMenuJoypad + bit D_LEFT_F, a + jp nz, .joy_loop + bit B_BUTTON_F, a + jr nz, .b_button + jr .try_trade + +.show_stats pop af - ld [MenuSelection2], a + ld [wMenuCursorY], a ld a, $4 ld [wd263], a callab Function50db9 - callba Function4d319 + callba LinkMonStatsScreen call Call_LoadTempTileMapToTileMap hlcoord 6, 1 lb bc, 6, 1 ld a, " " - call Function28b77 + call LinkEngine_FillBox hlcoord 17, 1 lb bc, 6, 1 ld a, " " - call Function28b77 - jp Function2888b + call LinkEngine_FillBox + jp LinkTrade_PlayerPartyMenu -.asm_289fe - call Function1bee +.try_trade + call PlaceHollowCursor pop af - ld [MenuSelection2], a + ld [wMenuCursorY], a dec a ld [wd002], a ld [wPlayerLinkAction], a callba Function16d6ce ld a, [wOtherPlayerLinkMode] cp $f - jp z, Function287e3 + jp z, InitTradeMenuDisplay ld [wd003], a call Function28b68 - ld c, $64 + ld c, 100 call DelayFrames - callba Functionfb57e - jr c, .asm_28a58 + callba ValidateOTTrademon + jr c, .abnormal callba Functionfb5dd - jp nc, Function28b87 + jp nc, LinkTrade xor a ld [wcf57], a ld [wOtherPlayerLinkAction], a hlcoord 0, 12 - ld b, $4 - ld c, $12 + ld b, 4 + ld c, 18 call Predef_LinkTextbox callba Function4d354 - ld hl, UnknownText_0x28aaf + ld hl, .Text_CantTradeLastMon bccoord 1, 14 call PlaceWholeStringInBoxAtOnce - jr .asm_28a89 + jr .cancel_trade -.asm_28a58 +.abnormal xor a ld [wcf57], a ld [wOtherPlayerLinkAction], a @@ -1507,41 +1504,41 @@ Function28926: ; 28926 ld [wd265], a call GetPokemonName hlcoord 0, 12 - ld b, $4 - ld c, $12 + ld b, 4 + ld c, 18 call Predef_LinkTextbox callba Function4d354 - ld hl, UnknownText_0x28ac4 + ld hl, .Text_Abnormal bccoord 1, 14 call PlaceWholeStringInBoxAtOnce -.asm_28a89 +.cancel_trade hlcoord 0, 12 - ld b, $4 - ld c, $12 + ld b, 4 + ld c, 18 call Predef_LinkTextbox hlcoord 1, 14 - ld de, String28ece + ld de, String_TooBadTheTradeWasCanceled call PlaceString ld a, $1 ld [wPlayerLinkAction], a callba Function16d6ce - ld c, $64 + ld c, 100 call DelayFrames - jp Function287e3 + jp InitTradeMenuDisplay ; 28aaf -UnknownText_0x28aaf: ; 0x28aaf +.Text_CantTradeLastMon: ; 0x28aaf ; If you trade that #MON, you won't be able to battle. text_jump UnknownText_0x1c41b1 db "@" ; 0x28ab4 -String28ab4: ; 28ab4 +.String_Stats_Trade: ; 28ab4 db "STATS TRADE@" -UnknownText_0x28ac4: ; 0x28ac4 +.Text_Abnormal: ; 0x28ac4 ; Your friend's @ appears to be abnormal! text_jump UnknownText_0x1c41e6 db "@" @@ -1549,60 +1546,58 @@ UnknownText_0x28ac4: ; 0x28ac4 Function28ac9: ; 28ac9 - ld a, [MenuSelection2] - cp $1 - jp nz, Function2891c - call Function1bf7 + ld a, [wMenuCursorY] + cp 1 + jp nz, LinkTradePartiesMenuMasterLoop + call HideCursor push hl push bc ld bc, NAME_LENGTH add hl, bc - ld [hl], $7f + ld [hl], " " pop bc pop hl - Function28ade: ; 28ade -.asm_28ade - ld a, $ed +.loop1 + ld a, "▶" ldcoord_a 9, 17 -.asm_28ae3 +.loop2 call JoyTextDelay ld a, [hJoyLast] and a - jr z, .asm_28ae3 - bit 0, a - jr nz, .asm_28b0b + jr z, .loop2 + bit A_BUTTON_F, a + jr nz, .a_button push af ld a, " " ldcoord_a 9, 17 pop af - bit 6, a - jr z, .asm_28b03 + bit D_UP_F, a + jr z, .d_up ld a, [OTPartyCount] - ld [MenuSelection2], a - jp Function28803 + ld [wMenuCursorY], a + jp LinkTrade_OTPartyMenu -.asm_28b03 +.d_up ld a, $1 - ld [MenuSelection2], a - jp Function2888b + ld [wMenuCursorY], a + jp LinkTrade_PlayerPartyMenu -.asm_28b0b - ld a, $ec +.a_button + ld a, "▷" ldcoord_a 9, 17 ld a, $f ld [wPlayerLinkAction], a callba Function16d6ce ld a, [wOtherPlayerLinkMode] cp $f - jr nz, .asm_28ade - + jr nz, .loop1 Function28b22: ; 28b22 call RotateThreePalettesRight call ClearScreen ld b, SCGB_08 call GetSGBLayout - call Function3200 + call WaitBGMap2 xor a ld [wcfbb], a xor a @@ -1616,6 +1611,7 @@ Function28b22: ; 28b22 ; 28b42 Function28b42: ; 28b42 +; unreferenced hlcoord 0, 16 ld a, "┘" ld bc, 2 * SCREEN_WIDTH @@ -1625,11 +1621,11 @@ Function28b42: ; 28b42 ld bc, SCREEN_WIDTH - 2 call ByteFill hlcoord 2, 16 - ld de, String_28b61 + ld de, .Cancel jp PlaceString ; 28b61 -String_28b61: ; 28b61 +.Cancel: ; 28b61 db "CANCEL@" ; 28b68 @@ -1638,28 +1634,28 @@ Function28b68: ; 28b68 hlcoord 6, 9 ld bc, SCREEN_WIDTH call AddNTimes - ld [hl], $ec + ld [hl], "▷" ret ; 28b77 -Function28b77: ; 28b77 -.asm_28b77 +LinkEngine_FillBox: ; 28b77 +.row push bc push hl -.asm_28b79 +.col ld [hli], a dec c - jr nz, .asm_28b79 + jr nz, .col pop hl ld bc, SCREEN_WIDTH add hl, bc pop bc dec b - jr nz, .asm_28b77 + jr nz, .row ret ; 28b87 -Function28b87: ; 28b87 +LinkTrade: ; 28b87 xor a ld [wcf57], a ld [wOtherPlayerLinkAction], a @@ -1693,39 +1689,39 @@ Function28b87: ; 28b87 call PlaceWholeStringInBoxAtOnce call LoadStandardMenuDataHeader hlcoord 10, 7 - ld b, $3 - ld c, $7 + ld b, 3 + ld c, 7 call Predef_LinkTextbox ld de, String28eab hlcoord 12, 8 call PlaceString - ld a, $8 - ld [wcfa1], a - ld a, $b - ld [wcfa2], a - ld a, $1 - ld [wcfa4], a - ld a, $2 - ld [wcfa3], a + ld a, 8 + ld [w2DMenuCursorInitY], a + ld a, 11 + ld [w2DMenuCursorInitX], a + ld a, 1 + ld [w2DMenuNumCols], a + ld a, 2 + ld [w2DMenuNumRows], a xor a - ld [wcfa5], a - ld [wcfa6], a + ld [w2DMenuFlags1], a + ld [w2DMenuFlags2], a ld a, $20 - ld [wcfa7], a - ld a, $3 - ld [wcfa8], a - ld a, $1 - ld [MenuSelection2], a - ld [wcfaa], a + ld [w2DMenuCursorOffsets], a + ld a, A_BUTTON | B_BUTTON + ld [wMenuJoypadFilter], a + ld a, 1 + ld [wMenuCursorY], a + ld [wMenuCursorX], a callba Function4d354 - call Function1bd3 + call ScrollingMenuJoypad push af call Call_ExitMenu - call Function3200 + call WaitBGMap2 pop af bit 1, a jr nz, .asm_28c33 - ld a, [MenuSelection2] + ld a, [wMenuCursorY] dec a jr z, .asm_28c54 @@ -1737,7 +1733,7 @@ Function28b87: ; 28b87 ld c, 18 call Predef_LinkTextbox hlcoord 1, 14 - ld de, String28ece + ld de, String_TooBadTheTradeWasCanceled call PlaceString callba Function16d6ce jp Function28ea3 @@ -1754,7 +1750,7 @@ Function28b87: ; 28b87 ld c, 18 call Predef_LinkTextbox hlcoord 1, 14 - ld de, String28ece + ld de, String_TooBadTheTradeWasCanceled call PlaceString jp Function28ea3 @@ -1837,7 +1833,7 @@ Function28b87: ; 28b87 callba GetCaughtGender ld a, c ld [wPlayerTrademonCaughtData], a - ld hl, wd26b + ld hl, OTPlayerName ld de, wOTTrademonSenderName ld bc, NAME_LENGTH call CopyBytes @@ -1886,12 +1882,12 @@ Function28b87: ; 28b87 ld [wd002], a xor a ld [wPokemonWithdrawDepositParameter], a - callab Functione039 + callab RemoveMonFromPartyOrBox ld a, [PartyCount] dec a ld [CurPartyMon], a ld a, $1 - ld [wd1e9], a + ld [wForceEvolution], a ld a, [wd003] push af ld hl, OTPartySpecies @@ -1937,7 +1933,7 @@ Function28b87: ; 28b87 ld [CurPartyMon], a callab EvolvePokemon call ClearScreen - call Function28ef8 + call LoadTradeScreenBorder call Function28eff callba Function4d354 ld b, $1 @@ -1991,14 +1987,14 @@ Function28b87: ; 28b87 call DelayFrames ld a, [wLinkMode] cp LINK_TIMECAPSULE - jp z, Function2805d - jp Function28177 + jp z, TimeCapsule + jp Gen2ToGen2LinkComms ; 28ea3 Function28ea3: ; 28ea3 ld c, 100 call DelayFrames - jp Function287e3 + jp InitTradeMenuDisplay ; 28eab String28eab: ; 28eab @@ -2014,7 +2010,7 @@ UnknownText_0x28eb8: ; 0x28eb8 String28ebd: ; 28ebd db "Trade completed!@" -String28ece: ; 28ece +String_TooBadTheTradeWasCanceled: ; 28ece db "Too bad! The trade" next "was canceled!@" @@ -2026,8 +2022,8 @@ Predef_LinkTextbox: ; 28eef ret ; 28ef8 -Function28ef8: ; 28ef8 - callba Function16d696 +LoadTradeScreenBorder: ; 28ef8 + callba _LoadTradeScreenBorder ret ; 28eff @@ -2038,6 +2034,7 @@ Function28eff: ; 28eff ; 28f09 Function28f09: ; 28f09 +; unreferenced hlcoord 0, 0 ld b, 6 ld c, 18 @@ -2046,7 +2043,7 @@ Function28f09: ; 28f09 ld b, 6 ld c, 18 call Predef_LinkTextbox - callba Functionfb60d + callba PlaceTradePartnerNamesAndParty ret ; 28f24 @@ -2064,7 +2061,7 @@ Special_CheckTimeCapsuleCompatibility: ; 29bfb ld b, PARTY_LENGTH ; 6 .loop ld a, [hli] - cp $ff + cp -1 jr z, .checkitem cp CHIKORITA ; MEW + 1 ; 151 + 1 jr nc, .mon_too_new @@ -2161,8 +2158,8 @@ Special_EnterTimeCapsule: ; 29c7b ret ; 29c92 -Special_AbortLink: ; 29c92 - ld c, $3 +WaitForOtherPlayerToExit: ; 29c92 + ld c, 3 call DelayFrames ld a, -1 ld [hLinkPlayerNumber], a @@ -2173,7 +2170,7 @@ Special_AbortLink: ; 29c92 ld [rSC], a ld a, $81 ld [rSC], a - ld c, $3 + ld c, 3 call DelayFrames xor a ld [rSB], a @@ -2188,7 +2185,7 @@ Special_AbortLink: ; 29c92 ld [rSB], a ld [hSerialReceive], a ld [rSC], a - ld c, $3 + ld c, 3 call DelayFrames ld a, -1 ld [hLinkPlayerNumber], a @@ -2295,9 +2292,9 @@ Special_WaitForLinkedFriend: ; 29d11 jr .asm_29d39 .asm_29d79 - call LinkCommunicationsSignalDataReceived + call LinkDataReceived call DelayFrame - call LinkCommunicationsSignalDataReceived + call LinkDataReceived ld c, $32 call DelayFrames ld a, $1 @@ -2348,16 +2345,16 @@ Function29dba: ; 29dba call Function29e0c ld a, [ScriptVar] and a - jr z, .asm_29e08 - ld bc, rIE -.asm_29de0 + jr z, .vblank + ld bc, -1 +.wait dec bc ld a, b or c - jr nz, .asm_29de0 + jr nz, .wait ld a, [wOtherPlayerLinkMode] cp $5 - jr nz, .asm_29e03 + jr nz, .script_var ld a, $6 ld [wPlayerLinkAction], a ld hl, wcf5b @@ -2367,14 +2364,14 @@ Function29dba: ; 29dba call Function29e0c ld a, [wOtherPlayerLinkMode] cp $6 - jr z, .asm_29e08 + jr z, .vblank -.asm_29e03 +.script_var xor a ld [ScriptVar], a ret -.asm_29e08 +.vblank xor a ld [hVBlank], a ret @@ -2426,7 +2423,7 @@ Function29e47: ; 29e47 ld b, $a .asm_29e49 call DelayFrame - call LinkCommunicationsSignalDataReceived + call LinkDataReceived dec b jr nz, .asm_29e49 ret @@ -2467,9 +2464,9 @@ Special_CheckBothSelectedSameRoom: ; 29e82 ld a, [wd265] call Function29f17 push af - call LinkCommunicationsSignalDataReceived + call LinkDataReceived call DelayFrame - call LinkCommunicationsSignalDataReceived + call LinkDataReceived pop af ld b, a ld a, [wd265] @@ -2593,5 +2590,6 @@ Special_CableClubCheckWhichChris: ; 29f47 ; 29f54 GFX_29f54: ; 29f54 +; unreferenced INCBIN "gfx/unknown/029f54.2bpp" ; 29fe4 diff --git a/engine/link_trade.asm b/engine/link_trade.asm new file mode 100755 index 000000000..395f1f3d3 --- /dev/null +++ b/engine/link_trade.asm @@ -0,0 +1,363 @@ +LinkCommsBorderGFX: +INCBIN "gfx/unknown/16cfc1.2bpp" +; 16d421 + +__LoadTradeScreenBorder: ; 16d421 + ld de, LinkCommsBorderGFX + ld hl, VTiles2 + lb bc, BANK(LinkCommsBorderGFX), 70 + call Get2bpp + ret +; 16d42e + +Function16d42e: ; 16d42e + ld hl, Tilemap_16d465 + decoord 0, 0 + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT + call CopyBytes + ret +; 16d43b + +Function16d43b: ; 16d43b + call LoadStandardMenuDataHeader + call ClearBGPalettes + call ClearTileMap + call ClearSprites + callba __LoadTradeScreenBorder ; useless to farcall + callba Function16d42e ; useless to farcall + ld b, SCGB_08 + call GetSGBLayout + call SetPalettes + call WaitBGMap + call JoyWaitAorB + call Call_ExitMenu + ret +; 16d465 + +Tilemap_16d465: +INCBIN "gfx/unknown/16d465.tilemap" + +Tilemap_16d5cd: +INCBIN "gfx/unknown/16d5cd.tilemap" + +Tilemap_16d5f5: +INCBIN "gfx/unknown/16d5f5.tilemap" + +_LinkTextbox: ; 16d61d + ld h, d + ld l, e + push bc + push hl + call .draw_border + pop hl + pop bc + + ld de, AttrMap - TileMap + add hl, de + inc b + inc b + inc c + inc c + ld a, $7 +.row + push bc + push hl +.col + ld [hli], a + dec c + jr nz, .col + pop hl + ld de, SCREEN_WIDTH + add hl, de + pop bc + dec b + jr nz, .row + ret +; 16d640 + +.draw_border: ; 16d640 + push hl + ld a, $30 + ld [hli], a + inc a + call .fill_row + inc a + ld [hl], a + pop hl + ld de, SCREEN_WIDTH + add hl, de +.loop + push hl + ld a, $33 + ld [hli], a + ld a, " " + call .fill_row + ld [hl], $34 + pop hl + ld de, SCREEN_WIDTH + add hl, de + dec b + jr nz, .loop + + ld a, $35 + ld [hli], a + ld a, $36 + call .fill_row + ld [hl], $37 + ret +; 16d66d + +.fill_row: ; 16d66d + ld d, c +.loop4 + ld [hli], a + dec d + jr nz, .loop4 + ret +; 16d673 + +InitTradeSpeciesList: ; 16d673 + call _LoadTradeScreenBorder + call Function16d6ae + callba InitMG_Mobile_LinkTradePalMap + callba PlaceTradePartnerNamesAndParty + hlcoord 10, 17 + ld de, .CANCEL + call PlaceString + ret +; 16d68f + +.CANCEL: ; 16d68f + db "CANCEL@" +; 16d696 + +_LoadTradeScreenBorder: ; 16d696 + call __LoadTradeScreenBorder + ret +; 16d69a + + +LinkComms_LoadPleaseWaitTextboxBorderGFX: ; 16d69a + ld de, LinkCommsBorderGFX + $30 tiles + ld hl, VTiles2 tile $76 + lb bc, BANK(LinkCommsBorderGFX), 8 + call Get2bpp + ret +; 16d6a7 + +Function16d6a7: ; 16d6a7 + callba Function49811 + ret +; 16d6ae + +Function16d6ae: ; 16d6ae + call Function16d42e + ld hl, Tilemap_16d5cd + decoord 0, 0 + ld bc, 2 * SCREEN_WIDTH + call CopyBytes + ld hl, Tilemap_16d5f5 + decoord 0, 16 + ld bc, 2 * SCREEN_WIDTH + call CopyBytes + ret +; 16d6ca + +LinkTextbox: ; 16d6ca + call _LinkTextbox + ret +; 16d6ce + +Function16d6ce: ; 16d6ce + call LoadStandardMenuDataHeader + call Function16d6e1 + callba Function87d + call Call_ExitMenu + call WaitBGMap2 + ret +; 16d6e1 + +Function16d6e1: ; 16d6e1 + hlcoord 4, 10 + ld b, 1 + ld c, 10 + predef Predef_LinkTextbox + hlcoord 5, 11 + ld de, .Waiting + call PlaceString + call WaitBGMap + call WaitBGMap2 + ld c, 50 + jp DelayFrames +; 16d701 + +.Waiting: ; 16d701 + db "WAITING..!@" +; 16d70c + +LinkTradeMenu: ; 16d70c + call .MenuAction + call .GetJoypad + ret +; 16d713 + +.GetJoypad: ; 16d713 + push bc + push af + ld a, [hJoyLast] + and D_PAD + ld b, a + ld a, [hJoyPressed] + and BUTTONS + or b + ld b, a + pop af + ld a, b + pop bc + ld d, a + ret +; 16d725 + +.MenuAction: ; 16d725 + ld hl, w2DMenuFlags2 + res 7, [hl] + ld a, [hBGMapMode] + push af + call .loop + pop af + ld [hBGMapMode], a + ret + +.loop + call .UpdateCursor + call .UpdateBGMapAndOAM + call .loop2 + jr nc, .done + callba _2DMenuInterpretJoypad + jr c, .done + ld a, [w2DMenuFlags1] + bit 7, a + jr nz, .done + call .GetJoypad + ld b, a + ld a, [wMenuJoypadFilter] + and b + jr z, .loop + +.done + ret +; 16d759 + +.UpdateBGMapAndOAM: ; 16d759 + ld a, [hOAMUpdate] + push af + ld a, $1 + ld [hOAMUpdate], a + call WaitBGMap + pop af + ld [hOAMUpdate], a + xor a + ld [hBGMapMode], a + ret + +.loop2 + call RTC + call .TryAnims + ret c + ld a, [w2DMenuFlags1] + bit 7, a + jr z, .loop2 + and a + ret +; 16d77a + +.UpdateCursor: ; 16d77a + ld hl, wCursorCurrentTile + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [hl] + cp $1f + jr nz, .not_currently_selected + ld a, [wCursorOffCharacter] + ld [hl], a + push hl + push bc + ld bc, PKMN_NAME_LENGTH + add hl, bc + ld [hl], a + pop bc + pop hl + +.not_currently_selected + ld a, [w2DMenuCursorInitY] + ld b, a + ld a, [w2DMenuCursorInitX] + ld c, a + call Coord2Tile + ld a, [w2DMenuCursorOffsets] + swap a + and $f + ld c, a + ld a, [wMenuCursorY] + ld b, a + xor a + dec b + jr z, .skip +.loop3 + add c + dec b + jr nz, .loop3 + +.skip + ld c, SCREEN_WIDTH + call AddNTimes + ld a, [w2DMenuCursorOffsets] + and $f + ld c, a + ld a, [wMenuCursorX] + ld b, a + xor a + dec b + jr z, .skip2 +.loop4 + add c + dec b + jr nz, .loop4 + +.skip2 + ld c, a + add hl, bc + ld a, [hl] + cp $1f + jr z, .cursor_already_there + ld [wCursorOffCharacter], a + ld [hl], $1f + push hl + push bc + ld bc, PKMN_NAME_LENGTH + add hl, bc + ld [hl], $1f + pop bc + pop hl +.cursor_already_there + ld a, l + ld [wCursorCurrentTile], a + ld a, h + ld [wCursorCurrentTile + 1], a + ret +; 16d7e7 + +.TryAnims: ; 16d7e7 + ld a, [w2DMenuFlags1] + bit 6, a + jr z, .skip_anims + callba PlaySpriteAnimationsAndDelayFrame +.skip_anims + call JoyTextDelay + call .GetJoypad + and a + ret z + scf + ret +; 16d7fe diff --git a/engine/mail.asm b/engine/mail.asm index 82d27d4be..4c0af5f9b 100755 --- a/engine/mail.asm +++ b/engine/mail.asm @@ -177,7 +177,7 @@ CheckPokeItem:: ; 44654 jr c, .close_sram_return xor a ld [wPokemonWithdrawDepositParameter], a - callba Functione039 + callba RemoveMonFromPartyOrBox ld a, $1 .close_sram_return @@ -399,13 +399,13 @@ MailboxPC: ; 0x44806 ld [wMenuCursorBuffer], a ld a, [OBPals + 8 * 6] ld [wMenuScrollPosition], a - call HandleScrollingMenu + call ScrollingMenu ld a, [wMenuScrollPosition] ld [OBPals + 8 * 6], a - ld a, [MenuSelection2] + ld a, [wMenuCursorY] ld [wCurMessageIndex], a - ld a, [wcf73] + ld a, [wMenuJoypad] cp $2 jr z, .exit call Function4484a @@ -419,10 +419,10 @@ MailboxPC: ; 0x44806 Function4484a: ; 0x4484a ld hl, MenuData44964 call LoadMenuDataHeader - call InterpretMenu2 + call VerticalMenu call ExitMenu jr c, .exit - ld a, [MenuSelection2] + ld a, [wMenuCursorY] dec a ld hl, .JumpTable rst JumpTable @@ -443,7 +443,7 @@ Function4484a: ; 0x4484a dec a ld b, a call ReadMailMessage - jp ReturnToCallingMenu + jp CloseSubmenu ; 0x44877 .PutInPack ; 0x44877 @@ -539,7 +539,7 @@ Function4484a: ; 0x4484a call PrintText .exit2 - jp ReturnToCallingMenu + jp CloseSubmenu ; 0x4493c .HoldingMailText ; 0x4493c diff --git a/engine/main_menu.asm b/engine/main_menu.asm index efab46cda..2012bf5ff 100755 --- a/engine/main_menu.asm +++ b/engine/main_menu.asm @@ -11,17 +11,17 @@ MainMenu: ; 49cdc call SetPalettes ld hl, GameTimerPause res 0, [hl] - call Function49da4 - ld [wcf76], a - call Function49e09 - ld hl, MenuDataHeader_0x49d14 + call MainMenu_GetWhichMenu + ld [wWhichIndexSet], a + call MainMenu_PrintCurrentTimeAndDay + ld hl, .MenuDataHeader call LoadMenuDataHeader - call Function49de4 + call MainMenuJoypadLoop call WriteBackup jr c, .quit call ClearTileMap ld a, [MenuSelection] - ld hl, Jumptable_49d60 + ld hl, .Jumptable rst JumpTable jr MainMenu @@ -29,23 +29,23 @@ MainMenu: ; 49cdc ret ; 49d14 -MenuDataHeader_0x49d14: ; 49d14 +.MenuDataHeader: ; 49d14 db $40 ; flags db 00, 00 ; start coords db 07, 16 ; end coords - dw MenuData2_0x49d1c + dw .MenuData2 db 1 ; default option ; 49d1c -MenuData2_0x49d1c: ; 49d1c +.MenuData2: ; 49d1c db $80 ; flags db 0 ; items dw MainMenuItems - dw Function1f79 - dw MainMenuText + dw PlaceMenuStrings + dw .Strings ; 49d20 -MainMenuText: ; 49d24 +.Strings: ; 49d24 db "CONTINUE@" db "NEW GAME@" db "OPTION@" @@ -53,13 +53,14 @@ MainMenuText: ; 49d24 db "MOBILE@" db "MOBILE STUDIUM@" -Jumptable_49d60: ; 0x49d60 - dw MainMenu_Continue - dw MainMenu_NewGame - dw MainMenu_Options - dw MainMenu_MysteryGift - dw MainMenu_Mobile - dw MainMenu_MobileStudium +.Jumptable: ; 0x49d60 + jumptable_start + jumptable MainMenu_Continue + jumptable MainMenu_NewGame + jumptable MainMenu_Options + jumptable MainMenu_MysteryGift + jumptable MainMenu_Mobile + jumptable MainMenu_MobileStudium ; 0x49d6c CONTINUE EQU 0 @@ -75,14 +76,14 @@ NewGameMenu: ; 0x49d6c db 2 db NEW_GAME db OPTION - db $ff + db -1 ContinueMenu: ; 0x49d70 db 3 db CONTINUE db NEW_GAME db OPTION - db $ff + db -1 MobileMysteryMenu: ; 0x49d75 db 5 @@ -91,7 +92,7 @@ MobileMysteryMenu: ; 0x49d75 db OPTION db MYSTERY_GIFT db MOBILE - db $ff + db -1 MobileMenu: ; 0x49d7c db 4 @@ -99,7 +100,7 @@ MobileMenu: ; 0x49d7c db NEW_GAME db OPTION db MOBILE - db $ff + db -1 MobileStudiumMenu: ; 0x49d82 db 5 @@ -108,7 +109,7 @@ MobileStudiumMenu: ; 0x49d82 db OPTION db MOBILE db MOBILE_STUDIUM - db $ff + db -1 MysteryMobileStudiumMenu: ; 0x49d89 db 6 @@ -118,7 +119,7 @@ MysteryMobileStudiumMenu: ; 0x49d89 db MYSTERY_GIFT db MOBILE db MOBILE_STUDIUM - db $ff + db -1 MysteryMenu: ; 0x49d91 db 4 @@ -126,7 +127,7 @@ MysteryMenu: ; 0x49d91 db NEW_GAME db OPTION db MYSTERY_GIFT - db $ff + db -1 MysteryStudiumMenu: ; 0x49d97 db 5 @@ -135,7 +136,7 @@ MysteryStudiumMenu: ; 0x49d97 db OPTION db MYSTERY_GIFT db MOBILE_STUDIUM - db $ff + db -1 StudiumMenu: ; 0x49d9e db 4 @@ -143,17 +144,17 @@ StudiumMenu: ; 0x49d9e db NEW_GAME db OPTION db MOBILE_STUDIUM - db $ff + db -1 -Function49da4: ; 49da4 +MainMenu_GetWhichMenu: ; 49da4 nop nop nop ld a, [wSaveFileExists] and a jr nz, .next - ld a, $0 + ld a, $0 ; New Game ret .next @@ -164,12 +165,12 @@ Function49da4: ; 49da4 ld a, BANK(sNumDailyMysteryGiftPartnerIDs) call GetSRAMBank ld a, [sNumDailyMysteryGiftPartnerIDs] - cp $ff + cp -1 call CloseSRAM - jr nz, .done + jr nz, .mystery_gift ld a, [StatusFlags] bit 7, a - ld a, $1 + ld a, $1 ; Continue jr z, .ok jr .ok @@ -177,10 +178,10 @@ Function49da4: ; 49da4 jr .ok2 .ok2 - ld a, $1 + ld a, $1 ; Continue ret -.done +.mystery_gift ld a, [StatusFlags] bit 7, a jr z, .ok3 @@ -190,47 +191,47 @@ Function49da4: ; 49da4 jr .ok4 .ok4 - ld a, $6 + ld a, $6 ; Mystery Gift ret ; 49de4 -Function49de4: ; 49de4 +MainMenuJoypadLoop: ; 49de4 call SetUpMenu -.asm_49de7 - call Function49e09 - ld a, [wcfa5] +.loop + call MainMenu_PrintCurrentTimeAndDay + ld a, [w2DMenuFlags1] set 5, a - ld [wcfa5], a + ld [w2DMenuFlags1], a call Function1f1a - ld a, [wcf73] - cp $2 - jr z, .asm_49e07 - cp $1 - jr z, .asm_49e02 - jr .asm_49de7 - -.asm_49e02 + ld a, [wMenuJoypad] + cp B_BUTTON + jr z, .b_button + cp A_BUTTON + jr z, .a_button + jr .loop + +.a_button call PlayClickSFX and a ret -.asm_49e07 +.b_button scf ret ; 49e09 -Function49e09: ; 49e09 +MainMenu_PrintCurrentTimeAndDay: ; 49e09 ld a, [wSaveFileExists] and a ret z xor a ld [hBGMapMode], a - call Function49e27 + call .PlaceBox ld hl, Options ld a, [hl] push af - set 4, [hl] - call Function49e3d + set NO_TEXT_SCROLL, [hl] + call .PlaceTime pop af ld [Options], a ld a, $1 @@ -239,34 +240,34 @@ Function49e09: ; 49e09 ; 49e27 -Function49e27: ; 49e27 +.PlaceBox: ; 49e27 call CheckRTCStatus and $80 - jr nz, .asm_49e39 + jr nz, .TimeFail hlcoord 0, 14 - ld b, $2 - ld c, $12 + ld b, 2 + ld c, 18 call TextBox ret -.asm_49e39 +.TimeFail call SpeechTextBox ret ; 49e3d -Function49e3d: ; 49e3d +.PlaceTime: ; 49e3d ld a, [wSaveFileExists] and a ret z call CheckRTCStatus and $80 - jp nz, Function49e75 + jp nz, .PrintTimeNotSet call UpdateTime call GetWeekday ld b, a decoord 1, 15 - call Function49e91 + call .PlaceCurrentDay decoord 4, 16 ld a, [hHours] ld c, a @@ -277,13 +278,13 @@ Function49e3d: ; 49e3d lb bc, PRINTNUM_LEADINGZEROS | 1, 2 call PrintNum ret -; 49e70 -; 49e70 +.min +; unreferenced db "min.@" ; 49e75 -Function49e75: ; 49e75 +.PrintTimeNotSet: ; 49e75 hlcoord 1, 14 ld de, .TimeNotSet call PlaceString @@ -294,12 +295,13 @@ Function49e75: ; 49e75 db "TIME NOT SET@" ; 49e8c -UnknownText_0x49e8c: ; 49e8c +.UnusedText ; 49e8c + ; Clock time unknown text_jump UnknownText_0x1c5182 db "@" ; 49e91 -Function49e91: ; 49e91 +.PlaceCurrentDay: ; 49e91 push de ld hl, .Days ld a, b @@ -333,7 +335,7 @@ Function49ed0: ; 49ed0 call ClearTileMap call LoadFontsExtra call LoadStandardFont - call ResetTextRelatedRAM + call ClearWindowData ret ; 49ee0 @@ -357,886 +359,3 @@ MainMenu_MysteryGift: ; 49ef5 callba MysteryGift ret ; 49efc - -MainMenu_Mobile: ; 49efc - call ClearBGPalettes - ld a, MUSIC_MOBILE_ADAPTER_MENU - ld [wMapMusic], a - ld de, MUSIC_MOBILE_ADAPTER_MENU - call Function4a6c5 -Function49f0a: ; 49f0a - call ClearBGPalettes - call Function4a3a7 - call Function4a492 - call ClearBGPalettes -Function49f16: ; 49f16 - call Function4a071 - ld c, 12 - call DelayFrames - hlcoord 4, 0 - ld b, $a - ld c, $a - call Function48cdc - hlcoord 6, 2 - ld de, MobileString1 - call PlaceString - hlcoord 0, 12 - ld b, $4 - ld c, $12 - call TextBox - xor a - ld de, String_0x49fe9 - hlcoord 1, 14 - call PlaceString - call Function3200 - call SetPalettes - call Function1bc9 - ld hl, MenuSelection2 - ld b, [hl] - push bc - jr .asm_49f5d - -.asm_49f55 - call Function1bd3 - ld hl, MenuSelection2 - ld b, [hl] - push bc - -.asm_49f5d - bit 0, a - jr nz, .asm_49f67 - bit 1, a - jr nz, .asm_49f84 - jr .asm_49f97 - -.asm_49f67 - ld hl, MenuSelection2 - ld a, [hl] - cp $1 - jp z, Function4a098 - cp $2 - jp z, Function4a0b9 - cp $3 - jp z, Function4a0c2 - cp $4 - jp z, Function4a100 - ld a, $1 - call Function1ff8 - -.asm_49f84 - pop bc - call ClearBGPalettes - call ClearTileMap - ld a, MUSIC_MAIN_MENU - ld [wMapMusic], a - ld de, MUSIC_MAIN_MENU - call Function4a6c5 - ret - -.asm_49f97 - ld hl, MenuSelection2 - ld a, [hl] - dec a - ld hl, MobileStrings2 - call GetNthString - ld d, h - ld e, l - hlcoord 1, 13 - ld b, $4 - ld c, $12 - call ClearBox - hlcoord 1, 14 - call PlaceString - jp .asm_49fb7 - -.asm_49fb7 - call Function4a071 - pop bc - ld hl, MenuSelection2 - ld [hl], b - ld b, $a - ld c, $1 - hlcoord 5, 1 - call ClearBox - jp .asm_49f55 -; 49fcc - - -MobileString1: ; 49fcc - db "めいしフ,ルダー" - next "あいさつ" - next "プロフィール" - next "せ", $1e, "い" - next "もどる" - db "@" -; 49fe9 - - -MobileStrings2: - -String_0x49fe9: ; 49fe9 - db "めいし¯つくったり" - next "ほぞんしておける フ,ルダーです@" -; 4a004 - -String_0x4a004: ; 4a004 - db "モバイルたいせんや じぶんのめいしで" - next "つかう あいさつ¯つくります@" -; 4a026 - -String_0x4a026: ; 4a026 - db "あなた%じゅうしょや ねんれいの" - next "せ", $1e, "い¯かえられます@" -; 4a042 - -String_0x4a042: ; 4a042 - db "モバイルセンター", $1d, "せつぞくするとき" - next "ひつような こと¯きめます@" -; 4a062 - -String_0x4a062: ; 4a062 - db "まえ%がめん ", $1d, "もどります" - next "@" -; 4a071 - -Function4a071: ; 4a071 (12:6071) - ld hl, wcfa1 - ld a, $2 - ld [hli], a - ld a, $5 - ld [hli], a - ld a, $5 - ld [hli], a - ld a, $1 - ld [hli], a - ld [hl], $0 - set 5, [hl] - inc hl - xor a - ld [hli], a - ld a, $20 - ld [hli], a - ld a, $1 - add $40 - add $80 - add $2 - ld [hli], a - ld a, $1 -rept 2 - ld [hli], a -endr - ret - -Function4a098: ; 4a098 (12:6098) - ld a, $2 - call Function1ff8 - call Function1bee - call WaitBGMap - call LoadStandardMenuDataHeader - callba Function89de0 - call Call_ExitMenu - call Function49351 - call Function4a485 - pop bc - jp Function49f16 - -Function4a0b9: ; 4a0b9 (12:60b9) - ld a, $2 - call Function1ff8 - pop bc - jp Function4a4c4 - -Function4a0c2: ; 4a0c2 (12:60c2) - ld a, $2 - call Function1ff8 - ld a, BANK(sPlayerData) - call GetSRAMBank - ld hl, sPlayerData + PlayerName - wPlayerData - ld de, PlayerName - ld bc, $6 - call CopyBytes - call CloseSRAM - callba Function150b9 - ld c, 2 - call DelayFrames - ld c, $1 - call InitMobileProfile - push af - call ClearBGPalettes - pop af - and a - jr nz, .asm_4a0f9 - callba _SaveData -.asm_4a0f9 - ld c, 5 - call DelayFrames - jr asm_4a111 - -Function4a100: ; 4a100 (12:6100) - ld a, $2 - call Function1ff8 - call ClearBGPalettes - call Function4a13b - call ClearBGPalettes - call ClearTileMap - -asm_4a111: ; 4a111 (12:6111) - pop bc - call LoadFontsExtra - jp Function49f0a - -Function4a118: ; 4a118 (12:6118) - ld hl, wcfa1 - ld a, $1 - ld [hli], a - ld a, $d - ld [hli], a - ld a, $3 - ld [hli], a - ld a, $1 - ld [hli], a - ld [hl], $0 - set 5, [hl] - inc hl - xor a - ld [hli], a - ld a, $20 - ld [hli], a - ld a, $1 - add $2 - ld [hli], a - ld a, $1 -rept 2 - ld [hli], a -endr - ret - -Function4a13b: ; 4a13b (12:613b) - call Function4a3a7 - call Function4a492 - call Function4a373 - ld c, 10 - call DelayFrames - -Function4a149: ; 4a149 (12:6149) - hlcoord 1, 2 - ld b, $6 - ld c, $10 - call Function48cdc - hlcoord 3, 4 - ld de, String_4a1ef - call PlaceString - hlcoord 0, 12 - ld b, $4 - ld c, $12 - call TextBox - ld a, [MenuSelection2] - dec a - ld hl, Strings_4a23d - call GetNthString - ld d, h - ld e, l - hlcoord 1, 13 - ld b, $4 - ld c, $12 - call ClearBox - hlcoord 1, 14 - call PlaceString - callba Function104148 - call SetPalettes - call Function1bc9 - ld hl, MenuSelection2 - ld b, [hl] - push bc - jr asm_4a19d - -Function4a195: ; 4a195 (12:6195) - call Function1bd3 - ld hl, MenuSelection2 - ld b, [hl] - push bc - -asm_4a19d: ; 4a19d (12:619d) - bit 0, a - jr nz, .asm_4a1a7 - bit 1, a - jr nz, .asm_4a1ba - jr .asm_4a1bc -.asm_4a1a7 - ld hl, MenuSelection2 - ld a, [hl] - cp $1 - jp z, Function4a20e - cp $2 - jp z, Function4a221 - ld a, $1 - call Function1ff8 -.asm_4a1ba - pop bc - ret -.asm_4a1bc - ld hl, MenuSelection2 - ld a, [hl] - dec a - ld hl, Strings_4a23d - call GetNthString - ld d, h - ld e, l - hlcoord 1, 13 - ld b, $4 - ld c, $12 - call ClearBox - hlcoord 1, 14 - call PlaceString - jr .asm_4a1db -.asm_4a1db - call Function4a373 - pop bc - ld hl, MenuSelection2 - ld [hl], b - lb bc, 6, 1 - hlcoord 2, 3 - call ClearBox - jp Function4a195 -; 4a1ef (12:61ef) - -String_4a1ef: ; 4a1ef - db "モバイルセンター¯えらぶ" - next "ログインパスワード¯いれる" - next "もどる@" -; 4a20e - -Function4a20e: ; 4a20e (12:620e) - ld a, $1 - call Function1ff8 - callba Function1719c8 - call ClearBGPalettes - call DelayFrame - jr Function4a239 - -Function4a221: ; 4a221 (12:6221) - ld a, $1 - call Function1ff8 - call Function4a28a - jr c, Function4a239 - call Function4a373 - ld a, $2 - ld [MenuSelection2], a - jr .asm_4a235 -.asm_4a235 - pop bc - jp Function4a149 - -Function4a239: ; 4a239 (12:6239) - pop bc - jp Function4a13b -; 4a23d (12:623d) - -Strings_4a23d: ; 4a23d - db "いつも せつぞく¯する" - next "モバイルセンター¯えらびます@" - - db "モバイルセンター", $1d, "せつぞくするとき" - next "つかうパスワード¯ほぞんできます@" - - db "まえ%がめん ", $1d, "もどります@" - - db "@" -; 4a28a - -Function4a28a: ; 4a28a (12:628a) - hlcoord 2, 3 - lb bc, 6, 1 - ld a, " " - call Function4a6d8 - call Function1bee - call WaitBGMap - call LoadStandardMenuDataHeader - ld a, $5 - call GetSRAMBank - ld a, [$aa4b] - call CloseSRAM - and a - jr z, .asm_4a2df - hlcoord 12, 0 - ld b, $5 - ld c, $6 - call Function48cdc - hlcoord 14, 1 - ld de, String_4a34b - call PlaceString - callba Function104148 - call Function4a118 - call Function1bd3 - push af - call PlayClickSFX - pop af - bit 1, a - jr nz, .asm_4a33b - ld a, [MenuSelection2] - cp $2 - jr z, .asm_4a2f0 - cp $3 - jr z, .asm_4a33b -.asm_4a2df - callba Function11765d - call ClearBGPalettes - call Call_ExitMenu - call LoadFontsExtra - scf - ret -.asm_4a2f0 - call Function1bee - ld hl, UnknownText_0x4a358 - call PrintText - hlcoord 14, 7 - ld b, $3 - ld c, $4 - call TextBox - callba Function104148 - ld hl, MenuDataHeader_0x4a362 - call LoadMenuDataHeader - call InterpretMenu2 - bit 1, a - jr nz, .asm_4a338 - ld a, [MenuSelection2] - cp $2 - jr z, .asm_4a338 - ld a, $5 - call GetSRAMBank - ld hl, $aa4b - xor a - ld bc, $11 - call ByteFill - call CloseSRAM - ld hl, UnknownText_0x4a35d - call PrintText - call JoyWaitAorB -.asm_4a338 - call ExitMenu -.asm_4a33b - call Call_ExitMenu - callba Function104148 - xor a - ret -; 4a346 (12:6346) - -MenuDataHeader_0x4a346: ; 0x4a346 - db $40 ; flags - db 00, 12 ; start coords - db 06, 19 ; end coords - -String_4a34b: ; 4a34b - db "いれなおす" - next "けす" - next "もどる@" -; 4a358 - -UnknownText_0x4a358: ; 0x4a358 - ; Delete the saved LOG-IN PASSWORD? - text_jump UnknownText_0x1c5196 - db "@" -; 0x4a35d - -UnknownText_0x4a35d: ; 0x4a35d - ; Deleted the LOG-IN PASSWORD. - text_jump UnknownText_0x1c51b9 - db "@" -; 0x4a362 - -MenuDataHeader_0x4a362: ; 0x4a362 - db $40 ; flags - db 07, 14 ; start coords - db 11, 19 ; end coords - dw MenuData2_0x4a36a - db 2 ; default option -; 0x4a36a - -MenuData2_0x4a36a: ; 0x4a36a - db $e0 ; flags - db 2 ; items - db "はい@" - db "いいえ@" -; 0x4a373 - -Function4a373: ; 4a373 (12:6373) - ld hl, wcfa1 - ld a, $4 - ld [hli], a - ld a, $2 - ld [hli], a - ld a, $3 - ld [hli], a - ld a, $1 - ld [hli], a - ld [hl], $0 - set 5, [hl] - inc hl - xor a - ld [hli], a - ld a, $20 - ld [hli], a - ld a, $1 - add $40 - add $80 - add $2 - ld [hli], a - ld a, $1 -rept 2 - ld [hli], a -endr - ret -; 4a39a (12:639a) - -Function4a39a: ; 4a39a - call Function4a485 - call Function4a492 - call Function4a3aa - call SetPalettes - ret -; 4a3a7 - -Function4a3a7: ; 4a3a7 (12:63a7) - call Function4a485 -Function4a3aa: ; 4a3aa - hlcoord 0, 0 - lb bc, 3, 1 - xor a - call Function4a6d8 - lb bc, 1, 1 - ld a, $1 - call Function4a6d8 - lb bc, 1, 1 - xor a - call Function4a6d8 - lb bc, 1, 1 - ld a, $1 - call Function4a6d8 - lb bc, 4, 1 - ld a, $2 - call Function4a6d8 - lb bc, 1, 1 - ld a, $3 - call Function4a6d8 - lb bc, 1, 1 - ld a, " " - call Function4a6d8 - hlcoord 1, 0 - ld a, $1 - lb bc, 3, 18 - call Function4a6d8 - lb bc, 1, 18 - ld a, $0 - call Function4a6d8 - lb bc, 1, 18 - ld a, $1 - call Function4a6d8 - lb bc, 1, 18 - ld a, $2 - call Function4a6d8 - lb bc, 11, 18 - ld a, " " - call Function4a6d8 - hlcoord 19, 0 - lb bc, 3, 1 - ld a, $0 - call Function4a6d8 - lb bc, 1, 1 - ld a, $1 - call Function4a6d8 - lb bc, 1, 1 - xor a - call Function4a6d8 - lb bc, 1, 1 - ld a, $1 - call Function4a6d8 - lb bc, 4, 1 - ld a, $2 - call Function4a6d8 - lb bc, 1, 1 - ld a, $3 - call Function4a6d8 - lb bc, 1, 1 - ld a, " " - call Function4a6d8 - ret -; 4a449 (12:6449) - -Function4a449: ; 4a449 - ld bc, 3 * SCREEN_WIDTH - ld a, $0 - hlcoord 0, 0 - call ByteFill - ld bc, 2 * SCREEN_WIDTH - ld a, $1 - call ByteFill - ld bc, 2 * SCREEN_WIDTH - ld a, $0 - call ByteFill - ld bc, 2 * SCREEN_WIDTH - ld a, $1 - call ByteFill - ld bc, SCREEN_WIDTH - ld a, $2 - call ByteFill - ld bc, SCREEN_WIDTH - ld a, $3 - call ByteFill - ld bc, SCREEN_WIDTH - ld a, " " - call ByteFill - ret -; 4a485 - -Function4a485: ; 4a485 (12:6485) - ld de, GFX_49c0c - ld hl, VTiles2 tile $00 - lb bc, BANK(GFX_49c0c), $d - call Get2bpp - ret - -Function4a492: ; 4a492 (12:6492) - call Function4936e - ret - - -MainMenu_MobileStudium: ; 4a496 - ld a, [StartDay] - ld b, a - ld a, [StartHour] - ld c, a - ld a, [StartMinute] - ld d, a - ld a, [StartSecond] - ld e, a - push bc - push de - callba MobileStudium - call ClearBGPalettes - pop de - pop bc - ld a, b - ld [StartDay], a - ld a, c - ld [StartHour], a - ld a, d - ld [StartMinute], a - ld a, e - ld [StartSecond], a - ret -; 4a4c4 - - -Function4a4c4: ; 4a4c4 (12:64c4) - call ClearBGPalettes - call Function4a3a7 - call Function4a492 - call Function4a680 - call ClearBGPalettes - ld c, 20 - call DelayFrames - hlcoord 2, 0 - ld b, $a - ld c, $e - call Function48cdc - hlcoord 4, 2 - ld de, String_4a5c5 - call PlaceString - hlcoord 4, 4 - ld de, String_4a5cd - call PlaceString - hlcoord 4, 6 - ld de, String_4a5da - call PlaceString - hlcoord 4, 8 - ld de, String_4a5e6 - call PlaceString - hlcoord 4, 10 - ld de, String_4a5f2 - call PlaceString - hlcoord 0, 12 - ld b, $4 - ld c, $12 - call TextBox - xor a - ld hl, Strings_4a5f6 - ld d, h - ld e, l - hlcoord 1, 14 - call PlaceString - ld a, $1 - ld hl, Strings_4a5f6 - call GetNthString - ld d, h - ld e, l - hlcoord 1, 16 - call PlaceString - call Function3200 - call SetPalettes - call Function1bc9 - ld hl, MenuSelection2 - ld b, [hl] - push bc - jr asm_4a54d - -Function4a545: ; 4a545 (12:6545) - call Function1bd3 - ld hl, MenuSelection2 - ld b, [hl] - push bc - -asm_4a54d: ; 4a54d (12:654d) - bit 0, a - jr nz, .asm_4a557 - bit 1, a - jr nz, .asm_4a574 - jr .asm_4a57e -.asm_4a557 - ld hl, MenuSelection2 - ld a, [hl] - cp $1 - jp z, Function4a6ab - cp $2 - jp z, Function4a6ab - cp $3 - jp z, Function4a6ab - cp $4 - jp z, Function4a6ab - ld a, $1 - call Function1ff8 -.asm_4a574 - pop bc - call ClearBGPalettes - call ClearTileMap - jp Function49f0a -.asm_4a57e - ld hl, MenuSelection2 - ld a, [hl] - dec a - add a - push af - ld hl, Strings_4a5f6 - call GetNthString - ld d, h - ld e, l - hlcoord 1, 13 - ld b, $4 - ld c, $12 - call ClearBox - hlcoord 1, 14 - call PlaceString - pop af - inc a - ld hl, Strings_4a5f6 - call GetNthString - ld d, h - ld e, l - hlcoord 1, 16 - call PlaceString - jp Function4a5b0 - -Function4a5b0: ; 4a5b0 (12:65b0) - call Function4a680 - pop bc - ld hl, MenuSelection2 - ld [hl], b - ld b, $a - ld c, $1 - hlcoord 3, 1 - call ClearBox - jp Function4a545 -; 4a5c5 (12:65c5) - -String_4a5c5: ; 4a5c5 - db "じこしょうかい@" -String_4a5cd: ; 4a5cd - db "たいせん ", $4a, "はじまるとき@" -String_4a5da: ; 4a5da - db "たいせん ", $1d, "かったとき@" -String_4a5e6: ; 4a5e6 - db "たいせん ", $1d, "まけたとき@" -String_4a5f2: ; 4a5f2 - db "もどる@" -; 4a5f6 - -Strings_4a5f6: ; 4a5f6 - db "めいし や ニュース ", $1d, "のせる@" - db "あなた%あいさつです@" - db "モバイル たいせん", $4a, "はじまるとき@" - db "あいて", $1d, "みえる あいさつです@" - db "モバイル たいせんで かったとき@" - db "あいて", $1d, "みえる あいさつです@" - db "モバイル たいせんで まけたとき@" - db "あいて", $1d, "みえる あいさつです@" - db "まえ%がめん ", $1d, "もどります@" - db "@" -; 4a680 - -Function4a680: ; 4a680 (12:6680) - ld hl, wcfa1 - ld a, $2 - ld [hli], a - ld a, $3 - ld [hli], a - ld a, $5 - ld [hli], a - ld a, $1 - ld [hli], a - ld [hl], $0 - set 5, [hl] - inc hl - xor a - ld [hli], a - ld a, $20 - ld [hli], a - ld a, $1 - add $40 - add $80 - add $2 - ld [hli], a - ld a, $1 -rept 2 - ld [hli], a -endr - xor a -rept 3 - ld [hli], a -endr - ret - -Function4a6ab: ; 4a6ab (12:66ab) - ld a, $2 - call Function1ff8 - call ClearBGPalettes - ld b, SCGB_08 - call GetSGBLayout - callba Function11c1ab - pop bc - call LoadFontsExtra - jp Function4a4c4 - -Function4a6c5: ; 4a6c5 (12:66c5) - ld a, $5 - ld [MusicFade], a - ld a, e - ld [MusicFadeIDLo], a - ld a, d - ld [MusicFadeIDHi], a - ld c, 22 - call DelayFrames - ret - -Function4a6d8: ; 4a6d8 (12:66d8) - push bc - push hl -.asm_4a6da - ld [hli], a - dec c - jr nz, .asm_4a6da - pop hl - ld bc, $14 - add hl, bc - pop bc - dec b - jr nz, Function4a6d8 - ret diff --git a/engine/map_objects.asm b/engine/map_objects.asm index 13e4f73bf..3c509642c 100644 --- a/engine/map_objects.asm +++ b/engine/map_objects.asm @@ -49,7 +49,7 @@ sprite_movement_data: macro ; 4357 -Function4357:: ; 4357 +DeleteMapObject:: ; 4357 push bc ld hl, OBJECT_MAP_OBJECT_INDEX add hl, bc @@ -76,14 +76,14 @@ Function4357:: ; 4357 ; 437b Function437b: ; 437b - call Function4386 + call .CheckObjectStillVisible ret c call Function43f3 call Function4427 ret ; 4386 -Function4386: ; 4386 +.CheckObjectStillVisible: ; 4386 ld hl, OBJECT_FLAGS2 add hl, bc res 6, [hl] @@ -143,7 +143,7 @@ Function4386: ; 4386 add hl, bc bit 1, [hl] jr nz, .yes2 - call Function4357 + call DeleteMapObject scf ret @@ -167,26 +167,26 @@ Function43f3: ; 43f3 bit 5, [hl] jr nz, .bit5 - cp STEP_TYPE_STANDING + cp STEP_TYPE_SLEEP jr z, .one jr .ok .zero - call Function47bc + call ObjectMovementReset ld hl, OBJECT_FLAGS2 add hl, bc bit 5, [hl] jr nz, .bit5 .one - call Function47dd + call MapObjectMovementPattern ld hl, OBJECT_STEP_TYPE add hl, bc ld a, [hl] and a ret z - cp STEP_TYPE_STANDING + cp STEP_TYPE_SLEEP ret z .ok @@ -553,7 +553,7 @@ Function45ed: ; 45ed ret ; 4600 -Function4600: ; 4600 +CopyNextCoordsTileToStandingCoordsTile: ; 4600 ld hl, OBJECT_NEXT_MAP_X add hl, bc @@ -604,7 +604,7 @@ Function462a: ; 462a ret ; 463f -Function463f: ; 463f +UpdateTallGrassFlags: ; 463f ld hl, OBJECT_FLAGS2 add hl, bc bit 3, [hl] ; is current tile grass? @@ -651,7 +651,7 @@ UselessAndA: ; 4679 ret ; 467b -Function467b: ; 467b +EndSpriteMovement: ; 467b xor a ld hl, OBJECT_STEP_FRAME add hl, bc @@ -668,7 +668,7 @@ endr ret ; 4690 -Function4690: ; 4690 +InitStep: ; 4690 ld hl, OBJECT_DIRECTION_WALKING add hl, bc ld [hl], a @@ -676,7 +676,6 @@ Function4690: ; 4690 add hl, bc bit FIXED_FACING, [hl] jr nz, GetNextTile - rept 2 add a endr @@ -684,7 +683,6 @@ endr ld hl, OBJECT_FACING add hl, bc ld [hl], a - GetNextTile: ; 46a6 call GetStepVector @@ -794,7 +792,7 @@ GetStepVectorSign: ; 4730 ret ; 129 - 255 ; 4738 -Function4738: ; 4738 +UpdatePlayerStep: ; 4738 ld hl, OBJECT_DIRECTION_WALKING add hl, bc ld a, [hl] @@ -913,7 +911,7 @@ SetValueObjectStructField28: ; 47b6 ret ; 47bc -Function47bc: ; 47bc +ObjectMovementReset: ; 47bc ld hl, OBJECT_NEXT_MAP_X add hl, bc ld d, [hl] @@ -926,15 +924,15 @@ Function47bc: ; 47bc ld hl, OBJECT_NEXT_TILE add hl, bc ld [hl], a - call Function4600 - call Function467b + call CopyNextCoordsTileToStandingCoordsTile + call EndSpriteMovement ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_STANDING + ld [hl], STEP_TYPE_SLEEP ret ; 47dd -Function47dd: ; 47dd +MapObjectMovementPattern: ; 47dd call ClearObjectStructField28 call GetSpriteMovementFunction ld a, [hl] @@ -944,34 +942,35 @@ Function47dd: ; 47dd ; 47e9 .Pointers ; 47e9 - dw .Null_00 ; 00 - dw .RandomWalkY ; 01 - dw .RandomWalkX ; 02 - dw .RandomWalkXY ; 03 - dw .RandomSpin1 ; 04 - dw .RandomSpin2 ; 05 - dw .Standing ; 06 - dw .ObeyDPad ; 07 - dw .Movement08 ; 08 - dw .Movement09 ; 09 - dw .Movement0a ; 0a - dw .Movement0b ; 0b - dw .Movement0c ; 0c - dw .Movement0d ; 0d - dw .Movement0e ; 0e - dw .Follow ; 0f - dw .Script ; 10 - dw .Strength ; 11 - dw .FollowNotExact ; 12 - dw .MovementShadow ; 13 - dw .MovementEmote ; 14 - dw .MovementBigStanding ; 15 - dw .MovementBouncing ; 16 - dw .MovementScreenShake ; 17 - dw .MovementSpinClockwise ; 18 - dw .MovementSpinCounterclockwise ; 19 - dw .MovementBoulderDust ; 1a - dw .MovementShakingGrass ; 1b + jumptable_start + jumptable .Null_00 ; 00 + jumptable .RandomWalkY ; 01 + jumptable .RandomWalkX ; 02 + jumptable .RandomWalkXY ; 03 + jumptable .RandomSpin1 ; 04 + jumptable .RandomSpin2 ; 05 + jumptable .Standing ; 06 + jumptable .ObeyDPad ; 07 + jumptable .Movement08 ; 08 + jumptable .Movement09 ; 09 + jumptable .Movement0a ; 0a + jumptable .Movement0b ; 0b + jumptable .Movement0c ; 0c + jumptable .Movement0d ; 0d + jumptable .Movement0e ; 0e + jumptable .Follow ; 0f + jumptable .Script ; 10 + jumptable .Strength ; 11 + jumptable .FollowNotExact ; 12 + jumptable .MovementShadow ; 13 + jumptable .MovementEmote ; 14 + jumptable .MovementBigStanding ; 15 + jumptable .MovementBouncing ; 16 + jumptable .MovementScreenShake ; 17 + jumptable .MovementSpinClockwise ; 18 + jumptable .MovementSpinCounterclockwise ; 19 + jumptable .MovementBoulderDust ; 1a + jumptable .MovementShakingGrass ; 1b ; 4821 .Null_00: ; 4821 @@ -1030,7 +1029,7 @@ Function47dd: ; 47dd .Standing: ; 4869 call Function462a - call Function467b + call EndSpriteMovement ld hl, OBJECT_ACTION add hl, bc ld [hl], PERSON_ACTION_STAND @@ -1110,14 +1109,14 @@ Function47dd: ; 47dd ld a, [hl] and %00000011 or 0 - call Function4690 + call InitStep call Function6ec1 jr c, .ok2 ld de, SFX_STRENGTH call PlaySFX call SpawnStrengthBoulderDust - call Function463f + call UpdateTallGrassFlags ld hl, OBJECT_STEP_TYPE add hl, bc ld [hl], STEP_TYPE_0F @@ -1211,7 +1210,7 @@ Function47dd: ; 47dd ; 4958 .MovementBigStanding: ; 4958 - call Function467b + call EndSpriteMovement ld hl, OBJECT_DIRECTION_WALKING add hl, bc ld [hl], STANDING @@ -1225,7 +1224,7 @@ Function47dd: ; 47dd ; 496e .MovementBouncing: ; 496e - call Function467b + call EndSpriteMovement ld hl, OBJECT_DIRECTION_WALKING add hl, bc ld [hl], STANDING @@ -1253,7 +1252,7 @@ Function47dd: ; 47dd ; 4996 .MovementSpinInit: ; 4996 - call Function467b + call EndSpriteMovement call IncrementObjectMovementByteIndex .MovementSpinRepeat: ; 499c ld hl, OBJECT_ACTION @@ -1329,12 +1328,12 @@ Function47dd: ; 47dd add hl, de ld a, [hl] and 3 - ld d, $e + ld d, 1 * 8 + 6 cp DOWN jr z, .ok_13 cp UP jr z, .ok_13 - ld d, $c + ld d, 1 * 8 + 4 .ok_13 ld hl, OBJECT_SPRITE_Y_OFFSET @@ -1345,12 +1344,12 @@ Function47dd: ; 47dd ld [hl], 0 ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_13 + ld [hl], STEP_TYPE_TRACKING_OBJECT ret ; 4a21 .MovementEmote: ; 4a21 - call Function467b + call EndSpriteMovement call ._MovementShadow_Grass_Emote_BoulderDust ld hl, OBJECT_ACTION add hl, bc @@ -1360,18 +1359,18 @@ Function47dd: ; 47dd ld [hl], 0 ld hl, OBJECT_SPRITE_Y_OFFSET add hl, bc - ld [hl], -$10 + ld [hl], -2 * 8 ld hl, OBJECT_SPRITE_X_OFFSET add hl, bc ld [hl], 0 ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_13 + ld [hl], STEP_TYPE_TRACKING_OBJECT ret ; 4a46 .MovementBoulderDust: ; 4a46 - call Function467b + call EndSpriteMovement call ._MovementShadow_Grass_Emote_BoulderDust ld hl, OBJECT_ACTION add hl, bc @@ -1405,7 +1404,7 @@ endr ld [hl], e ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_13 + ld [hl], STEP_TYPE_TRACKING_OBJECT ret ; 4a81 @@ -1418,7 +1417,7 @@ endr ; 4a89 .MovementShakingGrass: ; 4a89 - call Function467b + call EndSpriteMovement call ._MovementShadow_Grass_Emote_BoulderDust ld hl, OBJECT_ACTION add hl, bc @@ -1432,7 +1431,7 @@ endr ld [hl], a ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_13 + ld [hl], STEP_TYPE_TRACKING_OBJECT ret ; 4aa8 @@ -1454,7 +1453,7 @@ endr ; 4abc .MovementScreenShake: ; 4abc - call Function467b + call EndSpriteMovement ld hl, OBJECT_ACTION add hl, bc ld [hl], PERSON_ACTION_00 @@ -1493,11 +1492,11 @@ endr ; 4af0 .RandomWalkContinue: ; 4af0 - call Function4690 + call InitStep call Function6ec1 ; check whether the object can move in that direction jr c, .NewDuration - call Function463f + call UpdateTallGrassFlags ld hl, OBJECT_ACTION add hl, bc ld [hl], PERSON_ACTION_STEP @@ -1519,7 +1518,7 @@ endr ret .NewDuration: ; 4b17 - call Function467b + call EndSpriteMovement call Function462a RandomStepDuration_Slow: ; 4b1d call Random @@ -1550,32 +1549,33 @@ SetRandomStepDuration: ; 4b2d Pointers4b45: ; 4b45 ; These pointers use OBJECT_STEP_TYPE. See constants/sprite_constants.asm - dw Function47bc ; 00 - dw Function47dd ; 01 - dw Function4e2b ; 02 npc walk - dw Function4ddd ; 03 - dw Function4e21 ; 04 - dw Function4e0c ; 05 - dw Function4e56 ; 06 player walk - dw Function4e47 ; 07 - dw Function4b86 ; 08 npc jump step - dw Function4bbf ; 09 player jump step - dw Function4e83 ; 0a half step - dw Function4dff ; 0b - dw Function4c18 ; 0c teleport from - dw Function4c89 ; 0d teleport to - dw Function4d14 ; 0e skyfall - dw Function4ecd ; 0f - dw Function4d7e ; 10 - dw Function4daf ; 11 - dw Function4dc8 ; 12 - dw Function4f04 ; 13 - dw Function4f33 ; 14 - dw Function4f33 ; 15 - dw Function4f77 ; 16 - dw Function4f7a ; 17 - dw Function4df0 ; 18 - dw Function4f83 ; 19 + jumptable_start + jumptable ObjectMovementReset ; 00 + jumptable MapObjectMovementPattern ; 01 + jumptable NPCStep ; 02 npc walk + jumptable Function4ddd ; 03 + jumptable Function4e21 ; 04 + jumptable Function4e0c ; 05 + jumptable PlayerStep ; 06 player walk + jumptable Function4e47 ; 07 + jumptable NPCJump ; 08 npc jump step + jumptable PlayerJump ; 09 player jump step + jumptable PlayerOrNPCHalfStep ; 0a half step + jumptable Function4dff ; 0b + jumptable TeleportFrom ; 0c teleport from + jumptable TeleportTo ; 0d teleport to + jumptable Skyfall ; 0e skyfall + jumptable Function4ecd ; 0f + jumptable GotBiteStep ; 10 + jumptable RockSmashStep ; 11 + jumptable ReturnDigStep ; 12 + jumptable Function4f04 ; 13 + jumptable Function4f33 ; 14 + jumptable Function4f33 ; 15 + jumptable Function4f77 ; 16 + jumptable Function4f7a ; 17 + jumptable Function4df0 ; 18 + jumptable SkyfallTop ; 19 ; 4b79 Function4b79: ; 4b79 @@ -1585,11 +1585,11 @@ Function4b79: ; 4b79 ret nz ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_STANDING + ld [hl], STEP_TYPE_SLEEP ret ; 4b86 -Function4b86: ; 4b86 +NPCJump: ; 4b86 call Object28AnonymousJumptable ; anonymous jumptable dw Function4b8d @@ -1603,7 +1603,7 @@ Function4b8d: ; 4b8d add hl, bc dec [hl] ret nz - call Function4600 + call CopyNextCoordsTileToStandingCoordsTile call GetNextTile ld hl, OBJECT_FLAGS2 add hl, bc @@ -1619,34 +1619,34 @@ Function4ba9: ; 4ba9 add hl, bc dec [hl] ret nz - call Function4600 + call CopyNextCoordsTileToStandingCoordsTile ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_STANDING + ld [hl], STEP_TYPE_SLEEP ret ; 4bbf -Function4bbf: ; 4bbf +PlayerJump: ; 4bbf call Object28AnonymousJumptable ; anonymous jumptable - dw Function4bca - dw Function4bd2 - dw Function4bf2 - dw Function4bfd + dw .initjump + dw .stepjump + dw .initland + dw .stepland ; 4bca -Function4bca: ; 4bca +.initjump: ; 4bca ld hl, wPlayerStepFlags set 7, [hl] call IncrementObjectStructField28 -Function4bd2: ; 4bd2 +.stepjump: ; 4bd2 call UpdateJumpPosition - call Function4738 + call UpdatePlayerStep ld hl, OBJECT_STEP_DURATION add hl, bc dec [hl] ret nz - call Function4600 + call CopyNextCoordsTileToStandingCoordsTile ld hl, OBJECT_FLAGS2 add hl, bc res 3, [hl] @@ -1657,28 +1657,28 @@ Function4bd2: ; 4bd2 ret ; 4bf2 -Function4bf2: ; 4bf2 +.initland: ; 4bf2 call GetNextTile ld hl, wPlayerStepFlags set 7, [hl] call IncrementObjectStructField28 -Function4bfd: ; 4bfd +.stepland: ; 4bfd call UpdateJumpPosition - call Function4738 + call UpdatePlayerStep ld hl, OBJECT_STEP_DURATION add hl, bc dec [hl] ret nz ld hl, wPlayerStepFlags set 6, [hl] - call Function4600 + call CopyNextCoordsTileToStandingCoordsTile ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_STANDING + ld [hl], STEP_TYPE_SLEEP ret ; 4c18 -Function4c18: ; 4c18 +TeleportFrom: ; 4c18 call Object28AnonymousJumptable ; anonymous jumptable dw Function4c23 @@ -1745,11 +1745,11 @@ Function4c5d: ; 4c5d ld [hl], 0 ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_STANDING + ld [hl], STEP_TYPE_SLEEP ret ; 4c89 -Function4c89: ; 4c89 +TeleportTo: ; 4c89 call Object28AnonymousJumptable ; anonymous jumptable dw Function4c9a @@ -1837,11 +1837,11 @@ Function4d01: ; 4d01 ld [hl], 0 ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_STANDING + ld [hl], STEP_TYPE_SLEEP ret ; 4d14 -Function4d14: ; 4d14 +Skyfall: ; 4d14 call Object28AnonymousJumptable ; anonymous jumptable dw Function4d1f @@ -1902,11 +1902,11 @@ Function4d6b: ; 4d6b ld [hl], 0 ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_STANDING + ld [hl], STEP_TYPE_SLEEP ret ; 4d7e -Function4d7e: ; 4d7e +GotBiteStep: ; 4d7e call Object28AnonymousJumptable ; anonymous jumptable dw Function4d85 @@ -1936,11 +1936,11 @@ Function4d94: ; 4d94 ld [hl], 0 ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_STANDING + ld [hl], STEP_TYPE_SLEEP ret ; 4daf -Function4daf: ; 4daf +RockSmashStep: ; 4daf call Function4db5 jp Function4b79 ; 4db5 @@ -1961,7 +1961,7 @@ Function4db5: ; 4db5 ret ; 4dc8 -Function4dc8: ; 4dc8 +ReturnDigStep: ; 4dc8 ld hl, OBJECT_STEP_DURATION add hl, bc ld a, [hl] @@ -1987,7 +1987,7 @@ Function4ddd: ; 4ddd ret nz ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_STANDING + ld [hl], STEP_TYPE_SLEEP ret ; 4df0 @@ -1999,7 +1999,7 @@ Function4df0: ; 4df0 add hl, bc dec [hl] ret nz - jp Function4357 + jp DeleteMapObject ; 4dff Function4dff: ; 4dff @@ -2009,7 +2009,7 @@ Function4dff: ; 4dff ret nz ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_STANDING + ld [hl], STEP_TYPE_SLEEP ret ; 4e0c @@ -2028,27 +2028,27 @@ Function4e13: ; 4e13 ld [hl], a call IncrementObjectStructField28 Function4e21: ; 4e21 - call Function4fb2 + call MobileFn_4fb2 ld hl, OBJECT_DIRECTION_WALKING add hl, bc ld [hl], STANDING ret ; 4e2b -Function4e2b: ; 4e2b - call Function4fb2 +NPCStep: ; 4e2b + call MobileFn_4fb2 call AddStepVector ld hl, OBJECT_STEP_DURATION add hl, bc dec [hl] ret nz - call Function4600 + call CopyNextCoordsTileToStandingCoordsTile ld hl, OBJECT_DIRECTION_WALKING add hl, bc ld [hl], STANDING ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_STANDING + ld [hl], STEP_TYPE_SLEEP ret ; 4e47 @@ -2058,24 +2058,24 @@ Function4e47: ; 4e47 add hl, bc dec [hl] ret nz - call Function4600 + call CopyNextCoordsTileToStandingCoordsTile jp RandomStepDuration_Slow ; 4e56 -Function4e56: ; 4e56 +PlayerStep: ; 4e56 ; AnimateStep? call Object28AnonymousJumptable ; anonymous jumptable - dw Function4e5d - dw Function4e65 + dw .init + dw .step ; 4e5d -Function4e5d: ; 4e5d +.init: ; 4e5d ld hl, wPlayerStepFlags set 7, [hl] call IncrementObjectStructField28 -Function4e65: ; 4e65 - call Function4738 +.step: ; 4e65 + call UpdatePlayerStep ld hl, OBJECT_STEP_DURATION add hl, bc dec [hl] @@ -2083,26 +2083,26 @@ Function4e65: ; 4e65 ld hl, wPlayerStepFlags set 6, [hl] - call Function4600 + call CopyNextCoordsTileToStandingCoordsTile ld hl, OBJECT_DIRECTION_WALKING add hl, bc ld [hl], STANDING ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_STANDING + ld [hl], STEP_TYPE_SLEEP ret ; 4e83 -Function4e83: ; 4e83 +PlayerOrNPCHalfStep: ; 4e83 call Object28AnonymousJumptable ; anonymous jumptable - dw Function4e8e - dw Function4ea4 - dw Function4ead - dw Function4ec0 + dw .init1 + dw .step1 + dw .init2 + dw .step2 ; 4e8e -Function4e8e: ; 4e8e +.init1: ; 4e8e ld hl, OBJECT_DIRECTION_WALKING add hl, bc ld [hl], STANDING @@ -2114,14 +2114,14 @@ Function4e8e: ; 4e8e add hl, bc ld [hl], 2 call IncrementObjectStructField28 -Function4ea4: ; 4ea4 +.step1: ; 4ea4 ld hl, OBJECT_STEP_DURATION add hl, bc dec [hl] ret nz call IncrementObjectStructField28 -Function4ead: ; 4ead - ld hl, OBJECT_29 +.init2: ; 4ead + ld hl, OBJECT_29 ; new facing add hl, bc ld a, [hl] ld hl, OBJECT_FACING @@ -2129,16 +2129,16 @@ Function4ead: ; 4ead ld [hl], a ld hl, OBJECT_STEP_DURATION add hl, bc - ld [hl], $2 + ld [hl], 2 call IncrementObjectStructField28 -Function4ec0: ; 4ec0 +.step2: ; 4ec0 ld hl, OBJECT_STEP_DURATION add hl, bc dec [hl] ret nz ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_STANDING + ld [hl], STEP_TYPE_SLEEP ret ; 4ecd @@ -2164,13 +2164,13 @@ Function4ecd: ; 4ecd ld hl, OBJECT_FLAGS2 add hl, bc res 2, [hl] - call Function4600 + call CopyNextCoordsTileToStandingCoordsTile ld hl, OBJECT_DIRECTION_WALKING add hl, bc ld [hl], STANDING ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_STANDING + ld [hl], STEP_TYPE_SLEEP ret ; 4f04 @@ -2206,7 +2206,7 @@ Function4f04: ; 4f04 ret nz .nope - jp Function4357 + jp DeleteMapObject ; 4f33 Function4f33: ; 4f33 @@ -2245,7 +2245,7 @@ Function4f43: ; 4f43 ret .ok - call Function4357 + call DeleteMapObject ret ; 4f6c @@ -2267,12 +2267,12 @@ Function4f77: ; 4f77 Function4f7a: ; 4f7a call Object28AnonymousJumptable ; anonymous jumptable - dw Function4f83 - dw Function4f83 - dw Function4f83 + dw SkyfallTop + dw SkyfallTop + dw SkyfallTop ; 4f83 -Function4f83: ; 4f83 +SkyfallTop: ; 4f83 call Object28AnonymousJumptable ; anonymous jumptable dw Function4f8a @@ -2302,15 +2302,11 @@ Function4f99: ; 4f99 ld [hl], 0 ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_STANDING + ld [hl], STEP_TYPE_SLEEP ret ; 4fb2 -Function4fb2: ; 4fb2 - ret -; 4fb3 - -Function4fb3: ; 4fb3 +MobileFn_4fb2: mobile ld hl, OBJECT_29 add hl, bc inc [hl] @@ -2839,7 +2835,7 @@ Function5688: ; 5688 ld hl, OBJECT_NEXT_TILE add hl, bc ld [hl], a - callba Function463f ; no need to farcall + callba UpdateTallGrassFlags ; no need to farcall ret ; 56a3 @@ -2996,12 +2992,12 @@ Function56cd: ; 56cd ; 576a Function576a:: ; 576a - call Function5771 + call .ResetStepVector call Function5781 ret ; 5771 -Function5771: ; 5771 +.ResetStepVector: ; 5771 xor a ld [wPlayerStepVectorX], a ld [wPlayerStepVectorY], a @@ -3040,7 +3036,7 @@ Function579d: ; 579d ld [wd04e], a ld [PlayerObjectStepFrame], a call Function57bc - callba CheckWarpCollision + callba CheckWarpFacingDown call c, SpawnInFacingDown call SpawnInCustomFacing ret diff --git a/engine/map_setup.asm b/engine/map_setup.asm index 7444c7fbe..8f7b0e333 100644 --- a/engine/map_setup.asm +++ b/engine/map_setup.asm @@ -33,11 +33,9 @@ MapSetupScripts: ; 15377 MapSetupScript_Teleport: ; 1538f db map_prolong_sprites - MapSetupScript_Fly: ; 15390 db map_fade_out_palettes db map_keep_roam - MapSetupScript_Warp: ; 15392 db map_lcd_off db map_sound_off @@ -61,7 +59,7 @@ MapSetupScript_Warp: ; 15392 db map_fade_in_palettes db map_animations_on db map_wildmons - db map_end_setup_script + db map_end MapSetupScript_BadWarp: ; 153a9 db map_load_spawn @@ -85,7 +83,7 @@ MapSetupScript_BadWarp: ; 153a9 db map_fade_in_palettes db map_animations_on db map_wildmons - db map_end_setup_script + db map_end MapSetupScript_Connection: ; 153bf db map_animations_off @@ -104,14 +102,12 @@ MapSetupScript_Connection: ; 153bf db map_wildmons db map_update_roam db map_animations_on - db map_end_setup_script + db map_end MapSetupScript_Fall: ; 153d0 db map_prolong_sprites - MapSetupScript_Door: ; 153d1 db map_fade_out_palettes - MapSetupScript_Train: ; 153d2 db map_load_warp db map_attributes @@ -133,7 +129,7 @@ MapSetupScript_Train: ; 153d2 db map_animations_on db map_wildmons db map_update_roam - db map_end_setup_script + db map_end MapSetupScript_ReloadMap: ; 153e7 db map_fade @@ -151,7 +147,7 @@ MapSetupScript_ReloadMap: ; 153e7 db map_fade_in_palettes db map_animations_on db map_wildmons - db map_end_setup_script + db map_end MapSetupScript_LinkReturn: ; 153f7 db map_fade @@ -170,7 +166,7 @@ MapSetupScript_LinkReturn: ; 153f7 db map_animations_on db map_wildmons db map_text_scroll_off - db map_end_setup_script + db map_end MapSetupScript_Continue: ; 15408 db map_lcd_off @@ -190,12 +186,12 @@ MapSetupScript_Continue: ; 15408 db map_fade_in_palettes db map_animations_on db map_wildmons - db map_end_setup_script + db map_end MapSetupScript_Submenu: ; 1541a db map_load_blocks db map_connection_blocks - db map_end_setup_script + db map_end ReadMapSetupScript: ; 1541d @@ -252,7 +248,7 @@ MapSetupCommands: ; 15440 dba RotatePalettesRightMapAndMusic ; 06 dba EnterMapMusic ; 07 dba ForceMapMusic ; 08 - dba RotatePalettesLeftMusic ; 09 + dba FadeInMusic ; 09 dba LoadBlockData ; 0a dba LoadNeighboringBlockData ; 0b dba SaveScreen ; 0c diff --git a/engine/mart.asm b/engine/mart.asm index 87c805c25..b4e655573 100755 --- a/engine/mart.asm +++ b/engine/mart.asm @@ -70,10 +70,10 @@ BargainShop: ; 15a84 Pharmacist: ; 15aae call FarReadMart call LoadStandardMenuDataHeader - ld hl, UnknownText_0x15e90 + ld hl, Text_Pharmacist_Intro call MartTextBox call BuyMenu - ld hl, UnknownText_0x15eae + ld hl, Text_Pharmacist_ComeAgain call MartTextBox ret ; 15ac4 @@ -185,9 +185,9 @@ StandardMart: ; 15b47 .TopMenu: ; 15b6e ld hl, MenuDataHeader_BuySell call CopyMenuDataHeader - call InterpretMenu2 + call VerticalMenu jr c, .quit - ld a, [MenuSelection2] + ld a, [wMenuCursorY] cp $1 jr z, .buy cp $2 @@ -369,7 +369,7 @@ BargainShopData: ; 15c51 BuyMenu: ; 15c62 call FadeToMenu - callba Function8000 + callba BlankScreen xor a ld [wd045 + 1], a ld a, 1 @@ -377,7 +377,7 @@ BuyMenu: ; 15c62 .loop call BuyMenuLoop ; menu loop jr nc, .loop - call ReturnToCallingMenu + call CloseSubmenu ret ; 15c7d @@ -470,7 +470,7 @@ endr BuyMenuLoop: ; 15cef - callba PlaceMoneyTopRightOW + callba PlaceMoneyTopRight call UpdateSprites ld hl, MenuDataHeader_Buy call CopyMenuDataHeader @@ -478,13 +478,13 @@ BuyMenuLoop: ; 15cef ld [wMenuCursorBuffer], a ld a, [wd045 + 1] ld [wMenuScrollPosition], a - call HandleScrollingMenu + call ScrollingMenu ld a, [wMenuScrollPosition] ld [wd045 + 1], a - ld a, [MenuSelection2] + ld a, [wMenuCursorY] ld [wd045], a call SpeechTextBox - ld a, [wcf73] + ld a, [wMenuJoypad] cp B_BUTTON jr z, .set_carry cp A_BUTTON @@ -493,7 +493,7 @@ BuyMenuLoop: ; 15cef .useless_pointer call MartAskPurchaseQuantity jr c, .cancel - call Function15d97 + call MartConfirmPurchase jr c, .cancel ld de, Money ld bc, hMoneyTemp @@ -546,12 +546,12 @@ StandardMartAskPurchaseQuantity: ld [wItemQuantityBuffer], a ld a, MARTTEXT_HOW_MANY call LoadBuyMenuText - callba Function24fc9 + callba SelectQuantityToBuy call ExitMenu ret ; 15d97 -Function15d97: ; 15d97 +MartConfirmPurchase: ; 15d97 predef PartyMonItemName ld a, MARTTEXT_COSTS_THIS_MUCH call LoadBuyMenuText @@ -606,7 +606,7 @@ RooftopSaleAskPurchaseQuantity: call .GetSalePrice ld a, 99 ld [wItemQuantityBuffer], a - callba Function24fcf + callba RooftopSale_SelectQuantityToBuy call ExitMenu ret ; 15df9 @@ -662,7 +662,7 @@ MenuDataHeader_Buy: ; 0x15e18 ; 15e30 .PrintBCDPrices: ; 15e30 - ld a, [wcf77] + ld a, [wScrollingMenuCursorPosition] ld c, a ld b, 0 ld hl, wMartItem1BCD @@ -764,7 +764,7 @@ Text_BargainShop_ComeAgain: ; 0x15e8b db "@" ; 0x15e90 -UnknownText_0x15e90: ; 0x15e90 +Text_Pharmacist_Intro: ; 0x15e90 ; What's up? Need some medicine? text_jump UnknownText_0x1c4e5f db "@" @@ -800,7 +800,7 @@ Text_Pharmacy_InsufficientFunds: ; 0x15ea9 db "@" ; 0x15eae -UnknownText_0x15eae: ; 0x15eae +Text_Pharmacist_ComeAgain: ; 0x15eae ; All right. See you around. text_jump UnknownText_0x1c4ef6 db "@" @@ -809,37 +809,36 @@ UnknownText_0x15eae: ; 0x15eae SellMenu: ; 15eb3 call DisableSpriteUpdates - callba Function106a5 -.asm_15ebc - callba Function106be + callba DepositSellInitPackBuffers +.loop + callba DepositSellPack ld a, [wcf66] and a - jp z, Function15ece - call Function15ee0 - jr .asm_15ebc -; 15ece + jp z, .quit + call .TryToSellItem + jr .loop -Function15ece: ; 15ece - call Function2b74 +.quit + call ReturnToMapWithSpeechTextbox and a ret ; 15ed3 -Function15ed3: ; unreferenced - ld hl, UnknownText_0x15edb +.NothingToSell: ; unreferenced + ld hl, .NothingToSellText call MenuTextBoxBackup and a ret ; 15edb -UnknownText_0x15edb: ; 0x15edb +.NothingToSellText: ; 0x15edb ; You don't have anything to sell. text_jump UnknownText_0x1c4f12 db "@" ; 0x15ee0 -Function15ee0: ; 15ee0 +.TryToSellItem: ; 15ee0 callba CheckItemMenu ld a, [wItemAttributeParamBuffer] ld hl, .jumptable @@ -875,8 +874,8 @@ Function15ee0: ; 15ee0 .okay_to_sell ld hl, Text_Mart_SellHowMany call PrintText - callba PlaceMoneyTopRightMenu - callba Function24fe1 + callba PlaceMoneyAtTopLeftOfTextbox + callba SelectQuantityToSell call ExitMenu jr c, .declined hlcoord 1, 14 @@ -899,7 +898,7 @@ Function15ee0: ; 15ee0 ld hl, Text_Mart_SoldForAmount call PrintTextBoxText call PlayTransactionSound - callba PlaceMoneyBottomLeftOW + callba PlaceMoneyBottomLeft call JoyWaitAorB .declined diff --git a/engine/math.asm b/engine/math.asm new file mode 100755 index 000000000..0cd6b0b47 --- /dev/null +++ b/engine/math.asm @@ -0,0 +1,196 @@ +_Multiply:: ; 66de + +; hMultiplier is one byte. + ld a, 8 + ld b, a + + xor a + ld [hProduct], a + ld [hMathBuffer + 1], a + ld [hMathBuffer + 2], a + ld [hMathBuffer + 3], a + ld [hMathBuffer + 4], a + + +.loop + ld a, [hMultiplier] + srl a + ld [hMultiplier], a + jr nc, .next + + ld a, [hMathBuffer + 4] + ld c, a + ld a, [hMultiplicand + 2] + add c + ld [hMathBuffer + 4], a + + ld a, [hMathBuffer + 3] + ld c, a + ld a, [hMultiplicand + 1] + adc c + ld [hMathBuffer + 3], a + + ld a, [hMathBuffer + 2] + ld c, a + ld a, [hMultiplicand + 0] + adc c + ld [hMathBuffer + 2], a + + ld a, [hMathBuffer + 1] + ld c, a + ld a, [hProduct] + adc c + ld [hMathBuffer + 1], a + +.next + dec b + jr z, .done + + +; hMultiplicand <<= 1 + + ld a, [hMultiplicand + 2] + add a + ld [hMultiplicand + 2], a + + ld a, [hMultiplicand + 1] + rla + ld [hMultiplicand + 1], a + + ld a, [hMultiplicand + 0] + rla + ld [hMultiplicand + 0], a + + ld a, [hProduct] + rla + ld [hProduct], a + + jr .loop + + +.done + ld a, [hMathBuffer + 4] + ld [hProduct + 3], a + + ld a, [hMathBuffer + 3] + ld [hProduct + 2], a + + ld a, [hMathBuffer + 2] + ld [hProduct + 1], a + + ld a, [hMathBuffer + 1] + ld [hProduct + 0], a + + ret +; 673e + + +_Divide:: ; 673e + xor a + ld [hMathBuffer + 0], a + ld [hMathBuffer + 1], a + ld [hMathBuffer + 2], a + ld [hMathBuffer + 3], a + ld [hMathBuffer + 4], a + + ld a, 9 + ld e, a + +.loop + ld a, [hMathBuffer + 0] + ld c, a + ld a, [hDividend + 1] + sub c + ld d, a + + ld a, [hDivisor] + ld c, a + ld a, [hDividend + 0] + sbc c + jr c, .next + + ld [hDividend + 0], a + + ld a, d + ld [hDividend + 1], a + + ld a, [hMathBuffer + 4] + inc a + ld [hMathBuffer + 4], a + + jr .loop + +.next + ld a, b + cp 1 + jr z, .done + + ld a, [hMathBuffer + 4] + add a + ld [hMathBuffer + 4], a + + ld a, [hMathBuffer + 3] + rla + ld [hMathBuffer + 3], a + + ld a, [hMathBuffer + 2] + rla + ld [hMathBuffer + 2], a + + ld a, [hMathBuffer + 1] + rla + ld [hMathBuffer + 1], a + + dec e + jr nz, .next2 + + ld e, 8 + ld a, [hMathBuffer + 0] + ld [hDivisor], a + xor a + ld [hMathBuffer + 0], a + + ld a, [hDividend + 1] + ld [hDividend + 0], a + + ld a, [hDividend + 2] + ld [hDividend + 1], a + + ld a, [hDividend + 3] + ld [hDividend + 2], a + +.next2 + ld a, e + cp 1 + jr nz, .okay + dec b + +.okay + ld a, [hDivisor] + srl a + ld [hDivisor], a + + ld a, [hMathBuffer + 0] + rr a + ld [hMathBuffer + 0], a + + jr .loop + +.done + ld a, [hDividend + 1] + ld [hDivisor], a + + ld a, [hMathBuffer + 4] + ld [hDividend + 3], a + + ld a, [hMathBuffer + 3] + ld [hDividend + 2], a + + ld a, [hMathBuffer + 2] + ld [hDividend + 1], a + + ld a, [hMathBuffer + 1] + ld [hDividend + 0], a + + ret +; 67c1 diff --git a/engine/menu.asm b/engine/menu.asm index 6978a0e54..074b2a28c 100755 --- a/engine/menu.asm +++ b/engine/menu.asm @@ -1,54 +1,57 @@ -Function2400e:: ; 2400e +_2DMenu_:: ; 2400e ld hl, CopyMenuData2 - ld a, [wcf94] + ld a, [wMenuData2_2DMenuItemStringsBank] rst FarCall - call Function24085 + + call Draw2DMenu call UpdateSprites call ApplyTilemap - call Function2408f + call Get2DMenuSelection ret ; 24022 -Function24022:: ; 24022 +_InterpretBattleMenu:: ; 24022 ld hl, CopyMenuData2 - ld a, [wcf94] + ld a, [wMenuData2_2DMenuItemStringsBank] rst FarCall - call Function24085 + + call Draw2DMenu callba MobileTextBorder call UpdateSprites call ApplyTilemap - call Function2408f + call Get2DMenuSelection ret ; 2403c -Function2403c:: ; 2403c +_InterpretMobileMenu:: ; 2403c ld hl, CopyMenuData2 - ld a, [wcf94] + ld a, [wMenuData2_2DMenuItemStringsBank] rst FarCall - call Function24085 + + call Draw2DMenu callba MobileTextBorder call UpdateSprites call ApplyTilemap - call Function2411a - ld hl, wcfa5 + call Init2DMenuCursorPosition + ld hl, w2DMenuFlags1 set 7, [hl] -.asm_2405a +.loop call DelayFrame callba Function10032e ld a, [wcd2b] and a - jr nz, .asm_24076 - call Function241ba - ld a, [wcfa8] + jr nz, .quit + call MobileMenuJoypad + ld a, [wMenuJoypadFilter] and c - jr z, .asm_2405a - call Function24098 + jr z, .loop + call Mobile_GetMenuSelection ret -.asm_24076 - ld a, [wcfa4] +.quit + ld a, [w2DMenuNumCols] ld c, a - ld a, [wcfa3] + ld a, [w2DMenuNumRows] call SimpleMultiply ld [wMenuCursorBuffer], a and a @@ -57,174 +60,173 @@ Function2403c:: ; 2403c -Function24085: ; 24085 +Draw2DMenu: ; 24085 xor a ld [hBGMapMode], a call MenuBox - call Function240db + call Place2DMenuItemStrings ret ; 2408f -Function2408f: ; 2408f - call Function2411a - call Function1bc9 - call Function1ff8 - -Function24098: ; 24098 +Get2DMenuSelection: ; 2408f + call Init2DMenuCursorPosition + call StaticMenuJoypad + call MenuClickSound +Mobile_GetMenuSelection: ; 24098 ld a, [wMenuData2Flags] bit 1, a - jr z, .asm_240a6 - call Function1bdd - bit 2, a - jr nz, .asm_240c9 + jr z, .skip + call GetMenuJoypad + bit SELECT_F, a + jr nz, .quit1 -.asm_240a6 +.skip ld a, [wMenuData2Flags] bit 0, a - jr nz, .asm_240b4 - call Function1bdd - bit 1, a - jr nz, .asm_240cb + jr nz, .skip2 + call GetMenuJoypad + bit B_BUTTON_F, a + jr nz, .quit2 -.asm_240b4 - ld a, [wcfa4] +.skip2 + ld a, [w2DMenuNumCols] ld c, a - ld a, [MenuSelection2] + ld a, [wMenuCursorY] dec a call SimpleMultiply ld c, a - ld a, [wcfaa] + ld a, [wMenuCursorX] add c ld [wMenuCursorBuffer], a and a ret -.asm_240c9 +.quit1 scf ret -.asm_240cb +.quit2 scf ret ; 240cd -Function240cd: ; 240cd +GetMenuNumberOfColumns: ; 240cd ld a, [wMenuData2Items] and $f ret ; 240d3 -Function240d3: ; 240d3 +GetMenuNumberOfRows: ; 240d3 ld a, [wMenuData2Items] swap a and $f ret ; 240db -Function240db: ; 240db - ld hl, wcf95 +Place2DMenuItemStrings: ; 240db + ld hl, wMenuData2_2DMenuItemStringsAddr ld e, [hl] inc hl ld d, [hl] call GetMenuTextStartCoord call Coord2Tile - call Function240d3 + call GetMenuNumberOfRows ld b, a -.asm_240eb +.row push bc push hl - call Function240cd + call GetMenuNumberOfColumns ld c, a -.asm_240f1 +.col push bc - ld a, [wcf94] - call Function201c + ld a, [wMenuData2_2DMenuItemStringsBank] + call Place2DMenuItemName inc de - ld a, [wcf93] + ld a, [wMenuData2Spacing] ld c, a - ld b, $0 + ld b, 0 add hl, bc pop bc dec c - jr nz, .asm_240f1 + jr nz, .col pop hl - ld bc, $28 + ld bc, 2 * SCREEN_WIDTH add hl, bc pop bc dec b - jr nz, .asm_240eb - ld hl, wcf98 + jr nz, .row + ld hl, wMenuData2_2DMenuFunctionAddr ld a, [hli] ld h, [hl] ld l, a or h ret z - ld a, [wcf97] + ld a, [wMenuData2_2DMenuFunctionBank] rst FarCall ret ; 2411a -Function2411a: ; 2411a (9:411a) +Init2DMenuCursorPosition: ; 2411a (9:411a) call GetMenuTextStartCoord ld a, b - ld [wcfa1], a + ld [w2DMenuCursorInitY], a dec c ld a, c - ld [wcfa2], a - call Function240d3 - ld [wcfa3], a - call Function240cd - ld [wcfa4], a - call Function24179 - call Function2418a - call Function24193 - ld a, [wcfa4] + ld [w2DMenuCursorInitX], a + call GetMenuNumberOfRows + ld [w2DMenuNumRows], a + call GetMenuNumberOfColumns + ld [w2DMenuNumCols], a + call .InitFlags_a + call .InitFlags_b + call .InitFlags_c + ld a, [w2DMenuNumCols] ld e, a ld a, [wMenuCursorBuffer] ld b, a xor a - ld d, $0 -.asm_24146 + ld d, 0 +.loop inc d add e cp b - jr c, .asm_24146 + jr c, .loop sub e ld c, a ld a, b sub c and a - jr z, .asm_24157 + jr z, .reset1 cp e - jr z, .asm_24159 - jr c, .asm_24159 -.asm_24157 - ld a, $1 -.asm_24159 - ld [wcfaa], a - ld a, [wcfa3] + jr z, .okay1 + jr c, .okay1 +.reset1 + ld a, 1 +.okay1 + ld [wMenuCursorX], a + ld a, [w2DMenuNumRows] ld e, a ld a, d and a - jr z, .asm_24169 + jr z, .reset2 cp e - jr z, .asm_2416b - jr c, .asm_2416b -.asm_24169 - ld a, $1 -.asm_2416b - ld [MenuSelection2], a + jr z, .okay2 + jr c, .okay2 +.reset2 + ld a, 1 +.okay2 + ld [wMenuCursorY], a xor a - ld [wcfab], a - ld [wcfac], a - ld [wcfad], a + ld [wCursorOffCharacter], a + ld [wCursorCurrentTile], a + ld [wCursorCurrentTile + 1], a ret ; 24179 -Function24179: ; 24179 +.InitFlags_a: ; 24179 xor a - ld hl, wcfa5 + ld hl, w2DMenuFlags1 ld [hli], a ld [hld], a ld a, [wMenuData2Flags] @@ -235,89 +237,85 @@ Function24179: ; 24179 ret ; 2418a -Function2418a: ; 2418a - ld a, [wcf93] +.InitFlags_b: ; 2418a + ld a, [wMenuData2Spacing] or $20 - ld [wcfa7], a + ld [w2DMenuCursorOffsets], a ret ; 24193 -Function24193: ; 24193 +.InitFlags_c: ; 24193 ld hl, wMenuData2Flags - ld a, $1 + ld a, A_BUTTON bit 0, [hl] - jr nz, .asm_2419e - or $2 - -.asm_2419e + jr nz, .skip + or B_BUTTON +.skip bit 1, [hl] - jr z, .asm_241a4 - or $4 - -.asm_241a4 - ld [wcfa8], a + jr z, .skip2 + or SELECT +.skip2 + ld [wMenuJoypadFilter], a ret ; 241a8 -Function241a8:: ; 241a8 - call Function24329 -Function241ab:: ; 241ab - ld hl, wcfa6 +_StaticMenuJoypad:: ; 241a8 + call Place2DMenuCursor +_ScrollingMenuJoypad:: ; 241ab + ld hl, w2DMenuFlags2 res 7, [hl] ld a, [hBGMapMode] push af - call Function24216 + call MenuJoypadLoop pop af ld [hBGMapMode], a ret ; 241ba -Function241ba: ; 241ba - ld hl, wcfa6 +MobileMenuJoypad: ; 241ba + ld hl, w2DMenuFlags2 res 7, [hl] ld a, [hBGMapMode] push af - call Function2431a - call Function24249 - jr nc, .asm_241cd - call Function24270 - -.asm_241cd + call Move2DMenuCursor + call Do2DMenuRTCJoypad + jr nc, .skip_joypad + call _2DMenuInterpretJoypad +.skip_joypad pop af ld [hBGMapMode], a - call Function1bdd + call GetMenuJoypad ld c, a ret ; 241d5 Function241d5: ; 241d5 - call Function24329 +; Unreferenced + call Place2DMenuCursor .loop - call Function2431a + call Move2DMenuCursor call Function10402d ; BUG: This function is in another bank. ; Pointer in current bank (9) is bogus. - call Function241fa + call .loop2 jr nc, .done - call Function24270 + call _2DMenuInterpretJoypad jr c, .done - ld a, [wcfa5] + ld a, [w2DMenuFlags1] bit 7, a jr nz, .done - call Function1bdd + call GetMenuJoypad ld c, a - ld a, [wcfa8] + ld a, [wMenuJoypadFilter] and c jr z, .loop .done ret -; 241fa -Function241fa: ; 241fa -.loop - call Function24259 +.loop2 + call Menu_WasButtonPressed ret c ld c, 1 ld b, 3 @@ -326,36 +324,36 @@ Function241fa: ; 241fa ret c callba Function100337 ret c - ld a, [wcfa5] + ld a, [w2DMenuFlags1] bit 7, a - jr z, .loop + jr z, .loop2 and a ret ; 24216 -Function24216: ; 24216 -.asm_24216 - call Function2431a - call Function24238 - call Function24249 - jr nc, .asm_24237 - call Function24270 - jr c, .asm_24237 - ld a, [wcfa5] +MenuJoypadLoop: ; 24216 +.loop + call Move2DMenuCursor + call .BGMap_OAM + call Do2DMenuRTCJoypad + jr nc, .done + call _2DMenuInterpretJoypad + jr c, .done + ld a, [w2DMenuFlags1] bit 7, a - jr nz, .asm_24237 - call Function1bdd + jr nz, .done + call GetMenuJoypad ld b, a - ld a, [wcfa8] + ld a, [wMenuJoypadFilter] and b - jr z, .asm_24216 + jr z, .loop -.asm_24237 +.done ret ; 24238 -Function24238: ; 24238 +.BGMap_OAM: ; 24238 ld a, [hOAMUpdate] push af ld a, $1 @@ -368,220 +366,478 @@ Function24238: ; 24238 ret ; 24249 -Function24249: ; 24249 -.asm_24249 +Do2DMenuRTCJoypad: ; 24249 +.loopRTC call RTC - call Function24259 + call Menu_WasButtonPressed ret c - ld a, [wcfa5] + ld a, [w2DMenuFlags1] bit 7, a - jr z, .asm_24249 + jr z, .loopRTC and a ret ; 24259 -Function24259: ; 24259 - ld a, [wcfa5] +Menu_WasButtonPressed: ; 24259 + ld a, [w2DMenuFlags1] bit 6, a - jr z, .asm_24266 - callab Function8cf62 + jr z, .skip_to_joypad + callab PlaySpriteAnimationsAndDelayFrame -.asm_24266 +.skip_to_joypad call JoyTextDelay - call Function1bdd + call GetMenuJoypad and a ret z scf ret ; 24270 -Function24270: ; 24270 - call Function1bdd - bit 0, a - jp nz, Function24318 - bit 1, a - jp nz, Function24318 - bit 2, a - jp nz, Function24318 - bit 3, a - jp nz, Function24318 - bit 4, a - jr nz, .asm_242fa - bit 5, a - jr nz, .asm_242dc - bit 6, a - jr nz, .asm_242be - bit 7, a - jr nz, .asm_242a0 +_2DMenuInterpretJoypad: ; 24270 + call GetMenuJoypad + bit A_BUTTON_F, a + jp nz, .a_b_start_select + bit B_BUTTON_F, a + jp nz, .a_b_start_select + bit SELECT_F, a + jp nz, .a_b_start_select + bit START_F, a + jp nz, .a_b_start_select + bit D_RIGHT_F, a + jr nz, .d_right + bit D_LEFT_F, a + jr nz, .d_left + bit D_UP_F, a + jr nz, .d_up + bit D_DOWN_F, a + jr nz, .d_down and a ret -.asm_24299: ; 24299 - ld hl, wcfa6 +.set_bit_7: ; 24299 + ld hl, w2DMenuFlags2 set 7, [hl] scf ret -.asm_242a0 - ld hl, MenuSelection2 - ld a, [wcfa3] +.d_down + ld hl, wMenuCursorY + ld a, [w2DMenuNumRows] cp [hl] - jr z, .asm_242ac + jr z, .check_wrap_around_down inc [hl] xor a ret -.asm_242ac - ld a, [wcfa5] +.check_wrap_around_down + ld a, [w2DMenuFlags1] bit 5, a - jr nz, .asm_242ba + jr nz, .wrap_around_down bit 3, a - jp nz, .asm_24299 + jp nz, .set_bit_7 xor a ret -.asm_242ba +.wrap_around_down ld [hl], $1 xor a ret -.asm_242be - ld hl, MenuSelection2 +.d_up + ld hl, wMenuCursorY ld a, [hl] dec a - jr z, .asm_242c8 + jr z, .check_wrap_around_up ld [hl], a xor a ret -.asm_242c8 - ld a, [wcfa5] +.check_wrap_around_up + ld a, [w2DMenuFlags1] bit 5, a - jr nz, .asm_242d6 + jr nz, .wrap_around_up bit 2, a - jp nz, .asm_24299 + jp nz, .set_bit_7 xor a ret -.asm_242d6 - ld a, [wcfa3] +.wrap_around_up + ld a, [w2DMenuNumRows] ld [hl], a xor a ret -.asm_242dc - ld hl, wcfaa +.d_left + ld hl, wMenuCursorX ld a, [hl] dec a - jr z, .asm_242e6 + jr z, .check_wrap_around_left ld [hl], a xor a ret -.asm_242e6 - ld a, [wcfa5] +.check_wrap_around_left + ld a, [w2DMenuFlags1] bit 4, a - jr nz, .asm_242f4 + jr nz, .wrap_around_left bit 1, a - jp nz, .asm_24299 + jp nz, .set_bit_7 xor a ret -.asm_242f4 - ld a, [wcfa4] +.wrap_around_left + ld a, [w2DMenuNumCols] ld [hl], a xor a ret -.asm_242fa - ld hl, wcfaa - ld a, [wcfa4] +.d_right + ld hl, wMenuCursorX + ld a, [w2DMenuNumCols] cp [hl] - jr z, .asm_24306 + jr z, .check_wrap_around_right inc [hl] xor a ret -.asm_24306 - ld a, [wcfa5] +.check_wrap_around_right + ld a, [w2DMenuFlags1] bit 4, a - jr nz, .asm_24314 + jr nz, .wrap_around_right bit 0, a - jp nz, .asm_24299 + jp nz, .set_bit_7 xor a ret -.asm_24314 +.wrap_around_right ld [hl], $1 xor a ret ; 24318 -Function24318: ; 24318 +.a_b_start_select: ; 24318 xor a ret ; 2431a -Function2431a: ; 2431a - ld hl, wcfac +Move2DMenuCursor: ; 2431a + ld hl, wCursorCurrentTile ld a, [hli] ld h, [hl] ld l, a ld a, [hl] - cp $ed - jr nz, Function24329 - ld a, [wcfab] + cp "▶" + jr nz, Place2DMenuCursor + ld a, [wCursorOffCharacter] ld [hl], a - -Function24329: ; 24329 - ld a, [wcfa1] +Place2DMenuCursor: ; 24329 + ld a, [w2DMenuCursorInitY] ld b, a - ld a, [wcfa2] + ld a, [w2DMenuCursorInitX] ld c, a call Coord2Tile - ld a, [wcfa7] + ld a, [w2DMenuCursorOffsets] swap a and $f ld c, a - ld a, [MenuSelection2] + ld a, [wMenuCursorY] ld b, a xor a dec b - jr z, .asm_24348 -.asm_24344 + jr z, .got_row +.row_loop add c dec b - jr nz, .asm_24344 + jr nz, .row_loop -.asm_24348 - ld c, $14 +.got_row + ld c, SCREEN_WIDTH call AddNTimes - ld a, [wcfa7] + ld a, [w2DMenuCursorOffsets] and $f ld c, a - ld a, [wcfaa] + ld a, [wMenuCursorX] ld b, a xor a dec b - jr z, .asm_2435f -.asm_2435b + jr z, .got_col +.col_loop add c dec b - jr nz, .asm_2435b + jr nz, .col_loop -.asm_2435f +.got_col ld c, a add hl, bc ld a, [hl] - cp $ed - jr z, .asm_2436b - ld [wcfab], a - ld [hl], $ed + cp "▶" + jr z, .cursor_on + ld [wCursorOffCharacter], a + ld [hl], "▶" -.asm_2436b +.cursor_on ld a, l - ld [wcfac], a + ld [wCursorCurrentTile], a ld a, h - ld [wcfad], a + ld [wCursorCurrentTile + 1], a ret ; 24374 + +_PushWindow:: ; 24374 + ld a, [rSVBK] + push af + ld a, $7 + ld [rSVBK], a + + ld hl, wWindowStackPointer + ld e, [hl] + inc hl + ld d, [hl] + push de + + ld b, $10 + ld hl, wMenuFlags +.loop + ld a, [hli] + ld [de], a + dec de + dec b + jr nz, .loop + +; If bit 6 or 7 of the menu flags is set, set bit 0 of the address +; at 7:[wWindowStackPointer], and draw the menu using the coordinates from the header. +; Otherwise, reset bit 0 of 7:[wWindowStackPointer]. + ld a, [wMenuFlags] + bit 6, a + jr nz, .bit_6 + bit 7, a + jr z, .not_bit_7 + +.bit_6 + ld hl, wWindowStackPointer + ld a, [hli] + ld h, [hl] + ld l, a + set 0, [hl] + call MenuBoxCoord2Tile + call .copy + call MenuBoxCoord2Attr + call .copy + jr .done + +.not_bit_7 + pop hl ; last-pushed register was de + push hl + ld a, [hld] + ld l, [hl] + ld h, a + res 0, [hl] + +.done + pop hl + call .ret ; empty function + ld a, h + ld [de], a + dec de + ld a, l + ld [de], a + dec de + ld hl, wWindowStackPointer + ld [hl], e + inc hl + ld [hl], d + + pop af + ld [rSVBK], a + ld hl, wWindowStackSize + inc [hl] + ret +; 243cd + +.copy: ; 243cd + call GetMenuBoxDims + inc b + inc c + call .ret ; empty function + +.row + push bc + push hl + +.col + ld a, [hli] + ld [de], a + dec de + dec c + jr nz, .col + + pop hl + ld bc, SCREEN_WIDTH + add hl, bc + pop bc + dec b + jr nz, .row + + ret +; 243e7 + +.ret: ; 243e7 + ret +; 243e8 + +_ExitMenu:: ; 243e8 + xor a + ld [hBGMapMode], a + + ld a, [rSVBK] + push af + ld a, $7 + ld [rSVBK], a + + call GetWindowStackTop + ld a, l + or h + jp z, Error_Cant_ExitMenu + ld a, l + ld [wWindowStackPointer], a + ld a, h + ld [wWindowStackPointer + 1], a + call PopWindow + ld a, [wMenuFlags] + bit 0, a + jr z, .loop + ld d, h + ld e, l + call RestoreTileBackup + +.loop + call GetWindowStackTop + ld a, h + or l + jr z, .done + call PopWindow + +.done + pop af + ld [rSVBK], a + ld hl, wWindowStackSize + dec [hl] + ret +; 24423 + +Function24423: ; 24423 +; Unreferenced + ld a, [VramState] + bit 0, a + ret z + xor a + call GetSRAMBank + hlcoord 0, 0 + ld de, sScratch + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT + call CopyBytes + call CloseSRAM + call OverworldTextModeSwitch + xor a + call GetSRAMBank + ld hl, sScratch + decoord 0, 0 + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT +.loop + ld a, [hl] + cp $61 + jr c, .next + ld [de], a +.next + inc hl + inc de + dec bc + ld a, c + or b + jr nz, .loop + call CloseSRAM + ret +; 2445d + +Error_Cant_ExitMenu: ; 2445d + ld hl, .Text_NoWindowsAvailableForPopping + call PrintText + call WaitBGMap +.InfiniteLoop + jr .InfiniteLoop +; 24468 + +.Text_NoWindowsAvailableForPopping: ; 24468 + text_jump UnknownText_0x1c46b7 + db "@" +; 2446d + +_InitVerticalMenuCursor:: ; 2446d + ld a, [wMenuData2Flags] + ld b, a + ld hl, w2DMenuCursorInitY + ld a, [wMenuBorderTopCoord] + inc a + bit 6, b + jr nz, .skip_offset + inc a +.skip_offset + ld [hli], a +; w2DMenuCursorInitX + ld a, [wMenuBorderLeftCoord] + inc a + ld [hli], a +; w2DMenuNumRows + ld a, [wMenuData2Items] + ld [hli], a +; w2DMenuNumCols + ld a, 1 + ld [hli], a +; w2DMenuFlags1 + ld [hl], $0 + bit 5, b + jr z, .skip_bit_5 + set 5, [hl] +.skip_bit_5 + ld a, [wMenuFlags] + bit 4, a + jr z, .skip_bit_6 + set 6, [hl] +.skip_bit_6 + inc hl +; w2DMenuFlags2 + xor a + ld [hli], a +; w2DMenuCursorOffsets + ln a, 2, 0 + ld [hli], a +; wMenuJoypadFilter + ld a, A_BUTTON + bit 0, b + jr nz, .skip_bit_1 + add B_BUTTON +.skip_bit_1 + ld [hli], a +; wMenuCursorY + ld a, [wMenuCursorBuffer] + and a + jr z, .load_at_the_top + ld c, a + ld a, [wMenuData2Items] + cp c + jr nc, .load_position +.load_at_the_top + ld c, 1 +.load_position + ld [hl], c + inc hl +; wMenuCursorX + ld a, 1 + ld [hli], a +; wCursorOffCharacter, wCursorCurrentTile + xor a +rept 3 + ld [hli], a +endr + ret +; 244c3 diff --git a/engine/mon_icons.asm b/engine/mon_icons.asm new file mode 100755 index 000000000..8d998408c --- /dev/null +++ b/engine/mon_icons.asm @@ -0,0 +1,450 @@ +LoadOverworldMonIcon: ; 8e82b + ld a, e + call ReadMonMenuIcon + ld l, a + ld h, 0 + add hl, hl + ld de, IconPointers + add hl, de + ld a, [hli] + ld e, a + ld d, [hl] + ld b, BANK(Icons) + ld c, 8 + ret +; 8e83f + +Function8e83f: ; 8e83f + push hl + push de + push bc + call Function8e849 + pop bc + pop de + pop hl + ret +; 8e849 + +Function8e849: ; 8e849 + ld d, 0 + ld hl, .jumptable +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; 8e854 + + +.jumptable: ; 8e854 (23:6854) + dw Function8e8d5 ; init + dw Function8e961 + dw Function8e97d + dw Function8e99a + dw Function8e898 + dw Function8e8b1 + dw Function8e862 + + +Function8e862: ; 8e862 (23:6862) + call InitPartyMenuIcon + call Function8e86c + call SetPartyMonIconAnimSpeed + ret + +Function8e86c: ; 8e86c (23:686c) + push bc + ld a, [hObjectStructIndexBuffer] + ld hl, PartyMon1Item + ld bc, PARTYMON_STRUCT_LENGTH + call AddNTimes + pop bc + ld a, [hl] + and a + jr z, .asm_8e890 + push hl + push bc + ld d, a + callab ItemIsMail + pop bc + pop hl + jr c, .asm_8e88e + ld a, $6 + jr .asm_8e892 +.asm_8e88e + ld a, $5 + ; jr .asm_8e892 +.asm_8e890 + ld a, $4 +.asm_8e892 + ld hl, SPRITEANIMSTRUCT_FRAMESET_ID + add hl, bc + ld [hl], a + ret + +Function8e898: ; 8e898 (23:6898) + call Function8e8d5 + ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID + add hl, bc + ld a, $0 + ld [hl], a + ld hl, SPRITEANIMSTRUCT_XCOORD + add hl, bc + ld a, 9 * 8 + ld [hl], a + ld hl, SPRITEANIMSTRUCT_YCOORD + add hl, bc + ld a, 9 * 8 + ld [hl], a + ret + +Function8e8b1: ; 8e8b1 (23:68b1) + call InitPartyMenuIcon + call SetPartyMonIconAnimSpeed + ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID + add hl, bc + ld a, $0 + ld [hl], a + ld hl, SPRITEANIMSTRUCT_XCOORD + add hl, bc + ld a, 3 * 8 + ld [hl], a + ld hl, SPRITEANIMSTRUCT_YCOORD + add hl, bc + ld a, 12 * 8 + ld [hl], a + ld a, c + ld [wc608], a + ld a, b + ld [wc608 + 1], a + ret + +Function8e8d5: ; 8e8d5 (23:68d5) + call InitPartyMenuIcon + call .SpawnItemIcon + call SetPartyMonIconAnimSpeed + ret + +.SpawnItemIcon: ; 8e8df (23:68df) + push bc + ld a, [hObjectStructIndexBuffer] + ld hl, PartyMon1Item + ld bc, PARTYMON_STRUCT_LENGTH + call AddNTimes + pop bc + ld a, [hl] + and a + ret z + push hl + push bc + ld d, a + callab ItemIsMail + pop bc + pop hl + jr c, .mail + ld a, $3 + jr .okay + +.mail + ld a, $2 +.okay + ld hl, SPRITEANIMSTRUCT_FRAMESET_ID + add hl, bc + ld [hl], a + ret + +InitPartyMenuIcon: ; 8e908 (23:6908) + ld a, [wCurIconTile] + push af + ld a, [hObjectStructIndexBuffer] + ld hl, PartySpecies + ld e, a + ld d, $0 + add hl, de + ld a, [hl] + call ReadMonMenuIcon + ld [CurIcon], a + call GetMemIconGFX + ld a, [hObjectStructIndexBuffer] +; y coord +rept 4 + add a +endr + add $1c + ld d, a +; x coord + ld e, $10 +; type is partymon icon + ld a, SPRITE_ANIM_INDEX_00 + call InitSpriteAnimStruct + pop af + ld hl, SPRITEANIMSTRUCT_TILE_ID + add hl, bc + ld [hl], a + ret + +SetPartyMonIconAnimSpeed: ; 8e936 (23:6936) + push bc + ld a, [hObjectStructIndexBuffer] + ld b, a + call .getspeed + ld a, b + pop bc + ld hl, SPRITEANIMSTRUCT_DURATIONOFFSET + add hl, bc + ld [hl], a + rlca + rlca + ld hl, SPRITEANIMSTRUCT_0D + add hl, bc + ld [hl], a + ret + +.getspeed: ; 8e94c (23:694c) + callba PlacePartymonHPBar + call GetHPPal + ld e, d + ld d, 0 + ld hl, .speeds + add hl, de + ld b, [hl] + ret +; 8e95e (23:695e) + +.speeds: ; 8e95e + db $00, $40, $80 +; 8e961 + +Function8e961: ; 8e961 (23:6961) + ld a, [wd265] + call ReadMonMenuIcon + ld [CurIcon], a + xor a + call GetIconGFX + depixel 4, 4, 4, 0 + ld a, SPRITE_ANIM_INDEX_00 + call InitSpriteAnimStruct + ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID + add hl, bc + ld [hl], $0 + ret + +Function8e97d: ; 8e97d (23:697d) + ld a, [wd265] + call ReadMonMenuIcon + ld [CurIcon], a + xor a + call GetIconGFX + ld d, 3 * 8 + 2 + ld e, 4 * 8 + 4 + ld a, SPRITE_ANIM_INDEX_00 + call InitSpriteAnimStruct + ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID + add hl, bc + ld [hl], SPRITE_ANIM_SEQ_NULL + ret + +Function8e99a: ; 8e99a (23:699a) + ld a, [wd265] + call ReadMonMenuIcon + ld [CurIcon], a + ld a, $62 + ld [wCurIconTile], a + call GetMemIconGFX + ret + +GetSpeciesIcon: ; 8e9ac +; Load species icon into VRAM at tile a + push de + ld a, [wd265] + call ReadMonMenuIcon + ld [CurIcon], a + pop de + ld a, e + call GetIconGFX + ret +; 8e9bc + + +FlyFunction_GetMonIcon: ; 8e9bc (23:69bc) + push de + ld a, [wd265] + call ReadMonMenuIcon + ld [CurIcon], a + pop de + ld a, e + call GetIcon_a + ret +; 8e9cc (23:69cc) + +GetMonIcon2: ; 8e9cc +; unreferenced + push de + ld a, [wd265] + call ReadMonMenuIcon + ld [CurIcon], a + pop de + call GetIcon_de + ret +; 8e9db + +GetMemIconGFX: ; 8e9db (23:69db) + ld a, [wCurIconTile] +GetIconGFX: ; 8e9de + call GetIcon_a + ld de, $80 ; 8 tiles + add hl, de + ld de, HeldItemIcons + lb bc, BANK(HeldItemIcons), 2 + call GetGFXUnlessMobile + ld a, [wCurIconTile] + add 10 + ld [wCurIconTile], a + ret + +HeldItemIcons: +INCBIN "gfx/icon/mail.2bpp" +INCBIN "gfx/icon/item.2bpp" +; 8ea17 + +GetIcon_de: ; 8ea17 +; Load icon graphics into VRAM starting from tile de. + ld l, e + ld h, d + jr GetIcon + +GetIcon_a: ; 8ea1b +; Load icon graphics into VRAM starting from tile a. + ld l, a + ld h, 0 + +GetIcon: ; 8ea1e +; Load icon graphics into VRAM starting from tile hl. + +; One tile is 16 bytes long. +rept 4 + add hl, hl +endr + + ld de, VTiles0 + add hl, de + push hl + +; The icons are contiguous, in order and of the same +; size, so the pointer table is somewhat redundant. + ld a, [CurIcon] + push hl + ld l, a + ld h, 0 + add hl, hl + ld de, IconPointers + add hl, de + ld a, [hli] + ld e, a + ld d, [hl] + pop hl + + lb bc, BANK(Icons), 8 + call GetGFXUnlessMobile + + pop hl + ret +; 8ea3f + +GetGFXUnlessMobile: ; 8ea3f + ld a, [wLinkMode] + cp LINK_MOBILE + jp nz, Request2bpp + jp Get2bpp_2 +; 8ea4a + +FreezeMonIcons: ; 8ea4a + ld hl, wSpriteAnimationStructs + ld e, PARTY_LENGTH + ld a, [wMenuCursorY] + ld d, a +.loop + ld a, [hl] + and a + jr z, .next + cp d + jr z, .loadwithtwo + ld a, SPRITE_ANIM_SEQ_NULL + jr .ok + +.loadwithtwo + ld a, SPRITE_ANIM_SEQ_02 + +.ok + push hl + ld c, l + ld b, h + ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID + add hl, bc + ld [hl], a + pop hl + +.next + ld bc, $10 + add hl, bc + dec e + jr nz, .loop + ret +; 8ea71 + +UnfreezeMonIcons: ; 8ea71 + ld hl, wSpriteAnimationStructs + ld e, PARTY_LENGTH +.loop + ld a, [hl] + and a + jr z, .next + push hl + ld c, l + ld b, h + ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID + add hl, bc + ld [hl], SPRITE_ANIM_SEQ_01 + pop hl +.next + ld bc, $10 + add hl, bc + dec e + jr nz, .loop + ret +; 8ea8c (23:6a8c) + +HoldSwitchmonIcon: ; 8ea8c + ld hl, wSpriteAnimationStructs + ld e, PARTY_LENGTH + ld a, [wSwitchMon] + ld d, a +.loop + ld a, [hl] + and a + jr z, .next + cp d + jr z, .is_switchmon + ld a, SPRITE_ANIM_SEQ_03 + jr .join_back + +.is_switchmon + ld a, SPRITE_ANIM_SEQ_02 +.join_back + push hl + ld c, l + ld b, h + ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID + add hl, bc + ld [hl], a + pop hl +.next + ld bc, $10 + add hl, bc + dec e + jr nz, .loop + ret + +INCLUDE "menu/mon_icons.asm" diff --git a/engine/mon_menu.asm b/engine/mon_menu.asm new file mode 100755 index 000000000..f560b1b15 --- /dev/null +++ b/engine/mon_menu.asm @@ -0,0 +1,344 @@ +MonMenuOptionStrings: ; 24caf + db "STATS@" + db "SWITCH@" + db "ITEM@" + db "CANCEL@" + db "MOVE@" + db "MAIL@" + db "ERROR!@" +; 24cd9 + +MonMenuOptions: ; 24cd9 + +; Moves + db MONMENU_FIELD_MOVE, MONMENU_CUT, CUT + db MONMENU_FIELD_MOVE, MONMENU_FLY, FLY + db MONMENU_FIELD_MOVE, MONMENU_SURF, SURF + db MONMENU_FIELD_MOVE, MONMENU_STRENGTH, STRENGTH + db MONMENU_FIELD_MOVE, MONMENU_FLASH, FLASH + db MONMENU_FIELD_MOVE, MONMENU_WATERFALL, WATERFALL + db MONMENU_FIELD_MOVE, MONMENU_WHIRLPOOL, WHIRLPOOL + db MONMENU_FIELD_MOVE, MONMENU_DIG, DIG + db MONMENU_FIELD_MOVE, MONMENU_TELEPORT, TELEPORT + db MONMENU_FIELD_MOVE, MONMENU_SOFTBOILED, SOFTBOILED + db MONMENU_FIELD_MOVE, MONMENU_HEADBUTT, HEADBUTT + db MONMENU_FIELD_MOVE, MONMENU_ROCKSMASH, ROCK_SMASH + db MONMENU_FIELD_MOVE, MONMENU_MILKDRINK, MILK_DRINK + db MONMENU_FIELD_MOVE, MONMENU_SWEETSCENT, SWEET_SCENT + +; Options + db MONMENU_MENUOPTION, MONMENU_STATS, 1 ; STATS + db MONMENU_MENUOPTION, MONMENU_SWITCH, 2 ; SWITCH + db MONMENU_MENUOPTION, MONMENU_ITEM, 3 ; ITEM + db MONMENU_MENUOPTION, MONMENU_CANCEL, 4 ; CANCEL + db MONMENU_MENUOPTION, MONMENU_MOVE, 5 ; MOVE + db MONMENU_MENUOPTION, MONMENU_MAIL, 6 ; MAIL + db MONMENU_MENUOPTION, MONMENU_ERROR, 7 ; ERROR! + + db -1 +; 24d19 + +MonSubmenu: ; 24d19 + xor a + ld [hBGMapMode], a + call GetMonSubmenuItems + callba FreezeMonIcons + ld hl, .MenuDataHeader + call LoadMenuDataHeader + call .GetTopCoord + call PopulateMonMenu + + ld a, 1 + ld [hBGMapMode], a + call MonMenuLoop + ld [MenuSelection], a + + call ExitMenu + ret +; 24d3f + +.MenuDataHeader: ; 24d3f + db $40 ; tile backup + db 00, 06 ; start coords + db 17, 19 ; end coords + dw 0 + db 1 ; default option +; 24d47 + +.GetTopCoord: ; 24d47 +; TopCoord = 1 + BottomCoord - 2 * (NumSubmenuItems + 1) + ld a, [Buffer1] + inc a + add a + ld b, a + ld a, [wMenuBorderBottomCoord] + sub b + inc a + ld [wMenuBorderTopCoord], a + call MenuBox + ret +; 24d59 + +MonMenuLoop: ; 24d59 +.loop + ld a, $a0 ; flags + ld [wMenuData2Flags], a + ld a, [Buffer1] ; items + ld [wMenuData2Items], a + call InitVerticalMenuCursor + ld hl, w2DMenuFlags1 + set 6, [hl] + call StaticMenuJoypad + ld de, SFX_READ_TEXT_2 + call PlaySFX + ld a, [hJoyPressed] + bit 0, a ; A + jr nz, .select + bit 1, a ; B + jr nz, .cancel + jr .loop + +.cancel + ld a, MONMENU_CANCEL ; CANCEL + ret + +.select + ld a, [wMenuCursorY] + dec a + ld c, a + ld b, 0 + ld hl, Buffer2 + add hl, bc + ld a, [hl] + ret +; 24d91 + +PopulateMonMenu: ; 24d91 + call MenuBoxCoord2Tile + ld bc, $2a ; 42 + add hl, bc + ld de, Buffer2 +.loop + ld a, [de] + inc de + cp -1 + ret z + push de + push hl + call GetMonMenuString + pop hl + call PlaceString + ld bc, $28 ; 40 + add hl, bc + pop de + jr .loop +; 24db0 + +GetMonMenuString: ; 24db0 + ld hl, MonMenuOptions + 1 + ld de, 3 + call IsInArray + dec hl + ld a, [hli] + cp 1 + jr z, .NotMove + inc hl + ld a, [hl] + ld [wd265], a + call GetMoveName + ret + +.NotMove + inc hl + ld a, [hl] + dec a + ld hl, MonMenuOptionStrings + call GetNthString + ld d, h + ld e, l + ret +; 24dd4 + +GetMonSubmenuItems: ; 24dd4 + call ResetMonSubmenu + ld a, [CurPartySpecies] + cp EGG + jr z, .egg + ld a, [wLinkMode] + and a + jr nz, .skip_moves + ld a, MON_MOVES + call GetPartyParamLocation + ld d, h + ld e, l + ld c, NUM_MOVES +.loop + push bc + push de + ld a, [de] + and a + jr z, .next + push hl + call IsFieldMove + pop hl + jr nc, .next + call AddMonMenuItem + +.next + pop de + inc de + pop bc + dec c + jr nz, .loop + +.skip_moves + ld a, MONMENU_STATS + call AddMonMenuItem + ld a, MONMENU_SWITCH + call AddMonMenuItem + ld a, MONMENU_MOVE + call AddMonMenuItem + ld a, [wLinkMode] + and a + jr nz, .skip2 + push hl + ld a, MON_ITEM + call GetPartyParamLocation + ld d, [hl] + callba ItemIsMail + pop hl + ld a, MONMENU_MAIL + jr c, .ok + ld a, MONMENU_ITEM + +.ok + call AddMonMenuItem + +.skip2 + ld a, [Buffer1] + cp NUM_MON_SUBMENU_ITEMS + jr z, .ok2 + ld a, MONMENU_CANCEL + call AddMonMenuItem + +.ok2 + call TerminateMonSubmenu + ret + +.egg + ld a, MONMENU_STATS + call AddMonMenuItem + ld a, MONMENU_SWITCH + call AddMonMenuItem + ld a, MONMENU_CANCEL + call AddMonMenuItem + call TerminateMonSubmenu + ret +; 24e52 + +IsFieldMove: ; 24e52 + ld b, a + ld hl, MonMenuOptions +.next + ld a, [hli] + cp -1 + jr z, .nope + cp MONMENU_MENUOPTION + jr z, .nope + ld d, [hl] + inc hl + ld a, [hli] + cp b + jr nz, .next + ld a, d + scf + +.nope + ret +; 24e68 + +ResetMonSubmenu: ; 24e68 + xor a + ld [Buffer1], a + ld hl, Buffer2 + ld bc, NUM_MON_SUBMENU_ITEMS + 1 + call ByteFill + ret +; 24e76 + +TerminateMonSubmenu: ; 24e76 + ld a, [Buffer1] + ld e, a + ld d, $0 + ld hl, Buffer2 + add hl, de + ld [hl], -1 + ret +; 24e83 + +AddMonMenuItem: ; 24e83 + push hl + push de + push af + ld a, [Buffer1] + ld e, a + inc a + ld [Buffer1], a + ld d, $0 + ld hl, Buffer2 + add hl, de + pop af + ld [hl], a + pop de + pop hl + ret +; 24e99 + +BattleMonMenu: ; 24e99 + ld hl, MenuDataHeader_0x24ed4 + call CopyMenuDataHeader + xor a + ld [hBGMapMode], a + call MenuBox + call UpdateSprites + call PlaceVerticalMenuItems + call WaitBGMap + call CopyMenuData2 + ld a, [wMenuData2Flags] + bit 7, a + jr z, .set_carry + call InitVerticalMenuCursor + ld hl, w2DMenuFlags1 + set 6, [hl] + call StaticMenuJoypad + ld de, SFX_READ_TEXT_2 + call PlaySFX + ld a, [hJoyPressed] + bit B_BUTTON_F, a + jr z, .clear_carry + ret z + +.set_carry + scf + ret + +.clear_carry + and a + ret +; 24ed4 + +MenuDataHeader_0x24ed4: ; 24ed4 + db $00 ; flags + db 11, 11 ; start coords + db 17, 19 ; end coords + dw MenuData2_0x24edc + db 1 ; default option +; 24edc + +MenuData2_0x24edc: ; 24edc + db $c0 ; flags + db 3 ; items + db "SWITCH@" + db "STATS@" + db "CANCEL@" +; 24ef2 diff --git a/engine/more_phone_scripts.asm b/engine/more_phone_scripts.asm index f0c835e92..d44f5b475 100644 --- a/engine/more_phone_scripts.asm +++ b/engine/more_phone_scripts.asm @@ -1,8 +1,8 @@ UnknownScript_0xa0000: special RandomPhoneMon - farscall UnknownScript_0xbde3f - if_equal $0, UnknownScript_0xa0013 - farscall UnknownScript_0xbe51e + farscall PhoneScript_Random2 + if_equal 0, UnknownScript_0xa0013 + farscall PhoneScript_Generic_Male farjump UnknownScript_0xa003e UnknownScript_0xa0013: @@ -10,9 +10,9 @@ UnknownScript_0xa0013: UnknownScript_0xa0017: special RandomPhoneMon - farscall UnknownScript_0xbde3f - if_equal $0, UnknownScript_0xa002a - farscall UnknownScript_0xbe5d0 + farscall PhoneScript_Random2 + if_equal 0, UnknownScript_0xa002a + farscall PhoneScript_Generic_Female farjump UnknownScript_0xa0055 UnknownScript_0xa002a: @@ -28,31 +28,31 @@ UnknownScript_0xa0036: UnknownScript_0xa003e: special RandomPhoneWildMon - farscall UnknownScript_0xbde3f - if_equal $0, UnknownScript_0xa0051 + farscall PhoneScript_Random2 + if_equal 0, UnknownScript_0xa0051 farscall UnknownScript_0xa017a - farjump UnknownScript_0xa0484 + farjump PhoneScript_HangupText_Male UnknownScript_0xa0051: farjump UnknownScript_0xa006c UnknownScript_0xa0055: special RandomPhoneWildMon - farscall UnknownScript_0xbde3f - if_equal $0, UnknownScript_0xa0068 + farscall PhoneScript_Random2 + if_equal 0, UnknownScript_0xa0068 farscall UnknownScript_0xa0226 - farjump UnknownScript_0xa053a + farjump PhoneScript_HangupText_Female UnknownScript_0xa0068: farjump UnknownScript_0xa0074 UnknownScript_0xa006c: farscall UnknownScript_0xa0278 - farjump UnknownScript_0xa0484 + farjump PhoneScript_HangupText_Male UnknownScript_0xa0074: farscall UnknownScript_0xa0324 - farjump UnknownScript_0xa053a + farjump PhoneScript_HangupText_Female UnknownScript_0xa007c: checkcode VAR_CALLERID @@ -76,87 +76,87 @@ UnknownScript_0xa007c: .Jack: farwritetext UnknownText_0x1740c0 - keeptextopen + buttonsound end .Gaven: farwritetext UnknownText_0x174a24 - keeptextopen + buttonsound end .Jose: farwritetext UnknownText_0x174f2f - keeptextopen + buttonsound end .Joey: farwritetext UnknownText_0x175530 - keeptextopen + buttonsound end .Wade: farwritetext UnknownText_0x1757d4 - keeptextopen + buttonsound end .Ralph: farwritetext UnknownText_0x175bc4 - keeptextopen + buttonsound end .Anthony: farwritetext UnknownText_0x176a2f - keeptextopen + buttonsound end .Todd: farwritetext UnknownText_0x176e5d - keeptextopen + buttonsound end .Arnie: farwritetext UnknownText_0x649dc - keeptextopen + buttonsound end .Alan: farwritetext UnknownText_0x64cbd - keeptextopen + buttonsound end .Chad: farwritetext UnknownText_0x65271 - keeptextopen + buttonsound end .Derek: farwritetext UnknownText_0x65ab2 - keeptextopen + buttonsound end .Tully: farwritetext UnknownText_0x65de4 - keeptextopen + buttonsound end .Brent: farwritetext UnknownText_0x660be - keeptextopen + buttonsound end .Vance: farwritetext UnknownText_0x66980 - keeptextopen + buttonsound end .Wilton: farwritetext UnknownText_0x66afc - keeptextopen + buttonsound end .Parry: farwritetext UnknownText_0x66f9f - keeptextopen + buttonsound end UnknownScript_0xa0128: @@ -172,42 +172,42 @@ UnknownScript_0xa0128: .Beverly: farwritetext UnknownText_0x174688 - keeptextopen + buttonsound end .Beth: farwritetext UnknownText_0x174c7f - keeptextopen + buttonsound end .Reena: farwritetext UnknownText_0x1752f5 - keeptextopen + buttonsound end .Liz: farwritetext UnknownText_0x175fda - keeptextopen + buttonsound end .Gina: farwritetext UnknownText_0x1771fd - keeptextopen + buttonsound end .Dana: farwritetext UnknownText_0x64f74 - keeptextopen + buttonsound end .Tiffany: farwritetext UnknownText_0x665ad - keeptextopen + buttonsound end .Erin: farwritetext UnknownText_0x6717a - keeptextopen + buttonsound end UnknownScript_0xa017a: @@ -232,87 +232,87 @@ UnknownScript_0xa017a: .Jack: farwritetext UnknownText_0x174106 - keeptextopen + buttonsound end .Gaven: farwritetext UnknownText_0x174a80 - keeptextopen + buttonsound end .Jose: farwritetext UnknownText_0x174f90 - keeptextopen + buttonsound end .Joey: farwritetext UnknownText_0x175591 - keeptextopen + buttonsound end .Wade: farwritetext UnknownText_0x175869 - keeptextopen + buttonsound end .Ralph: farwritetext UnknownText_0x175c24 - keeptextopen + buttonsound end .Anthony: farwritetext UnknownText_0x176aef - keeptextopen + buttonsound end .Todd: farwritetext UnknownText_0x176e9c - keeptextopen + buttonsound end .Arnie: farwritetext UnknownText_0x64a13 - keeptextopen + buttonsound end .Alan: farwritetext UnknownText_0x64cf3 - keeptextopen + buttonsound end .Chad: farwritetext UnknownText_0x65318 - keeptextopen + buttonsound end .Derek: farwritetext UnknownText_0x65b29 - keeptextopen + buttonsound end .Tully: farwritetext UnknownText_0x65e42 - keeptextopen + buttonsound end .Brent: farwritetext UnknownText_0x6613c - keeptextopen + buttonsound end .Vance: farwritetext UnknownText_0x669b2 - keeptextopen + buttonsound end .Wilton: farwritetext UnknownText_0x66b3e - keeptextopen + buttonsound end .Parry: farwritetext UnknownText_0x66fc0 - keeptextopen + buttonsound end UnknownScript_0xa0226: @@ -328,42 +328,42 @@ UnknownScript_0xa0226: .Beverly: farwritetext UnknownText_0x1746c3 - keeptextopen + buttonsound end .Beth: farwritetext UnknownText_0x174cf6 - keeptextopen + buttonsound end .Reena: farwritetext UnknownText_0x17536b - keeptextopen + buttonsound end .Liz: farwritetext UnknownText_0x17602d - keeptextopen + buttonsound end .Gina: farwritetext UnknownText_0x177237 - keeptextopen + buttonsound end .Dana: farwritetext UnknownText_0x64fb2 - keeptextopen + buttonsound end .Tiffany: farwritetext UnknownText_0x66605 - keeptextopen + buttonsound end .Erin: farwritetext UnknownText_0x671a4 - keeptextopen + buttonsound end UnknownScript_0xa0278: @@ -388,87 +388,87 @@ UnknownScript_0xa0278: .Jack: farwritetext UnknownText_0x174165 - keeptextopen + buttonsound end .Gaven: farwritetext UnknownText_0x174b2d - keeptextopen + buttonsound end .Jose: farwritetext UnknownText_0x174ffd - keeptextopen + buttonsound end .Joey: farwritetext UnknownText_0x175611 - keeptextopen + buttonsound end .Wade: farwritetext UnknownText_0x1758e4 - keeptextopen + buttonsound end .Ralph: farwritetext UnknownText_0x175c9f - keeptextopen + buttonsound end .Anthony: farwritetext UnknownText_0x176b45 - keeptextopen + buttonsound end .Todd: farwritetext UnknownText_0x176eee - keeptextopen + buttonsound end .Arnie: farwritetext UnknownText_0x64a71 - keeptextopen + buttonsound end .Alan: farwritetext UnknownText_0x64d4f - keeptextopen + buttonsound end .Chad: farwritetext UnknownText_0x65399 - keeptextopen + buttonsound end .Derek: farwritetext UnknownText_0x65bc8 - keeptextopen + buttonsound end .Tully: farwritetext UnknownText_0x65eac - keeptextopen + buttonsound end .Brent: farwritetext UnknownText_0x6618c - keeptextopen + buttonsound end .Vance: farwritetext UnknownText_0x669ed - keeptextopen + buttonsound end .Wilton: farwritetext UnknownText_0x66b8f - keeptextopen + buttonsound end .Parry: farwritetext UnknownText_0x67001 - keeptextopen + buttonsound end UnknownScript_0xa0324: @@ -484,53 +484,53 @@ UnknownScript_0xa0324: .Beverly: farwritetext UnknownText_0x174734 - keeptextopen + buttonsound end .Beth: farwritetext UnknownText_0x174d86 - keeptextopen + buttonsound end .Reena: farwritetext UnknownText_0x1753c5 - keeptextopen + buttonsound end .Liz: farwritetext UnknownText_0x176095 - keeptextopen + buttonsound end .Gina: farwritetext UnknownText_0x177297 - keeptextopen + buttonsound end .Dana: farwritetext UnknownText_0x6501c - keeptextopen + buttonsound end .Tiffany: farwritetext UnknownText_0x66688 - keeptextopen + buttonsound end .Erin: farwritetext UnknownText_0x671eb - keeptextopen + buttonsound end UnknownScript_0xa0376: - farscall UnknownScript_0xa0386 - farjump UnknownScript_0xa0484 + farscall PhoneScript_RematchText_Male + farjump PhoneScript_HangupText_Male UnknownScript_0xa037e: - farscall UnknownScript_0xa0432 - farjump UnknownScript_0xa053a + farscall PhoneScript_RematchText_Female + farjump PhoneScript_HangupText_Female -UnknownScript_0xa0386: +PhoneScript_RematchText_Male: checkcode VAR_CALLERID if_equal PHONE_SCHOOLBOY_JACK, .Jack if_equal PHONE_SAILOR_HUEY, .Huey @@ -552,90 +552,90 @@ UnknownScript_0xa0386: .Jack: farwritetext UnknownText_0x1741e1 - keeptextopen + buttonsound end .Huey: farwritetext UnknownText_0x1748ea - keeptextopen + buttonsound end .Gaven: farwritetext UnknownText_0x174bc5 - keeptextopen + buttonsound end .Jose: farwritetext UnknownText_0x17507d - keeptextopen + buttonsound end .Joey: farwritetext UnknownText_0x175693 - keeptextopen + buttonsound end .Wade: farwritetext UnknownText_0x175976 - keeptextopen + buttonsound end .Ralph: farwritetext UnknownText_0x175d40 - keeptextopen + buttonsound end .Anthony: farwritetext UnknownText_0x176bee - keeptextopen + buttonsound end .Todd: farwritetext UnknownText_0x176f60 - keeptextopen + buttonsound end .Arnie: farwritetext UnknownText_0x64ada - keeptextopen + buttonsound end .Alan: farwritetext UnknownText_0x64da4 - keeptextopen + buttonsound end .Chad: farwritetext UnknownText_0x65419 - keeptextopen + buttonsound end .Tully: farwritetext UnknownText_0x65f17 - keeptextopen + buttonsound end .Brent: farwritetext UnknownText_0x66214 - keeptextopen + buttonsound end .Vance: farwritetext UnknownText_0x66a3a - keeptextopen + buttonsound end .Wilton: farwritetext UnknownText_0x66bf3 - keeptextopen + buttonsound end .Parry: farwritetext UnknownText_0x67096 - keeptextopen + buttonsound end -UnknownScript_0xa0432: +PhoneScript_RematchText_Female: checkcode VAR_CALLERID if_equal PHONE_COOLTRAINERF_BETH, .Beth if_equal PHONE_COOLTRAINERF_REENA, .Reena @@ -647,37 +647,37 @@ UnknownScript_0xa0432: .Beth: farwritetext UnknownText_0x174e4e - keeptextopen + buttonsound end .Reena: farwritetext UnknownText_0x17543a - keeptextopen + buttonsound end .Liz: farwritetext UnknownText_0x17610a - keeptextopen + buttonsound end .Gina: farwritetext UnknownText_0x1772e2 - keeptextopen + buttonsound end .Dana: farwritetext UnknownText_0x65091 - keeptextopen + buttonsound end .Tiffany: farwritetext UnknownText_0x66730 - keeptextopen + buttonsound end .Erin: farwritetext UnknownText_0x6722e - keeptextopen + buttonsound end UnknownScript_0xa047a: @@ -688,7 +688,7 @@ UnknownScript_0xa047f: farwritetext UnknownText_0x66796 end -UnknownScript_0xa0484: +PhoneScript_HangupText_Male: checkcode VAR_CALLERID if_equal PHONE_SCHOOLBOY_JACK, .Jack if_equal PHONE_SAILOR_HUEY, .Huey @@ -791,7 +791,7 @@ UnknownScript_0xa0484: farwritetext UnknownText_0x670eb end -UnknownScript_0xa053a: +PhoneScript_HangupText_Female: checkcode VAR_CALLERID if_equal PHONE_POKEFAN_BEVERLY, .Beverly if_equal PHONE_COOLTRAINERF_BETH, .Beth @@ -840,7 +840,7 @@ UnknownScript_0xa0584: farjump UnknownScript_0xa0000 UnknownScript_0xa058e: - farjump UnknownScript_0xa0484 + farjump PhoneScript_HangupText_Male UnknownScript_0xa0592: scall UnknownScript_0xa05a0 @@ -848,7 +848,7 @@ UnknownScript_0xa0592: farjump UnknownScript_0xa0017 UnknownScript_0xa059c: - farjump UnknownScript_0xa053a + farjump PhoneScript_HangupText_Female UnknownScript_0xa05a0: special RandomPhoneRareWildMon @@ -861,38 +861,38 @@ UnknownScript_0xa05a4: .Wade: farwritetext UnknownText_0x1759f7 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male .Derek: farwritetext UnknownText_0x65c66 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa05be: farwritetext UnknownText_0x64032 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa05c6: farwritetext UnknownText_0x177378 - keeptextopen - jump UnknownScript_0xa053a + buttonsound + jump PhoneScript_HangupText_Female UnknownScript_0xa05ce: farwritetext UnknownText_0x64b5f - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa05d6: farwritetext UnknownText_0x175dd9 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa05de: farwritetext UnknownText_0x176c61 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa05e6: checkcode VAR_CALLERID @@ -952,271 +952,271 @@ UnknownScript_0xa061e: UnknownScript_0xa0644: farwritetext UnknownText_0x176feb - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa064c: farwritetext UnknownText_0x66dc5 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa0654: - random $b - if_equal $0, UnknownScript_0xa0682 - if_equal $1, UnknownScript_0xa068a - if_equal $2, UnknownScript_0xa0692 - if_equal $3, UnknownScript_0xa069a - if_equal $4, UnknownScript_0xa06a2 - if_equal $5, UnknownScript_0xa06aa - if_equal $6, UnknownScript_0xa06b2 - if_equal $7, UnknownScript_0xa06ba - if_equal $8, UnknownScript_0xa06c2 - if_equal $9, UnknownScript_0xa06ca - if_equal $a, UnknownScript_0xa06d2 + random 11 + if_equal 0, UnknownScript_0xa0682 + if_equal 1, UnknownScript_0xa068a + if_equal 2, UnknownScript_0xa0692 + if_equal 3, UnknownScript_0xa069a + if_equal 4, UnknownScript_0xa06a2 + if_equal 5, UnknownScript_0xa06aa + if_equal 6, UnknownScript_0xa06b2 + if_equal 7, UnknownScript_0xa06ba + if_equal 8, UnknownScript_0xa06c2 + if_equal 9, UnknownScript_0xa06ca + if_equal 10, UnknownScript_0xa06d2 UnknownScript_0xa0682: farwritetext UnknownText_0x174261 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa068a: farwritetext UnknownText_0x17429d - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa0692: farwritetext UnknownText_0x1742ee - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa069a: farwritetext UnknownText_0x174340 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa06a2: farwritetext UnknownText_0x174391 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa06aa: farwritetext UnknownText_0x1743e3 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa06b2: farwritetext UnknownText_0x174433 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa06ba: farwritetext UnknownText_0x174485 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa06c2: farwritetext UnknownText_0x1744d6 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa06ca: farwritetext UnknownText_0x174522 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa06d2: farwritetext UnknownText_0x174571 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa06da: - random $a - if_equal $0, UnknownScript_0xa0704 - if_equal $1, UnknownScript_0xa070c - if_equal $2, UnknownScript_0xa0714 - if_equal $3, UnknownScript_0xa071c - if_equal $4, UnknownScript_0xa0724 - if_equal $5, UnknownScript_0xa072c - if_equal $6, UnknownScript_0xa0734 - if_equal $7, UnknownScript_0xa073c - if_equal $8, UnknownScript_0xa0744 - if_equal $9, UnknownScript_0xa074c + random 10 + if_equal 0, UnknownScript_0xa0704 + if_equal 1, UnknownScript_0xa070c + if_equal 2, UnknownScript_0xa0714 + if_equal 3, UnknownScript_0xa071c + if_equal 4, UnknownScript_0xa0724 + if_equal 5, UnknownScript_0xa072c + if_equal 6, UnknownScript_0xa0734 + if_equal 7, UnknownScript_0xa073c + if_equal 8, UnknownScript_0xa0744 + if_equal 9, UnknownScript_0xa074c UnknownScript_0xa0704: farwritetext UnknownText_0x176223 - keeptextopen - jump UnknownScript_0xa053a + buttonsound + jump PhoneScript_HangupText_Female UnknownScript_0xa070c: farwritetext UnknownText_0x1762c3 - keeptextopen - jump UnknownScript_0xa053a + buttonsound + jump PhoneScript_HangupText_Female UnknownScript_0xa0714: farwritetext UnknownText_0x17638a - keeptextopen - jump UnknownScript_0xa053a + buttonsound + jump PhoneScript_HangupText_Female UnknownScript_0xa071c: farwritetext UnknownText_0x176424 - keeptextopen - jump UnknownScript_0xa053a + buttonsound + jump PhoneScript_HangupText_Female UnknownScript_0xa0724: farwritetext UnknownText_0x1764eb - keeptextopen - jump UnknownScript_0xa053a + buttonsound + jump PhoneScript_HangupText_Female UnknownScript_0xa072c: farwritetext UnknownText_0x176599 - keeptextopen - jump UnknownScript_0xa053a + buttonsound + jump PhoneScript_HangupText_Female UnknownScript_0xa0734: farwritetext UnknownText_0x1766ac - keeptextopen - jump UnknownScript_0xa053a + buttonsound + jump PhoneScript_HangupText_Female UnknownScript_0xa073c: farwritetext UnknownText_0x17674f - keeptextopen - jump UnknownScript_0xa053a + buttonsound + jump PhoneScript_HangupText_Female UnknownScript_0xa0744: farwritetext UnknownText_0x176816 - keeptextopen - jump UnknownScript_0xa053a + buttonsound + jump PhoneScript_HangupText_Female UnknownScript_0xa074c: farwritetext UnknownText_0x17686d - keeptextopen - jump UnknownScript_0xa053a + buttonsound + jump PhoneScript_HangupText_Female UnknownScript_0xa0754: - random $a - if_equal $0, UnknownScript_0xa077e - if_equal $1, UnknownScript_0xa0786 - if_equal $2, UnknownScript_0xa078e - if_equal $3, UnknownScript_0xa0796 - if_equal $4, UnknownScript_0xa079e - if_equal $5, UnknownScript_0xa07a6 - if_equal $6, UnknownScript_0xa07ae - if_equal $7, UnknownScript_0xa07b6 - if_equal $8, UnknownScript_0xa07be - if_equal $9, UnknownScript_0xa07c6 + random 10 + if_equal 0, UnknownScript_0xa077e + if_equal 1, UnknownScript_0xa0786 + if_equal 2, UnknownScript_0xa078e + if_equal 3, UnknownScript_0xa0796 + if_equal 4, UnknownScript_0xa079e + if_equal 5, UnknownScript_0xa07a6 + if_equal 6, UnknownScript_0xa07ae + if_equal 7, UnknownScript_0xa07b6 + if_equal 8, UnknownScript_0xa07be + if_equal 9, UnknownScript_0xa07c6 UnknownScript_0xa077e: farwritetext UnknownText_0x65481 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa0786: farwritetext UnknownText_0x654ea - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa078e: farwritetext UnknownText_0x65555 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa0796: farwritetext UnknownText_0x655c7 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa079e: farwritetext UnknownText_0x65628 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa07a6: farwritetext UnknownText_0x6569b - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa07ae: farwritetext UnknownText_0x6574a - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa07b6: farwritetext UnknownText_0x65810 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa07be: farwritetext UnknownText_0x658c6 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa07c6: farwritetext UnknownText_0x65969 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa07ce: - random $a - if_equal $0, UnknownScript_0xa07f8 - if_equal $1, UnknownScript_0xa0800 - if_equal $2, UnknownScript_0xa0808 - if_equal $3, UnknownScript_0xa0810 - if_equal $4, UnknownScript_0xa0818 - if_equal $5, UnknownScript_0xa0820 - if_equal $6, UnknownScript_0xa0828 - if_equal $7, UnknownScript_0xa0830 - if_equal $8, UnknownScript_0xa0838 - if_equal $9, UnknownScript_0xa0840 + random 10 + if_equal 0, UnknownScript_0xa07f8 + if_equal 1, UnknownScript_0xa0800 + if_equal 2, UnknownScript_0xa0808 + if_equal 3, UnknownScript_0xa0810 + if_equal 4, UnknownScript_0xa0818 + if_equal 5, UnknownScript_0xa0820 + if_equal 6, UnknownScript_0xa0828 + if_equal 7, UnknownScript_0xa0830 + if_equal 8, UnknownScript_0xa0838 + if_equal 9, UnknownScript_0xa0840 UnknownScript_0xa07f8: farwritetext UnknownText_0x662bc - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa0800: farwritetext UnknownText_0x662fc - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa0808: farwritetext UnknownText_0x66335 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa0810: farwritetext UnknownText_0x66366 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa0818: farwritetext UnknownText_0x663a1 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa0820: farwritetext UnknownText_0x663e6 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa0828: farwritetext UnknownText_0x66421 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa0830: farwritetext UnknownText_0x6645f - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa0838: farwritetext UnknownText_0x6649b - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa0840: farwritetext UnknownText_0x664dd - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa0848: checkevent EVENT_OPENED_MT_SILVER @@ -1244,232 +1244,232 @@ UnknownScript_0xa0848: checkflag ENGINE_PLAINBADGE iftrue UnknownScript_0xa0898 farwritetext UnknownText_0x646a3 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa0898: farwritetext UnknownText_0x64099 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa08a0: farwritetext UnknownText_0x640e6 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa08a8: farwritetext UnknownText_0x6416d - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa08b0: farwritetext UnknownText_0x641e8 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa08b8: farwritetext UnknownText_0x64247 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa08c0: farwritetext UnknownText_0x642bb - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa08c8: farwritetext UnknownText_0x643d4 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa08d0: farwritetext UnknownText_0x64448 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa08d8: farwritetext UnknownText_0x6455b - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa08e0: farwritetext UnknownText_0x645ff - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa08e8: farwritetext UnknownText_0x646df - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa08f0: farwritetext UnknownText_0x647d8 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa08f8: farwritetext UnknownText_0x1745c2 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa0900: farwritetext UnknownText_0x17485b - keeptextopen - jump UnknownScript_0xa053a + buttonsound + jump PhoneScript_HangupText_Female UnknownScript_0xa0908: farwritetext UnknownText_0x17496b - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa0910: farwritetext UnknownText_0x174c29 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa0918: farwritetext UnknownText_0x174ec5 - keeptextopen - jump UnknownScript_0xa053a + buttonsound + jump PhoneScript_HangupText_Female UnknownScript_0xa0920: farwritetext UnknownText_0x17519b - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa0928: farwritetext UnknownText_0x17549b - keeptextopen - jump UnknownScript_0xa053a + buttonsound + jump PhoneScript_HangupText_Female UnknownScript_0xa0930: farwritetext UnknownText_0x17571d - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa0938: farwritetext UnknownText_0x175abe - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa0940: farwritetext UnknownText_0x175eaf - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa0948: farwritetext UnknownText_0x1768b0 - keeptextopen - jump UnknownScript_0xa053a + buttonsound + jump PhoneScript_HangupText_Female UnknownScript_0xa0950: farwritetext UnknownText_0x176d32 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa0958: farwritetext UnknownText_0x1770fb - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa0960: farwritetext UnknownText_0x177465 - keeptextopen - jump UnknownScript_0xa053a + buttonsound + jump PhoneScript_HangupText_Female UnknownScript_0xa0968: farwritetext UnknownText_0x64bc6 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa0970: farwritetext UnknownText_0x64e90 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa0978: farwritetext UnknownText_0x65161 - keeptextopen - jump UnknownScript_0xa053a + buttonsound + jump PhoneScript_HangupText_Female UnknownScript_0xa0980: farwritetext UnknownText_0x65a23 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa0988: farwritetext UnknownText_0x65d5c - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa0990: farwritetext UnknownText_0x65ff2 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa0998: farwritetext UnknownText_0x6651e - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa09a0: farwritetext UnknownText_0x66882 - keeptextopen - jump UnknownScript_0xa053a + buttonsound + jump PhoneScript_HangupText_Female UnknownScript_0xa09a8: farwritetext UnknownText_0x66aa5 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa09b0: farwritetext UnknownText_0x66ca7 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa09b8: farwritetext UnknownText_0x67106 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa09c0: farwritetext UnknownText_0x67294 - keeptextopen - jump UnknownScript_0xa053a + buttonsound + jump PhoneScript_HangupText_Female UnknownScript_0xa09c8: - random $3 - if_equal $0, UnknownScript_0xa09d6 - if_equal $1, UnknownScript_0xa09de - if_equal $2, UnknownScript_0xa09e6 + random 3 + if_equal 0, UnknownScript_0xa09d6 + if_equal 1, UnknownScript_0xa09de + if_equal 2, UnknownScript_0xa09e6 UnknownScript_0xa09d6: farwritetext UnknownText_0x64846 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa09de: farwritetext UnknownText_0x64881 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa09e6: farwritetext UnknownText_0x648dc - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa09ee: checkcode VAR_KENJI_BREAK - if_equal $2, UnknownScript_0xa0a00 - if_equal $1, UnknownScript_0xa0a08 + if_equal 2, UnknownScript_0xa0a00 + if_equal 1, UnknownScript_0xa0a08 farwritetext UnknownText_0x66e17 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa0a00: farwritetext UnknownText_0x66e67 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa0a08: checkmorn @@ -1478,18 +1478,18 @@ UnknownScript_0xa0a08: iftrue UnknownScript_0xa0a25 setevent EVENT_KENJI_ON_BREAK farwritetext UnknownText_0x66f11 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa0a1d: farwritetext UnknownText_0x66ed3 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa0a25: farwritetext UnknownText_0x66f52 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa0a2d: farwritetext UnknownText_0x174638 @@ -1589,53 +1589,53 @@ UnknownScript_0xa0aa0: UnknownScript_0xa0aa5: farwritetext UnknownText_0x174895 - keeptextopen - jump UnknownScript_0xa053a + buttonsound + jump PhoneScript_HangupText_Female UnknownScript_0xa0aad: farwritetext UnknownText_0x17529c - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa0ab5: farwritetext UnknownText_0x175b6d - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa0abd: farwritetext UnknownText_0x17750e - keeptextopen - jump UnknownScript_0xa053a + buttonsound + jump PhoneScript_HangupText_Female UnknownScript_0xa0ac5: farwritetext UnknownText_0x64f1a - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa0acd: farwritetext UnknownText_0x6520f - keeptextopen - jump UnknownScript_0xa053a + buttonsound + jump PhoneScript_HangupText_Female UnknownScript_0xa0ad5: farwritetext UnknownText_0x65da6 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa0add: farwritetext UnknownText_0x66087 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa0ae5: farwritetext UnknownText_0x6691d - keeptextopen - jump UnknownScript_0xa053a + buttonsound + jump PhoneScript_HangupText_Female UnknownScript_0xa0aed: farwritetext UnknownText_0x66d45 - keeptextopen - jump UnknownScript_0xa0484 + buttonsound + jump PhoneScript_HangupText_Male UnknownScript_0xa0af5: farwritetext UnknownText_0x175f70 diff --git a/engine/movement.asm b/engine/movement.asm index 86a2eb6fb..fc297cfee 100644 --- a/engine/movement.asm +++ b/engine/movement.asm @@ -88,7 +88,7 @@ MovementPointers: ; 5075 dw Movement_56 ; 56 dw Movement_rock_smash ; 57 dw Movement_return_dig ; 58 - dw Movement_59 ; 59 + dw Movement_skyfall_top ; 59 ; 5129 @@ -113,10 +113,10 @@ Movement_skyfall: ; 5137 ret ; 513e -Movement_59: ; 513e +Movement_skyfall_top: ; 513e ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_19 + ld [hl], STEP_TYPE_SKYFALL_TOP ret ; 5145 @@ -193,7 +193,7 @@ Movement_fish_cast_rod: ; 51ab ld [hl], PERSON_ACTION_FISHING ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_STANDING + ld [hl], STEP_TYPE_SLEEP ret ; 51b8 @@ -219,7 +219,7 @@ Movement_step_end: ; 51c1 ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_STANDING + ld [hl], STEP_TYPE_SLEEP ret ; 51db @@ -248,7 +248,7 @@ Movement_48: ; 51db ; 51fd Movement_remove_person: ; 51fd - call Function4357 + call DeleteMapObject ld hl, wObjectFollow_Leader ld a, [hMapObjectIndexBuffer] cp [hl] @@ -726,7 +726,7 @@ Movement_half_step_right: ; 53fc jr HalfStep HalfStep: ; 5400 - ld hl, OBJECT_29 + ld hl, OBJECT_29 ; new facing add hl, bc ld [hl], a @@ -741,8 +741,8 @@ HalfStep: ; 5400 ; 5412 NormalStep: ; 5412 - call Function4690 - call Function463f + call InitStep + call UpdateTallGrassFlags ld hl, OBJECT_ACTION add hl, bc ld [hl], PERSON_ACTION_STEP @@ -778,8 +778,8 @@ NormalStep: ; 5412 ; 5446 TurningStep: ; 5446 - call Function4690 - call Function463f + call InitStep + call UpdateTallGrassFlags ld hl, OBJECT_ACTION add hl, bc @@ -804,8 +804,8 @@ TurningStep: ; 5446 SlideStep: ; 5468 - call Function4690 - call Function463f + call InitStep + call UpdateTallGrassFlags ld hl, OBJECT_ACTION add hl, bc @@ -830,7 +830,7 @@ SlideStep: ; 5468 JumpStep: ; 548a - call Function4690 + call InitStep ld hl, OBJECT_31 add hl, bc ld [hl], $0 diff --git a/engine/mysterygift.asm b/engine/mysterygift.asm index 43cbe52d1..987c6ac2a 100755 --- a/engine/mysterygift.asm +++ b/engine/mysterygift.asm @@ -15,7 +15,9 @@ DoMysteryGift: ; 1048ba (41:48ba) ld [wca02], a ld a, [rIE] push af + call Function104a95 + ld d, a xor a ld [rIF], a @@ -37,7 +39,7 @@ DoMysteryGift: ; 1048ba (41:48ba) cp $6c jp nz, .CommunicationError ld a, [wc900] - cp $3 + cp 3 jr z, .skip_checks call .CheckAlreadyGotFiveGiftsToday ld hl, .Text_MaxFiveGifts ; Only 5 gifts a day @@ -46,28 +48,28 @@ DoMysteryGift: ; 1048ba (41:48ba) ld hl, .Text_MaxOneGiftPerPerson ; Only one gift a day per person jp c, .PrintTextAndExit .skip_checks - ld a, [wc962] + ld a, [wMysteryGiftPlayerBackupItem] and a jp nz, .GiftWaiting ld a, [wc912] and a jp nz, .FriendNotReady ld a, [wc900] - cp $3 + cp 3 jr z, .skip_append_save call .AddMysteryGiftPartnerID ld a, [wc900] - cp $4 + cp 4 jr z, .skip_append_save call .SaveMysteryGiftTrainerName callba RestoreMobileEventIndex callba MobileFn_1060a9 callba BackupMobileEventIndex .skip_append_save - ld a, [wc90f] + ld a, [wMysteryGiftPartnerSentDeco] and a jr z, .item - ld a, [wc911] + ld a, [wMysteryGiftPartnerWhichDeco] ld c, a callba MysteryGiftGetDecoration push bc @@ -85,7 +87,7 @@ DoMysteryGift: ; 1048ba (41:48ba) .item call GetMysteryGiftBank - ld a, [wc910] + ld a, [wMysteryGiftPartnerWhichItem] ld c, a callba MysteryGiftGetItemHeldEffect ld a, c @@ -249,7 +251,7 @@ Function104a95: ; 104a95 (41:4a95) ld a, [hPrintNum9] cp $2 jr z, Function104b22 - ld hl, $ffb3 + ld hl, hPrintNum1 ld b, $1 call Function104d56 jr nz, .ly_loop @@ -323,7 +325,7 @@ Function104b22: ; 104b22 (41:4b22) jp Function104bd0 Function104b40: ; 104b40 (41:4b40) - ld hl, $ffb3 + ld hl, hPrintNum1 ld b, $1 call Function104d56 ret nz @@ -333,14 +335,14 @@ Function104b49: ; 104b49 (41:4b49) ld a, [hPrintNum10] cp $6c ret nz - ld a, [$ffb3] + ld a, [hPrintNum1] cp $96 jp nz, Function104d32 ld a, $90 - ld [$ffb3], a + ld [hPrintNum1], a call Function104d38 ret nz - ld hl, $ffb3 + ld hl, hPrintNum1 ld b, $1 call Function104d4e ret nz @@ -362,8 +364,8 @@ Function104b49: ; 104b49 (41:4b49) Function104b88: ; 104b88 (41:4b88) ld a, $96 - ld [$ffb3], a - ld hl, $ffb3 + ld [hPrintNum1], a + ld hl, hPrintNum1 ld b, $1 call Function104d4e ret nz @@ -373,7 +375,7 @@ Function104b88: ; 104b88 (41:4b88) ret nz call Function104d43 ret nz - ld hl, $ffb3 + ld hl, hPrintNum1 ld b, $1 call Function104d56 ret nz @@ -381,7 +383,7 @@ Function104b88: ; 104b88 (41:4b88) ld a, [hPrintNum10] cp $6c ret nz - ld a, [$ffb3] + ld a, [hPrintNum1] cp $90 jp nz, Function104d32 call Function104d38 @@ -407,13 +409,13 @@ Function104bd0: ; 104bd0 (41:4bd0) dec [hl] jr z, .asm_104c18 ld hl, wMysteryGiftTrainerData - ld de, wc900 - ld bc, $14 + ld de, wMysteryGiftPartnerData + ld bc, wMysteryGiftPartnerDataEnd - wMysteryGiftPartnerData call CopyBytes ld a, [wMysteryGiftTrainerData] cp $3 jr nc, .asm_104c18 - callba Function10510b + callba StagePartyDataForMysteryGift call Function1050fb ld a, $26 ld [wca02], a @@ -479,7 +481,7 @@ Function104c2d: ; 104c2d (41:4c2d) jp Function104d1c Function104c8a: ; 104c8a (41:4c8a) - ld hl, $ffb3 + ld hl, hPrintNum1 ld b, $1 call Function104d56 ret nz @@ -487,14 +489,14 @@ Function104c8a: ; 104c8a (41:4c8a) ld a, [hPrintNum10] cp $6c ret nz - ld a, [$ffb3] + ld a, [hPrintNum1] cp $3c jp nz, Function104d32 swap a - ld [$ffb3], a + ld [hPrintNum1], a call Function104d38 ret nz - ld hl, $ffb3 + ld hl, hPrintNum1 ld b, $1 call Function104d4e ret nz @@ -516,8 +518,8 @@ Function104c8a: ; 104c8a (41:4c8a) Function104cd2: ; 104cd2 (41:4cd2) ld a, $3c - ld [$ffb3], a - ld hl, $ffb3 + ld [hPrintNum1], a + ld hl, hPrintNum1 ld b, $1 call Function104d4e ret nz @@ -527,7 +529,7 @@ Function104cd2: ; 104cd2 (41:4cd2) ret nz call Function104d43 ret nz - ld hl, $ffb3 + ld hl, hPrintNum1 ld b, $1 call Function104d56 ret nz @@ -535,7 +537,7 @@ Function104cd2: ; 104cd2 (41:4cd2) ld a, [hPrintNum10] cp $6c ret nz - ld a, [$ffb3] + ld a, [hPrintNum1] swap a cp $3c jp nz, Function104d32 @@ -702,22 +704,23 @@ Function104ddd: ; 104ddd (41:4ddd) ld e, d ld a, $1 ld [hPrintNum9], a -.asm_104de4 +.loop call Function105038 ld b, $2 ld c, rRP % $100 ld a, [hMoneyTemp + 1] bit 1, a - jr z, .asm_104df6 + jr z, .next ld a, $10 ld [hPrintNum10], a ret -.asm_104df6 + +.next bit 0, a jr nz, asm_104e3a ld a, [$ff00+c] and b - jr nz, .asm_104de4 + jr nz, .loop Function104dfe: ; 104dfe (41:4dfe) ld c, rRP % $100 @@ -1181,11 +1184,11 @@ RestoreMysteryGift: ; 1050ea (41:50ea) Function1050fb: ; 1050fb (41:50fb) ld hl, wMysteryGiftTrainerData xor a - ld b, $26 -.asm_105101 + ld b, wMysteryGiftTrainerDataEnd - wMysteryGiftTrainerData +.loop ld [hli], a dec b - jr nz, .asm_105101 + jr nz, .loop ret @@ -1195,29 +1198,35 @@ GetMysteryGiftBank: ; 105106 ; 10510b -Function10510b: ; 10510b (41:510b) +StagePartyDataForMysteryGift: ; 10510b (41:510b) +; You will be sending this data to your mystery gift partner. +; Structure is the same as a trainer with species and moves +; defined. ld a, BANK(sPokemonData) call GetSRAMBank - ld de, OverworldMap + ld de, wMysteryGiftStaging ld bc, sPokemonData + PartyMons - wPokemonData ld hl, sPokemonData + PartySpecies - wPokemonData -.asm_105119 +.loop ld a, [hli] - cp $ff - jr z, .asm_105148 + cp -1 + jr z, .party_end cp EGG - jr z, .asm_10513e + jr z, .next push hl + ; copy level ld hl, MON_LEVEL add hl, bc ld a, [hl] ld [de], a inc de + ; copy species ld hl, MON_SPECIES add hl, bc ld a, [hl] ld [de], a inc de + ; copy moves ld hl, MON_MOVES add hl, bc push bc @@ -1225,16 +1234,16 @@ Function10510b: ; 10510b (41:510b) call CopyBytes pop bc pop hl -.asm_10513e +.next push hl ld hl, PARTYMON_STRUCT_LENGTH add hl, bc ld b, h ld c, l pop hl - jr .asm_105119 -.asm_105148 - ld a, $ff + jr .loop +.party_end + ld a, -1 ld [de], a ld a, $26 ld [wca00], a @@ -1246,7 +1255,7 @@ Function105153: ; 105153 (41:5153) ld hl, MysteryGiftGFX ld de, VTiles2 tile $00 ld a, BANK(MysteryGiftGFX) - ld bc, Function105688 - MysteryGiftGFX + ld bc, MysteryGiftGFXEnd - MysteryGiftGFX call FarCopyBytes hlcoord 0, 0 ld a, $42 @@ -1267,13 +1276,13 @@ Function105153: ; 105153 (41:5153) ld [hl], a hlcoord 7, 1 ld a, $12 - call Function10522e + call .Load5GFX hlcoord 2, 2 ld a, $17 - call Function105236 + call .Load16GFX hlcoord 2, 3 ld a, $27 - call Function105236 + call .Load16GFX hlcoord 9, 4 ld a, $37 ld [hli], a @@ -1283,19 +1292,19 @@ Function105153: ; 105153 (41:5153) ld [hl], $4 hlcoord 1, 3 ld a, $5 - call Function105246 + call .Load14Column ld a, $9 hlcoord 18, 5 - call Function105242 + call .Load11Column hlcoord 2, 5 ld a, $b - call Function105251 + call .Load16Row hlcoord 2, 16 ld a, $7 - call Function105251 + call .Load16Row hlcoord 2, 5 ld a, $d - call Function10522e + call .Load5GFX hlcoord 7, 5 ld [hl], $c hlcoord 18, 5 @@ -1306,16 +1315,16 @@ Function105153: ; 105153 (41:5153) ld [hl], $6 hlcoord 2, 6 ld a, $3a - call Function105251 + call .Load16Row hlcoord 2, 15 ld a, $40 - call Function105251 + call .Load16Row hlcoord 2, 6 ld a, $3c - call Function10523e + call .Load9Column hlcoord 17, 6 ld a, $3e - call Function10523e + call .Load9Column hlcoord 2, 6 ld [hl], $39 hlcoord 17, 6 @@ -1331,55 +1340,55 @@ Function105153: ; 105153 (41:5153) call SetPalettes ret -Function10522e: ; 10522e (41:522e) - ld b, $5 - jr asm_105238 +.Load5GFX: ; 10522e (41:522e) + ld b, 5 + jr .gfx_loop ; 105232 (41:5232) -Function105232: ; unreferenced - ld b, 6 - jr asm_105238 +.Load6GFX: ; unreferenced + ld b, 6 + jr .gfx_loop -Function105236: ; 105236 (41:5236) - ld b, $10 +.Load16GFX: ; 105236 (41:5236) + ld b, 16 -asm_105238: ; 105238 (41:5238) +.gfx_loop: ; 105238 (41:5238) ld [hli], a inc a dec b - jr nz, asm_105238 + jr nz, .gfx_loop ret -Function10523e: ; 10523e (41:523e) - ld b, $9 - jr asm_105248 +.Load9Column: ; 10523e (41:523e) + ld b, 9 + jr .col_loop -Function105242: ; 105242 (41:5242) - ld b, $b - jr asm_105248 +.Load11Column: ; 105242 (41:5242) + ld b, 11 + jr .col_loop -Function105246: ; 105246 (41:5246) - ld b, $e +.Load14Column: ; 105246 (41:5246) + ld b, 14 -asm_105248: ; 105248 (41:5248) +.col_loop: ; 105248 (41:5248) ld [hl], a - ld de, $14 + ld de, SCREEN_WIDTH add hl, de dec b - jr nz, asm_105248 + jr nz, .col_loop ret -Function105251: ; 105251 (41:5251) - ld b, $10 -.asm_105253 +.Load16Row: ; 105251 (41:5251) + ld b, 16 +.row_loop ld [hli], a dec b - jr nz, .asm_105253 + jr nz, .row_loop ret MysteryGiftGFX: ; 105258 INCBIN "gfx/misc/mystery_gift.2bpp" - +MysteryGiftGFXEnd: Function105688: ; 105688 (41:5688) call ClearTileMap @@ -1411,15 +1420,15 @@ Function105688: ; 105688 (41:5688) ld c, 60 call DelayFrames call Function105777 - ld hl, Text_10575e + ld hl, Text_ReceivedCard call PrintText ld de, wMysteryGiftTrainerData callba Function8ac70 ld a, c ld [wd265], a - ld hl, Text_105768 + ld hl, Text_CardNotRegistered jr c, asm_105726 - ld hl, Text_105763 + ld hl, Text_ListedCardAsNumber jr asm_105726 Function1056eb: ; 1056eb (41:56eb) @@ -1453,12 +1462,12 @@ endr Function105712: ; 105712 (41:5712) call Function105777 - ld hl, Text_10576d + ld hl, Text_MGLinkCanceled jr asm_105726 Function10571a: ; 10571a (41:571a) call Function105777 - ld hl, Text_105772 + ld hl, Text_MGCommError call PrintText jp Function105688 @@ -1471,30 +1480,30 @@ asm_105726: ; 105726 (41:5726) String_10572e: ; 10572e db "エーボタン¯おすと" - next "つうしん", $4a, "おこなわれるよ!" + next "つうしん<PKMN>おこなわれるよ!" next "ビーボタン¯おすと" next "つうしん¯ちゅうし します" db "@" ; 10575e -Text_10575e: ; 10575e +Text_ReceivedCard: ; 10575e text_jump UnknownText_0x1c051a db "@" -Text_105763: ; 105763 +Text_ListedCardAsNumber: ; 105763 text_jump UnknownText_0x1c0531 db "@" -Text_105768: ; 105768 +Text_CardNotRegistered: ; 105768 text_jump UnknownText_0x1c0555 db "@" -Text_10576d: ; 10576d +Text_MGLinkCanceled: ; 10576d text_jump UnknownText_0x1c0573 db "@" -Text_105772: ; 105772 +Text_MGCommError: ; 105772 text_jump UnknownText_0x1c0591 db "@" ; 105777 @@ -1571,30 +1580,30 @@ Function1057d7: ; 1057d7 (41:57d7) ld [hl], a hlcoord 4, 2 ld a, $13 - call Function1058ca + call .Load11Row hlcoord 4, 3 ld a, $1e - call Function1058ce + call .Load12Row hlcoord 4, 4 ld a, $2a - call Function1058ce + call .Load12Row hlcoord 1, 2 ld [hl], $4 hlcoord 1, 3 ld a, $5 - call Function1058de + call .Load14Column ld a, $9 hlcoord 18, 5 - call Function1058da + call .Load11Column hlcoord 2, 5 ld a, $b - call Function1058e9 + call .Load16Row hlcoord 2, 16 ld a, $7 - call Function1058e9 + call .Load16Row hlcoord 2, 5 ld a, $d - call Function1058c6 + call .Load6Row hlcoord 8, 5 ld [hl], $c hlcoord 18, 5 @@ -1605,16 +1614,16 @@ Function1057d7: ; 1057d7 (41:57d7) ld [hl], $6 hlcoord 2, 6 ld a, $37 - call Function1058e9 + call .Load16Row hlcoord 2, 15 ld a, $3d - call Function1058e9 + call .Load16Row hlcoord 2, 6 ld a, $39 - call Function1058d6 + call .Load9Column hlcoord 17, 6 ld a, $3b - call Function1058d6 + call .Load9Column hlcoord 2, 6 ld [hl], $36 hlcoord 17, 6 @@ -1624,78 +1633,78 @@ Function1057d7: ; 1057d7 (41:57d7) hlcoord 17, 15 ld [hl], $3e ld de, Sprites - ld hl, OAM_1058f0 + ld hl, .OAM_data ld bc, $40 call CopyBytes call EnableLCD call WaitBGMap ld b, $2 - callba Function4930f + callba GetMysteryGift_MobileAdapterLayout jp SetPalettes -Function1058c6: ; 1058c6 (41:58c6) - ld b, $6 - jr asm_1058d0 +.Load6Row: ; 1058c6 (41:58c6) + ld b, 6 + jr .row_loop -Function1058ca: ; 1058ca (41:58ca) - ld b, $b - jr asm_1058d0 +.Load11Row: ; 1058ca (41:58ca) + ld b, 11 + jr .row_loop -Function1058ce: ; 1058ce (41:58ce) - ld b, $c +.Load12Row: ; 1058ce (41:58ce) + ld b, 12 -asm_1058d0: ; 1058d0 (41:58d0) +.row_loop: ; 1058d0 (41:58d0) ld [hli], a inc a dec b - jr nz, asm_1058d0 + jr nz, .row_loop ret -Function1058d6: ; 1058d6 (41:58d6) - ld b, $9 - jr asm_1058e0 +.Load9Column: ; 1058d6 (41:58d6) + ld b, 9 + jr .column_loop -Function1058da: ; 1058da (41:58da) - ld b, $b - jr asm_1058e0 +.Load11Column: ; 1058da (41:58da) + ld b, 11 + jr .column_loop -Function1058de: ; 1058de (41:58de) - ld b, $e +.Load14Column: ; 1058de (41:58de) + ld b, 14 -asm_1058e0: ; 1058e0 (41:58e0) +.column_loop: ; 1058e0 (41:58e0) ld [hl], a ld de, SCREEN_WIDTH add hl, de dec b - jr nz, asm_1058e0 + jr nz, .column_loop ret -Function1058e9: ; 1058e9 (41:58e9) - ld b, $10 -.asm_1058eb +.Load16Row: ; 1058e9 (41:58e9) + ld b, 16 +.row_loop_no_inc ld [hli], a dec b - jr nz, .asm_1058eb + jr nz, .row_loop_no_inc ret ; 1058f0 (41:58f0) -OAM_1058f0: ; 1058f0 - db $11, $34, $00, $00 - db $11, $3c, $01, $00 - db $11, $44, $02, $00 - db $11, $4c, $03, $00 - db $19, $34, $04, $00 - db $19, $3c, $05, $00 - db $19, $44, $06, $00 - db $19, $4c, $07, $00 - db $01, $5c, $00, $00 - db $01, $64, $01, $00 - db $01, $6c, $02, $00 - db $01, $74, $03, $00 - db $09, $5c, $04, $00 - db $09, $64, $05, $00 - db $09, $6c, $06, $00 - db $09, $74, $07, $00 +.OAM_data: ; 1058f0 + dsprite 2, 1, 6, 4, $00, $00 + dsprite 2, 1, 7, 4, $01, $00 + dsprite 2, 1, 8, 4, $02, $00 + dsprite 2, 1, 9, 4, $03, $00 + dsprite 3, 1, 6, 4, $04, $00 + dsprite 3, 1, 7, 4, $05, $00 + dsprite 3, 1, 8, 4, $06, $00 + dsprite 3, 1, 9, 4, $07, $00 + dsprite 0, 1, 11, 4, $00, $00 + dsprite 0, 1, 12, 4, $01, $00 + dsprite 0, 1, 13, 4, $02, $00 + dsprite 0, 1, 14, 4, $03, $00 + dsprite 1, 1, 11, 4, $04, $00 + dsprite 1, 1, 12, 4, $05, $00 + dsprite 1, 1, 13, 4, $06, $00 + dsprite 1, 1, 14, 4, $07, $00 ; japanese mystery gift gfx MysteryGiftJP_GFX: ; 105930 diff --git a/engine/mysterygift2.asm b/engine/mysterygift2.asm new file mode 100755 index 000000000..30d02d9d9 --- /dev/null +++ b/engine/mysterygift2.asm @@ -0,0 +1,227 @@ +Function2c642: ; 2c642 (b:4642) + ld de, wMysteryGiftStaging + ld a, $1 + ld [de], a + inc de ; wc801 + ld a, BANK(sGameData) + call GetSRAMBank + ld hl, sPlayerData + PlayerID - wPlayerData + ld a, [hli] + ld [de], a + ld b, a + inc de + ld a, [hl] + ld [de], a + ld c, a + inc de ; wc803 + push bc + ld hl, sPlayerData + PlayerName - wPlayerData + ld bc, NAME_LENGTH + call CopyBytes + push de ; wc80e + ld hl, sPokemonData + PokedexCaught - wPokemonData + ld b, EndPokedexCaught - PokedexCaught + call CountSetBits + pop de + pop bc + ld a, [wd265] + ld [de], a + inc de ; wc80f + call CloseSRAM + call Random + and $1 + ld [de], a + inc de ; wc810 + call .RandomSample + ld [de], a + inc de ; wc811 + ld a, c + ld c, b + ld b, a + call .RandomSample + ld [de], a + inc de ; wc812 + ld a, BANK(sBackupMysteryGiftItem) + call GetSRAMBank + ld a, [sBackupMysteryGiftItem] + ld [de], a + inc de + ld a, [sBackupMysteryGiftItem + 1] + ld [de], a + ld a, $14 + ld [wca00], a + call CloseSRAM + ld hl, wMysteryGiftStaging + ld de, wMysteryGiftPlayerData + ld bc, wMysteryGiftPlayerDataEnd - wMysteryGiftPlayerData + jp CopyBytes + +.RandomSample: ; 2c6ac (b:46ac) + push de + call Random + cp $19 ; 10 percent + jr c, .tenpercent + call Random + and $7 + ld d, a + rl d + ld e, $80 +.loop + rlc e + dec a + jr nz, .loop + ld a, e + and c + jr z, .skip + ld a, $1 +.skip + add d + jr .done + +.tenpercent + call Random + cp $32 ; 20 percent + jr c, .twopercent + call Random + and $3 + ld d, a + rl d + ld e, $80 +.loop2 + rlc e + dec a + jr nz, .loop2 + ld a, e + and b + jr z, .skip2 + ld a, $1 +.skip2 + add d + add $10 + jr .done + +.twopercent + call Random + cp $32 ; 50 ; 20 percent + jr c, .pointfourpercent + ld a, b + swap a + and $7 + add $18 + jr .done + +.pointfourpercent + ld a, b + and $80 + ld a, $20 + jr z, .done + ld a, $21 + +.done + pop de + ret + +MysteryGiftGetItemHeldEffect: ; 2c708 (b:4708) + ld a, c + cp $25 ; 37 + jr nc, MysteryGiftFallbackItem + ld hl, MysteryGiftItems + ld b, 0 + add hl, bc + ld c, [hl] + ret + +MysteryGiftGetDecoration: ; 2c715 (b:4715) + ld a, c + cp $25 ; 37 + jr nc, MysteryGiftFallbackItem + ld hl, MysteryGiftDecos + ld b, 0 + add hl, bc + ld c, [hl] + ret + +MysteryGiftFallbackItem: ; 2c722 (b:4722) + ld c, DECO_POLKADOT_BED ; GREAT_BALL + ret +; 2c725 (b:4725) + +MysteryGiftItems: ; 2c725 + db BERRY + db PRZCUREBERRY + db MINT_BERRY + db ICE_BERRY + db BURNT_BERRY + db PSNCUREBERRY + db GUARD_SPEC + db X_DEFEND + db X_ATTACK + db BITTER_BERRY + db DIRE_HIT + db X_SPECIAL + db X_ACCURACY + db EON_MAIL + db MORPH_MAIL + db MUSIC_MAIL + db MIRACLEBERRY + db GOLD_BERRY + db REVIVE + db GREAT_BALL + db SUPER_REPEL + db MAX_REPEL + db ELIXER + db ETHER + db WATER_STONE + db FIRE_STONE + db LEAF_STONE + db THUNDERSTONE + db MAX_ETHER + db MAX_ELIXER + db MAX_REVIVE + db SCOPE_LENS + db HP_UP + db PP_UP + db RARE_CANDY + db BLUESKY_MAIL + db MIRAGE_MAIL +; 2c74a + +MysteryGiftDecos: ; 2c74a + db DECO_SNES + db DECO_BIG_SNORLAX_DOLL + db DECO_BIG_ONIX_DOLL + db DECO_BIG_LAPRAS_DOLL + db DECO_DOLLS + db DECO_PIKACHU_DOLL + db DECO_SURF_PIKACHU_DOLL + db DECO_CLEFAIRY_DOLL + db DECO_JIGGLYPUFF_DOLL + db DECO_BULBASAUR_DOLL + db DECO_TROPICPLANT + db DECO_JUMBOPLANT + db DECO_TOWN_MAP + db DECO_CHARMANDER_DOLL + db DECO_POLIWAG_DOLL + db DECO_DIGLETT_DOLL + db DECO_BLUE_CARPET + db DECO_YELLOW_CARPET + db DECO_POSTERS + db DECO_PIKACHU_POSTER + db DECO_N64 + db DECO_BIG_DOLLS + db DECO_BEDS + db DECO_FEATHERY_BED + db DECO_POLKADOT_BED + db DECO_PIKACHU_BED + db DECO_CARPETS + db DECO_RED_CARPET + db DECO_GREEN_CARPET + db DECO_CLEFAIRY_POSTER + db DECO_ODDISH_DOLL + db DECO_MAGNAPLANT + db DECO_GENGAR_DOLL + db DECO_CONSOLES + db DECO_PINK_BED + db DECO_SQUIRTLE_DOLL + db DECO_STARMIE_DOLL +; 2c76f diff --git a/engine/namingscreen.asm b/engine/namingscreen.asm index 93cd97199..f36e9b5eb 100755 --- a/engine/namingscreen.asm +++ b/engine/namingscreen.asm @@ -1,7 +1,7 @@ _NamingScreen: ; 0x116b7 call DisableSpriteUpdates call NamingScreen - call Function2b74 + call ReturnToMapWithSpeechTextbox ret ; 0x116c1 @@ -174,9 +174,9 @@ Function117f5: ; 117f5 (4:57f5) ld [hli], a ld [hl], a depixel 4, 4, 4, 0 - ld a, SPRITE_ANIM_INDEX_0A + ld a, SPRITE_ANIM_INDEX_WALK_CYCLE call _InitSpriteAnimStruct - ld hl, $1 + ld hl, SPRITEANIMSTRUCT_FRAMESET_ID add hl, bc ld [hl], $0 hlcoord 5, 2 @@ -220,7 +220,7 @@ Function11847: ; 11847 (4:5847) ld [hli], a ld [hl], a pop de - ld b, SPRITE_ANIM_INDEX_0A + ld b, SPRITE_ANIM_INDEX_WALK_CYCLE ld a, d cp $7a jr nz, .asm_11873 @@ -338,14 +338,14 @@ Function11915: ; 11915 bit 7, a jr nz, .asm_11930 call Function11968 - callba Function8cf62 + callba PlaySpriteAnimationsAndDelayFrame call Function11940 call DelayFrame and a ret .asm_11930 - callab Function8cf53 + callab ClearSpriteAnims call ClearSprites xor a ld [hSCX], a @@ -411,10 +411,10 @@ Function1197b: ; 1197b (4:597b) ld [wc6d5], a ld a, b ld [wc6d6], a - ld hl, $1 + ld hl, SPRITEANIMSTRUCT_FRAMESET_ID add hl, bc ld a, [hl] - ld hl, $e + ld hl, SPRITEANIMSTRUCT_0E add hl, bc ld [hl], a ld hl, wJumptableIndex @@ -454,10 +454,10 @@ Function119a1: ; 119a1 (4:59a1) ld c, [hl] inc hl ld b, [hl] - ld hl, $c + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld [hl], $8 - ld hl, $d + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld [hl], $4 call Function1189c @@ -497,7 +497,7 @@ Function11a0b: ; 11a0b (4:5a0b) ld b, [hl] Function11a11: ; 11a11 (4:5a11) - ld hl, $d + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld a, [hl] push bc @@ -509,7 +509,7 @@ Function11a11: ; 11a11 (4:5a11) cp b pop bc jr nz, .asm_11a39 - ld hl, $c + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] cp $3 @@ -530,12 +530,12 @@ Function11a11: ; 11a11 (4:5a11) Function11a3b: ; 11a3b (4:5a3b) call Function11a8b - ld hl, $d + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld a, [hl] ld e, a swap e - ld hl, $7 + ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld [hl], e ld d, $4 @@ -550,19 +550,19 @@ Function11a3b: ; 11a3b (4:5a3b) ld de, Unknown_11a82 ld a, $1 .asm_11a60 - ld hl, $e + ld hl, SPRITEANIMSTRUCT_0E add hl, bc add [hl] - ld hl, $1 + ld hl, SPRITEANIMSTRUCT_FRAMESET_ID add hl, bc ld [hl], a - ld hl, $c + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld l, [hl] ld h, $0 add hl, de ld a, [hl] - ld hl, $6 + ld hl, SPRITEANIMSTRUCT_XOFFSET add hl, bc ld [hl], a ret @@ -593,7 +593,7 @@ Function11a8b: ; 11a8b (4:5a8b) call Function11a11 and a jr nz, .asm_11ab7 - ld hl, $c + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] cp $8 @@ -611,7 +611,7 @@ Function11a8b: ; 11a8b (4:5a8b) ld e, a add a add e - ld hl, $c + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld [hl], a ret @@ -619,7 +619,7 @@ Function11a8b: ; 11a8b (4:5a8b) call Function11a11 and a jr nz, .asm_11ad8 - ld hl, $c + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] and a @@ -640,12 +640,12 @@ endr ld e, a add a add e - ld hl, $c + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld [hl], a ret .down - ld hl, $d + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld a, [hl] call Function1189c @@ -663,7 +663,7 @@ endr ld [hl], $0 ret .up - ld hl, $d + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld a, [hl] and a @@ -826,10 +826,10 @@ Function11c11: ; 11c11 (4:5c11) ld c, [hl] inc hl ld b, [hl] - ld hl, $6 + ld hl, SPRITEANIMSTRUCT_XOFFSET add hl, bc ld a, [hl] - ld hl, $4 + ld hl, SPRITEANIMSTRUCT_XCOORD add hl, bc add [hl] sub $8 @@ -837,10 +837,10 @@ Function11c11: ; 11c11 (4:5c11) srl a srl a ld e, a - ld hl, $7 + ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld a, [hl] - ld hl, $5 + ld hl, SPRITEANIMSTRUCT_YCOORD add hl, bc add [hl] sub $10 @@ -866,7 +866,7 @@ Function11c11: ; 11c11 (4:5c11) Function11c51: ; 11c51 call ClearSprites - callab Function8cf53 + callab ClearSpriteAnims call LoadStandardFont call LoadFontsExtra @@ -898,9 +898,9 @@ Function11c51: ; 11c51 ld [hl], $7e xor a ld [hSCY], a - ld [wc3bf], a + ld [wGlobalAnimYOffset], a ld [hSCX], a - ld [wc3c0], a + ld [wGlobalAnimXOffset], a ld [wJumptableIndex], a ld [wcf64], a ld [hBGMapMode], a diff --git a/engine/npc_movement.asm b/engine/npc_movement.asm new file mode 100755 index 000000000..bc270305b --- /dev/null +++ b/engine/npc_movement.asm @@ -0,0 +1,572 @@ +Function6ec1: ; 6ec1 + + ld hl, OBJECT_PALETTE + add hl, bc + bit 5, [hl] + jr z, .not_bit_5 + + ld hl, OBJECT_FLAGS1 + add hl, bc + bit 4, [hl] ; lost + push hl + push bc + call Function6f2c + pop bc + pop hl + ret c + jr .resume + +.not_bit_5 + ld hl, OBJECT_FLAGS1 + add hl, bc + bit 4, [hl] + jr nz, .resume + push hl + push bc + call Function6f07 + pop bc + pop hl + ret c + +.resume + bit 6, [hl] + jr nz, .bit_6 + + push hl + push bc + call WillPersonBumpIntoSomeoneElse + pop bc + pop hl + ret c + +.bit_6 + bit 5, [hl] + jr nz, .bit_5 + push hl + call HasPersonReachedMovementLimit + pop hl + ret c + + push hl + call IsPersonMovingOffEdgeOfScreen + pop hl + ret c + +.bit_5 + and a + ret +; 6f07 + + +Function6f07: ; 6f07 + call Function6f5f + ret c + ld hl, OBJECT_NEXT_MAP_X + add hl, bc + ld d, [hl] + ld hl, OBJECT_NEXT_MAP_Y + add hl, bc + ld e, [hl] + ld hl, OBJECT_PALETTE + add hl, bc + bit 7, [hl] + jp nz, Function6fa1 + ld hl, OBJECT_NEXT_TILE + add hl, bc + ld a, [hl] + ld d, a + call GetTileCollision + and a + jr z, Function6f3e + scf + ret +; 6f2c + +Function6f2c: ; 6f2c + call Function6f5f + ret c + ld hl, OBJECT_NEXT_TILE + add hl, bc + ld a, [hl] + call GetTileCollision + cp $1 + jr z, Function6f3e + scf + ret +; 6f3e + +Function6f3e: ; 6f3e + ld hl, OBJECT_NEXT_TILE + add hl, bc + ld a, [hl] + call Function6f7f + ret nc + push af + ld hl, OBJECT_DIRECTION_WALKING + add hl, bc + ld a, [hl] + and 3 + ld e, a + ld d, 0 + ld hl, .data_6f5b + add hl, de + pop af + and [hl] + ret z + scf + ret +; 6f5b + +.data_6f5b + db 1 << DOWN, 1 << UP, 1 << RIGHT, 1 << LEFT +; 6f5f + +Function6f5f: ; 6f5f + ld hl, OBJECT_STANDING_TILE + add hl, bc + ld a, [hl] + call Function6f7f + ret nc + push af + ld hl, OBJECT_DIRECTION_WALKING + add hl, bc + and 3 + ld e, a + ld d, 0 + ld hl, .data_6f7b + add hl, de + pop af + and [hl] + ret z + scf + ret +; 6f7b + +.data_6f7b + db 1 << UP, 1 << DOWN, 1 << LEFT, 1 << RIGHT +; 6f7f + +Function6f7f: ; 6f7f + ld d, a + and $f0 + cp $b0 + jr z, .done + cp $c0 + jr z, .done + xor a + ret + +.done + ld a, d + and 7 + ld e, a + ld d, 0 + ld hl, .data_6f99 + add hl, de + ld a, [hl] + scf + ret +; 6f99 + +.data_6f99 + db 8, 4, 1, 2 + db 10, 6, 9, 5 +; 6fa1 + +Function6fa1: ; 6fa1 + ld hl, OBJECT_DIRECTION_WALKING + add hl, bc + ld a, [hl] + and 3 + jr z, .asm_6fb2 + dec a + jr z, .asm_6fb7 + dec a + jr z, .asm_6fbb + jr .asm_6fbf + +.asm_6fb2 + inc e + push de + inc d + jr .asm_6fc2 + +.asm_6fb7 + push de + inc d + jr .asm_6fc2 + +.asm_6fbb + push de + inc e + jr .asm_6fc2 + +.asm_6fbf + inc d + push de + inc e + +.asm_6fc2 + call GetCoordTile + call GetTileCollision + pop de + and a + jr nz, .asm_6fd7 + call GetCoordTile + call GetTileCollision + and a + jr nz, .asm_6fd7 + xor a + ret + +.asm_6fd7 + scf + ret +; 6fd9 + + + +CheckFacingObject:: ; 6fd9 + + call GetFacingTileCoord + +; Double the distance for counter tiles. + call CheckCounterTile + jr nz, .asm_6ff1 + + ld a, [PlayerNextMapX] + sub d + cpl + inc a + add d + ld d, a + + ld a, [PlayerNextMapY] + sub e + cpl + inc a + add e + ld e, a + +.asm_6ff1 + ld bc, ObjectStructs ; redundant + ld a, 0 + ld [hMapObjectIndexBuffer], a + call IsNPCAtCoord + ret nc + ld hl, OBJECT_DIRECTION_WALKING + add hl, bc + ld a, [hl] + cp STANDING + jr z, .standing + xor a + ret + +.standing + scf + ret +; 7009 + + +WillPersonBumpIntoSomeoneElse: ; 7009 + ld hl, OBJECT_NEXT_MAP_X + add hl, bc + ld d, [hl] + ld hl, OBJECT_NEXT_MAP_Y + add hl, bc + ld e, [hl] + jr IsNPCAtCoord +; 7015 + +Function7015: ; unreferenced + ld a, [hMapObjectIndexBuffer] + call GetObjectStruct + call .CheckWillBeFacingNPC + call IsNPCAtCoord + ret + +.CheckWillBeFacingNPC: ; 7021 + ld hl, OBJECT_NEXT_MAP_X + add hl, bc + ld d, [hl] + ld hl, OBJECT_NEXT_MAP_Y + add hl, bc + ld e, [hl] + call GetSpriteDirection + and a + jr z, .down + cp OW_UP + jr z, .up + cp OW_LEFT + jr z, .left + inc d + ret + +.down + inc e + ret + +.up + dec e + ret + +.left + dec d + ret +; 7041 + +IsNPCAtCoord: ; 7041 + ld bc, ObjectStructs + xor a +.loop + ld [hObjectStructIndexBuffer], a + call GetObjectSprite + jr z, .next + + ld hl, OBJECT_FLAGS1 + add hl, bc + bit 7, [hl] + jr nz, .next + + ld hl, OBJECT_PALETTE + add hl, bc + bit 7, [hl] + jr z, .got + + call Function7171 + jr nc, .ok + jr .ok2 + +.got + ld hl, OBJECT_NEXT_MAP_X + add hl, bc + ld a, [hl] + cp d + jr nz, .ok + ld hl, OBJECT_NEXT_MAP_Y + add hl, bc + ld a, [hl] + cp e + jr nz, .ok + +.ok2 + ld a, [hMapObjectIndexBuffer] + ld l, a + ld a, [hObjectStructIndexBuffer] + cp l + jr nz, .setcarry + +.ok + ld hl, OBJECT_MAP_X + add hl, bc + ld a, [hl] + cp d + jr nz, .next + ld hl, OBJECT_MAP_Y + add hl, bc + ld a, [hl] + cp e + jr nz, .next + ld a, [hMapObjectIndexBuffer] + ld l, a + ld a, [hObjectStructIndexBuffer] + cp l + jr nz, .setcarry + +.next + ld hl, OBJECT_STRUCT_LENGTH + add hl, bc + ld b, h + ld c, l + ld a, [hObjectStructIndexBuffer] + inc a + cp NUM_OBJECT_STRUCTS + jr nz, .loop + and a + ret + +.setcarry + scf + ret +; 70a4 + +HasPersonReachedMovementLimit: ; 70a4 + ld hl, OBJECT_RADIUS + add hl, bc + ld a, [hl] + and a + jr z, .nope + and $f + jr z, .check_y + ld e, a + ld d, a + ld hl, OBJECT_INIT_X + add hl, bc + ld a, [hl] + sub d + ld d, a + ld a, [hl] + add e + ld e, a + ld hl, OBJECT_NEXT_MAP_X + add hl, bc + ld a, [hl] + cp d + jr z, .yes + cp e + jr z, .yes + +.check_y + ld hl, OBJECT_RADIUS + add hl, bc + ld a, [hl] + swap a + and $f + jr z, .nope + ld e, a + ld d, a + ld hl, OBJECT_INIT_Y + add hl, bc + ld a, [hl] + sub d + ld d, a + ld a, [hl] + add e + ld e, a + ld hl, OBJECT_NEXT_MAP_Y + add hl, bc + ld a, [hl] + cp d + jr z, .yes + cp e + jr z, .yes + +.nope + xor a + ret + +.yes + scf + ret +; 70ed + +IsPersonMovingOffEdgeOfScreen: ; 70ed + ld hl, OBJECT_NEXT_MAP_X + add hl, bc + ld a, [XCoord] + cp [hl] + jr z, .check_y + jr nc, .yes + add $9 + cp [hl] + jr c, .yes + +.check_y + ld hl, OBJECT_NEXT_MAP_Y + add hl, bc + ld a, [YCoord] + cp [hl] + jr z, .nope + jr nc, .yes + add $8 + cp [hl] + jr c, .yes + +.nope + and a + ret + +.yes + scf + ret +; 7113 + +Function7113: ; unreferenced + ld a, [PlayerNextMapX] + ld d, a + ld a, [PlayerNextMapY] + ld e, a + ld bc, ObjectStructs + xor a +.loop + ld [hObjectStructIndexBuffer], a + call GetObjectSprite + jr z, .next + ld hl, OBJECT_MOVEMENTTYPE + add hl, bc + ld a, [hl] + cp SPRITEMOVEDATA_SNORLAX + jr nz, .not_snorlax + call Function7171 + jr c, .yes + jr .next + +.not_snorlax + ld hl, OBJECT_NEXT_MAP_Y + add hl, bc + ld a, [hl] + cp e + jr nz, .check_current_coords + ld hl, OBJECT_NEXT_MAP_X + add hl, bc + ld a, [hl] + cp d + jr nz, .check_current_coords + ld a, [hObjectStructIndexBuffer] + cp $0 + jr z, .next + jr .yes + +.check_current_coords + ld hl, OBJECT_MAP_Y + add hl, bc + ld a, [hl] + cp e + jr nz, .next + ld hl, OBJECT_MAP_X + add hl, bc + ld a, [hl] + cp d + jr nz, .next + jr .yes + +.next + ld hl, OBJECT_STRUCT_LENGTH + add hl, bc + ld b, h + ld c, l + ld a, [hObjectStructIndexBuffer] + inc a + cp NUM_OBJECT_STRUCTS + jr nz, .loop + xor a + ret + +.yes + scf + ret +; 7171 + + +Function7171: ; 7171 + ld hl, OBJECT_NEXT_MAP_X + add hl, bc + ld a, d + sub [hl] + jr c, .nope + cp $2 + jr nc, .nope + ld hl, OBJECT_NEXT_MAP_Y + add hl, bc + ld a, e + sub [hl] + jr c, .nope + cp $2 + jr nc, .nope + scf + ret + +.nope + and a + ret +; 718d diff --git a/engine/npctrade.asm b/engine/npctrade.asm index 71ab03ee3..3499a0134 100755 --- a/engine/npctrade.asm +++ b/engine/npctrade.asm @@ -40,7 +40,7 @@ NPCTrade:: ; fcba8 ; Select givemon from party ld b, 6 - callba Function5001d + callba SelectTradeOrDaycareMon ld a, TRADE_CANCEL jr c, .done @@ -88,7 +88,7 @@ NPCTrade:: ; fcba8 ld [wcf64], a pop af ld [wJumptableIndex], a - call Function2b74 + call ReturnToMapWithSpeechTextbox ret ; fcc23 @@ -100,23 +100,23 @@ CheckTradeGender: ; fcc23 call GetTradeAttribute ld a, [hl] and a - jr z, .asm_fcc46 + jr z, .matching cp 1 - jr z, .asm_fcc3e + jr z, .check_male callba GetGender - jr nz, .asm_fcc48 - jr .asm_fcc46 + jr nz, .not_matching + jr .matching -.asm_fcc3e +.check_male callba GetGender - jr z, .asm_fcc48 + jr z, .not_matching -.asm_fcc46 +.matching and a ret -.asm_fcc48 +.not_matching scf ret ; fcc4a @@ -211,7 +211,7 @@ DoNPCTrade: ; fcc63 xor a ld [MonType], a ld [wPokemonWithdrawDepositParameter], a - callab Functione039 + callab RemoveMonFromPartyOrBox predef TryAddMonToParty ld e, TRADE_DIALOG @@ -219,9 +219,9 @@ DoNPCTrade: ; fcc63 ld a, [hl] cp TRADE_COMPLETE ld b, RESET_FLAG - jr c, .asm_fcd1c + jr c, .incomplete ld b, SET_FLAG -.asm_fcd1c +.incomplete callba SetGiftPartyMonCaughtData ld e, TRADE_NICK @@ -291,7 +291,7 @@ DoNPCTrade: ; fcc63 ld a, [PartyCount] dec a ld [CurPartyMon], a - callba Functione134 + callba ComputeNPCTrademonStats pop af ld [CurPartyMon], a pop hl @@ -399,7 +399,7 @@ GetTradeMonNames: ; fce1b ld a, [hl] call GetTradeMonName - ld de, wd050 + ld de, wMonOrItemNameBuffer call CopyTradeName ld hl, StringBuffer1 diff --git a/engine/options_menu.asm b/engine/options_menu.asm index ed2c21f30..2e8b0424b 100755 --- a/engine/options_menu.asm +++ b/engine/options_menu.asm @@ -47,7 +47,7 @@ _OptionsMenu: ; e41d0 jr c, .ExitOptions .dpad - call Functione455c + call Options_UpdateCursorPosition ld c, 3 call DelayFrames jr .joypad_loop @@ -563,3 +563,20 @@ OptionsControl: ; e452a scf ret ; e455c + +Options_UpdateCursorPosition: ; e455c + hlcoord 1, 1 + ld de, SCREEN_WIDTH + ld c, $10 +.loop + ld [hl], " " + add hl, de + dec c + jr nz, .loop + hlcoord 1, 2 + ld bc, 2 * SCREEN_WIDTH + ld a, [wJumptableIndex] + call AddNTimes + ld [hl], "▶" + ret +; e4579 diff --git a/engine/overworld.asm b/engine/overworld.asm index fa4d02e7c..748ab4649 100755 --- a/engine/overworld.asm +++ b/engine/overworld.asm @@ -266,7 +266,7 @@ GetMonSprite: ; 14259 and a jr z, .NoBreedmon - callba Function8e82b + callba LoadOverworldMonIcon ld l, 1 ld h, 0 diff --git a/engine/pack.asm b/engine/pack.asm index 0b7d35ece..dc29a6994 100644 --- a/engine/pack.asm +++ b/engine/pack.asm @@ -1,181 +1,183 @@ - Pack: ; 10000 ld hl, Options set NO_TEXT_SCROLL, [hl] - call Function1068a + call InitPackBuffers .loop call JoyTextDelay ld a, [wJumptableIndex] bit 7, a jr nz, .done - call Function10026 + call .RunJumptable call DelayFrame jr .loop .done - ld a, [wcf65] + ld a, [wCurrPocket] ld [wLastPocket], a ld hl, Options res NO_TEXT_SCROLL, [hl] ret ; 10026 -Function10026: ; 10026 +.RunJumptable: ; 10026 ld a, [wJumptableIndex] - ld hl, Jumptable_10030 - call Function1086b + ld hl, .Jumptable + call Pack_GetJumptablePointer jp [hl] -; 10030 - - -Jumptable_10030: ; 10030 (4:4030) - dw Function10046 - dw Function10056 - dw Function10067 - dw Function10186 - dw Function10198 - dw Function10094 - dw Function100a6 - dw Function100d3 - dw Function100e8 - dw Function10874 - dw Function1087e +; 10030 -Function10046: ; 10046 (4:4046) +.Jumptable: ; 10030 (4:4030) + jumptable_start + jumptable .InitGFX ; 0 + jumptable .InitItemsPocket ; 1 + jumptable .ItemsPocketMenu ; 2 + jumptable .InitBallsPocket ; 3 + jumptable .BallsPocketMenu ; 4 + jumptable .InitKeyItemsPocket ; 5 + jumptable .KeyItemsPocketMenu ; 6 + jumptable .InitTMHMPocket ; 7 + jumptable .TMHMPocketMenu ; 8 + jumptable Pack_QuitNoScript ; 9 + jumptable Pack_QuitRunScript ; 10 + +.InitGFX: ; 10046 (4:4046) xor a ld [hBGMapMode], a - call Function10955 + call Pack_InitGFX ld a, [wcf64] ld [wJumptableIndex], a - call Function10a40 + call Pack_InitColors ret -Function10056: ; 10056 (4:4056) +.InitItemsPocket: ; 10056 (4:4056) xor a - ld [wcf65], a + ld [wCurrPocket], a call ClearPocketList call DrawPocketName call WaitBGMap_DrawPackGFX - call Function10866 + call Pack_JumptableNext ret -Function10067: ; 10067 (4:4067) - ld hl, MenuDataHeader_0x10a4f +.ItemsPocketMenu: ; 10067 (4:4067) + ld hl, ItemsPocketMenuDataHeader call CopyMenuDataHeader ld a, [wItemsPocketCursor] ld [wMenuCursorBuffer], a ld a, [wItemsPocketScrollPosition] ld [wMenuScrollPosition], a - call HandleScrollingMenu + call ScrollingMenu ld a, [wMenuScrollPosition] ld [wItemsPocketScrollPosition], a - ld a, [MenuSelection2] + ld a, [wMenuCursorY] ld [wItemsPocketCursor], a ld b, $7 ld c, $3 - call Function108d4 + call Pack_InterpretJoypad ret c - call Function101c5 + call .ItemBallsKey_LoadSubmenu ret -Function10094: ; 10094 (4:4094) +.InitKeyItemsPocket: ; 10094 (4:4094) ld a, $2 - ld [wcf65], a + ld [wCurrPocket], a call ClearPocketList call DrawPocketName call WaitBGMap_DrawPackGFX - call Function10866 + call Pack_JumptableNext ret -Function100a6: ; 100a6 (4:40a6) - ld hl, MenuDataHeader_0x10a7f +.KeyItemsPocketMenu: ; 100a6 (4:40a6) + ld hl, KeyItemsPocketMenuDataHeader call CopyMenuDataHeader ld a, [wKeyItemsPocketCursor] ld [wMenuCursorBuffer], a ld a, [wKeyItemsPocketScrollPosition] ld [wMenuScrollPosition], a - call HandleScrollingMenu + call ScrollingMenu ld a, [wMenuScrollPosition] ld [wKeyItemsPocketScrollPosition], a - ld a, [MenuSelection2] + ld a, [wMenuCursorY] ld [wKeyItemsPocketCursor], a ld b, $3 ld c, $7 - call Function108d4 + call Pack_InterpretJoypad ret c - call Function101c5 + call .ItemBallsKey_LoadSubmenu ret -Function100d3: ; 100d3 (4:40d3) +.InitTMHMPocket: ; 100d3 (4:40d3) ld a, $3 - ld [wcf65], a + ld [wCurrPocket], a call ClearPocketList call DrawPocketName xor a ld [hBGMapMode], a call WaitBGMap_DrawPackGFX - call Function10866 + call Pack_JumptableNext ret -Function100e8: ; 100e8 (4:40e8) - callba Function2c76f +.TMHMPocketMenu: ; 100e8 (4:40e8) + callba TMHMPocket ld b, $5 ld c, $1 - call Function108d4 + call Pack_InterpretJoypad ret c callba _CheckTossableItem ld a, [wItemAttributeParamBuffer] and a - jr nz, .asm_1010a - ld hl, MenuDataHeader_0x1013b - ld de, Jumptable_10153 - jr .asm_10110 -.asm_1010a - ld hl, MenuDataHeader_0x10124 - ld de, Jumptable_10137 -.asm_10110 + jr nz, .use_quit + ld hl, .MenuDataHeader2 + ld de, .Jumptable2 + jr .load_jump + +.use_quit + ld hl, .MenuDataHeader1 + ld de, .Jumptable1 +.load_jump push de call LoadMenuDataHeader - call InterpretMenu2 + call VerticalMenu call ExitMenu pop hl ret c - ld a, [MenuSelection2] + ld a, [wMenuCursorY] dec a - call Function1086b + call Pack_GetJumptablePointer jp [hl] -; 10124 (4:4124) -MenuDataHeader_0x10124: ; 0x10124 +; 10124 (4:4124) +.MenuDataHeader1: ; 0x10124 db $40 ; flags db 07, 13 ; start coords db 11, 19 ; end coords - dw MenuData2_0x1012c + dw .MenuData2_1 db 1 ; default option ; 0x1012c -MenuData2_0x1012c: ; 0x1012c +.MenuData2_1: ; 0x1012c db $c0 ; flags db 2 ; items db "USE@" db "QUIT@" ; 0x10137 -Jumptable_10137: ; 10137 - dw Function10159 - dw QuitItemSubmenu +.Jumptable1: ; 10137 + jumptable_start + jumptable .UseItem + jumptable QuitItemSubmenu + ; 1013b -MenuDataHeader_0x1013b: ; 0x1013b +.MenuDataHeader2: ; 0x1013b db $40 ; flags db 05, 13 ; start coords db 11, 19 ; end coords - dw MenuData2_0x10143 + dw .MenuData2_2 db 1 ; default option ; 0x10143 -MenuData2_0x10143: ; 0x10143 +.MenuData2_2: ; 0x10143 db $c0 ; flags db 3 ; items db "USE@" @@ -183,61 +185,61 @@ MenuData2_0x10143: ; 0x10143 db "QUIT@" ; 0x10153 -Jumptable_10153: ; 10153 - dw Function10159 +.Jumptable2: ; 10153 + dw .UseItem dw GiveItem dw QuitItemSubmenu ; 10159 -Function10159: ; 10159 - callba Function2c7bf +.UseItem: ; 10159 + callba AskTeachTMHM ret c - callba Function2c7fb - jr c, .asm_10179 + callba ChooseMonToLearnTMHM + jr c, .declined ld hl, Options ld a, [hl] push af - res 4, [hl] - callba Function2c867 + res NO_TEXT_SCROLL, [hl] + callba TeachTMHM pop af ld [Options], a -.asm_10179 +.declined xor a ld [hBGMapMode], a - call Function10955 + call Pack_InitGFX call WaitBGMap_DrawPackGFX - call Function10a40 + call Pack_InitColors ret -Function10186: ; 10186 (4:4186) +.InitBallsPocket: ; 10186 (4:4186) ld a, $1 - ld [wcf65], a + ld [wCurrPocket], a call ClearPocketList call DrawPocketName call WaitBGMap_DrawPackGFX - call Function10866 + call Pack_JumptableNext ret -Function10198: ; 10198 (4:4198) - ld hl, MenuDataHeader_0x10aaf +.BallsPocketMenu: ; 10198 (4:4198) + ld hl, BallsPocketMenuDataHeader call CopyMenuDataHeader ld a, [wBallsPocketCursor] ld [wMenuCursorBuffer], a ld a, [wBallsPocketScrollPosition] ld [wMenuScrollPosition], a - call HandleScrollingMenu + call ScrollingMenu ld a, [wMenuScrollPosition] ld [wBallsPocketScrollPosition], a - ld a, [MenuSelection2] + ld a, [wMenuCursorY] ld [wBallsPocketCursor], a ld b, $1 ld c, $5 - call Function108d4 + call Pack_InterpretJoypad ret c - call Function101c5 + call .ItemBallsKey_LoadSubmenu ret -Function101c5: ; 101c5 (4:41c5) +.ItemBallsKey_LoadSubmenu: ; 101c5 (4:41c5) callba _CheckTossableItem ld a, [wItemAttributeParamBuffer] and a @@ -268,45 +270,45 @@ Function101c5: ; 101c5 (4:41c5) .usable ld hl, MenuDataHeader_UsableKeyItem - ld de, Jumptable_1026a + ld de, Jumptable_UseGiveTossRegisterQuit jr .build_menu .selectable_usable ld hl, MenuDataHeader_UsableItem - ld de, Jumptable_10291 + ld de, Jumptable_UseGiveTossQuit jr .build_menu .tossable_selectable ld hl, MenuDataHeader_UnusableItem - ld de, Jumptable_102ac + ld de, Jumptable_UseQuit jr .build_menu .tossable_unselectable ld hl, MenuDataHeader_UnusableKeyItem - ld de, Jumptable_102c7 + ld de, Jumptable_UseRegisterQuit jr .build_menu .unusable ld hl, MenuDataHeader_HoldableKeyItem - ld de, Jumptable_102ea + ld de, Jumptable_GiveTossRegisterQuit jr .build_menu .selectable_unusable ld hl, MenuDataHeader_HoldableItem - ld de, Jumptable_1030b + ld de, Jumptable_GiveTossQuit .build_menu push de call LoadMenuDataHeader - call InterpretMenu2 + call VerticalMenu call ExitMenu pop hl ret c - ld a, [MenuSelection2] + ld a, [wMenuCursorY] dec a - call Function1086b + call Pack_GetJumptablePointer jp [hl] -; 10249 (4:4249) +; 10249 (4:4249) MenuDataHeader_UsableKeyItem: ; 0x10249 db $40 ; flags db 01, 13 ; start coords @@ -325,12 +327,13 @@ MenuDataHeader_UsableKeyItem: ; 0x10249 db "QUIT@" ; 0x1026a -Jumptable_1026a: ; 1026a - dw UseItem - dw GiveItem - dw TossMenu - dw RegisterItem - dw QuitItemSubmenu +Jumptable_UseGiveTossRegisterQuit: ; 1026a + jumptable_start + jumptable UseItem + jumptable GiveItem + jumptable TossMenu + jumptable RegisterItem + jumptable QuitItemSubmenu ; 10274 MenuDataHeader_UsableItem: ; 0x10274 @@ -350,11 +353,12 @@ MenuDataHeader_UsableItem: ; 0x10274 db "QUIT@" ; 0x10291 -Jumptable_10291: ; 10291 - dw UseItem - dw GiveItem - dw TossMenu - dw QuitItemSubmenu +Jumptable_UseGiveTossQuit: ; 10291 + jumptable_start + jumptable UseItem + jumptable GiveItem + jumptable TossMenu + jumptable QuitItemSubmenu ; 10299 MenuDataHeader_UnusableItem: ; 0x10299 @@ -372,9 +376,10 @@ MenuDataHeader_UnusableItem: ; 0x10299 db "QUIT@" ; 0x102ac -Jumptable_102ac: ; 102ac - dw UseItem - dw QuitItemSubmenu +Jumptable_UseQuit: ; 102ac + jumptable_start + jumptable UseItem + jumptable QuitItemSubmenu ; 102b0 MenuDataHeader_UnusableKeyItem: ; 0x102b0 @@ -393,10 +398,11 @@ MenuDataHeader_UnusableKeyItem: ; 0x102b0 db "QUIT@" ; 0x102c7 -Jumptable_102c7: ; 102c7 - dw UseItem - dw RegisterItem - dw QuitItemSubmenu +Jumptable_UseRegisterQuit: ; 102c7 + jumptable_start + jumptable UseItem + jumptable RegisterItem + jumptable QuitItemSubmenu ; 102cd MenuDataHeader_HoldableKeyItem: ; 0x102cd @@ -416,11 +422,12 @@ MenuDataHeader_HoldableKeyItem: ; 0x102cd db "QUIT@" ; 0x102ea -Jumptable_102ea: ; 102ea - dw GiveItem - dw TossMenu - dw RegisterItem - dw QuitItemSubmenu +Jumptable_GiveTossRegisterQuit: ; 102ea + jumptable_start + jumptable GiveItem + jumptable TossMenu + jumptable RegisterItem + jumptable QuitItemSubmenu ; 102f2 MenuDataHeader_HoldableItem: ; 0x102f2 @@ -439,10 +446,12 @@ MenuDataHeader_HoldableItem: ; 0x102f2 db "QUIT@" ; 0x1030b -Jumptable_1030b: ; 1030b - dw GiveItem - dw TossMenu - dw QuitItemSubmenu +Jumptable_GiveTossQuit: ; 1030b + jumptable_start + jumptable GiveItem + jumptable TossMenu + jumptable QuitItemSubmenu + ; 10311 UseItem: ; 10311 @@ -454,18 +463,19 @@ UseItem: ; 10311 ; 1031f .jumptable: ; 1031f (4:431f) - dw .Oak - dw .Oak - dw .Oak - dw .Oak - dw .Current - dw .Party - dw .Field + jumptable_start + jumptable .Oak + jumptable .Oak + jumptable .Oak + jumptable .Oak + jumptable .Current + jumptable .Party + jumptable .Field ; 1035c .Oak: ; 1032d (4:432d) ld hl, Text_ThisIsntTheTime - call Function10889 + call Pack_PrintTextNoScroll ret .Current: ; 10334 (4:4334) @@ -479,29 +489,29 @@ UseItem: ; 10311 call DoItemEffect xor a ld [hBGMapMode], a - call Function10955 + call Pack_InitGFX call WaitBGMap_DrawPackGFX - call Function10a40 + call Pack_InitColors ret + .NoPokemon ld hl, TextJump_YouDontHaveAPkmn - call Function10889 + call Pack_PrintTextNoScroll ret .Field: ; 10355 (4:4355) call DoItemEffect - ld a, [wd0ec] + ld a, [wItemEffectSucceeded] and a jr z, .Oak ld a, $a ld [wJumptableIndex], a ret ; 10364 (4:4364) - TossMenu: ; 10364 ld hl, Text_ThrowAwayHowMany - call Function10889 - callba Function24fbf + call Pack_PrintTextNoScroll + callba SelectQuantityToToss push af call ExitMenu pop af @@ -515,39 +525,39 @@ TossMenu: ; 10364 pop af jr c, .finish ld hl, NumItems - ld a, [ItemCountBuffer] + ld a, [CurItemQuantity] call TossItem call Pack_GetItemName ld hl, Text_ThrewAway - call Function10889 - + call Pack_PrintTextNoScroll .finish ret ; 1039d Function1039d: ; 1039d - ld a, [wcf65] +; unreferenced + ld a, [wCurrPocket] and a - jr z, .asm_103b2 + jr z, .items dec a - jr z, .asm_103aa + jr z, .balls dec a - jr z, .asm_103ba + jr z, .key ret -.asm_103aa +.balls xor a ld [wBallsPocketCursor], a ld [wBallsPocketScrollPosition], a ret -.asm_103b2 +.items xor a ld [wItemsPocketCursor], a ld [wItemsPocketScrollPosition], a ret -.asm_103ba +.key xor a ld [wKeyItemsPocketCursor], a ld [wKeyItemsPocketScrollPosition], a @@ -558,13 +568,13 @@ RegisterItem: ; 103c2 callba CheckSelectableItem ld a, [wItemAttributeParamBuffer] and a - jr nz, .asm_103f6 - ld a, [wcf65] + jr nz, .cant_register + ld a, [wCurrPocket] rrca rrca and $c0 ld b, a - ld a, [ItemCountBuffer] + ld a, [CurItemQuantity] inc a and $3f or b @@ -575,22 +585,22 @@ RegisterItem: ; 103c2 ld de, SFX_FULL_HEAL call WaitPlaySFX ld hl, Text_RegisteredItem - call Function10889 + call Pack_PrintTextNoScroll ret -.asm_103f6 +.cant_register ld hl, Text_CantRegister - call Function10889 + call Pack_PrintTextNoScroll ret ; 103fd GiveItem: ; 103fd ld a, [PartyCount] and a - jp z, Function10486 + jp z, .NoPokemon ld a, [Options] push af - res 4, a + res NO_TEXT_SCROLL, a ld [Options], a ld a, $8 ld [PartyMenuActionText], a @@ -598,55 +608,52 @@ GiveItem: ; 103fd callba LoadPartyMenuGFX callba InitPartyMenuWithCancel callba InitPartyMenuGFX -.asm_10427 +.loop callba WritePartyMenuTilemap callba PrintPartyMenuText call WaitBGMap call SetPalettes call DelayFrame callba PartyMenuSelect - jr c, .asm_10475 - + jr c, .finish ld a, [CurPartySpecies] cp EGG - jr nz, .asm_10453 - - ld hl, TextJump_AnEGGCantHoldAnItem + jr nz, .give + ld hl, .Egg call PrintText - jr .asm_10427 + jr .loop -.asm_10453 +.give ld a, [wJumptableIndex] push af ld a, [wcf64] push af call GetCurNick ld hl, StringBuffer1 - ld de, wd050 + ld de, wMonOrItemNameBuffer ld bc, PKMN_NAME_LENGTH call CopyBytes - call Function12bd9 + call TryGiveItemToPartymon pop af ld [wcf64], a pop af ld [wJumptableIndex], a -.asm_10475 +.finish pop af ld [Options], a xor a ld [hBGMapMode], a - call Function10955 + call Pack_InitGFX call WaitBGMap_DrawPackGFX - call Function10a40 + call Pack_InitColors ret -Function10486: ; 10486 (4:4486) +.NoPokemon: ; 10486 (4:4486) ld hl, TextJump_YouDontHaveAPkmn - call Function10889 + call Pack_PrintTextNoScroll ret ; 1048d (4:448d) - -TextJump_AnEGGCantHoldAnItem: ; 0x1048d +.Egg: ; 0x1048d ; An EGG can't hold an item. text_jump Text_AnEGGCantHoldAnItem db "@" @@ -656,192 +663,191 @@ QuitItemSubmenu: ; 10492 ret ; 10493 - BattlePack: ; 10493 ld hl, Options - set 4, [hl] - call Function1068a + set NO_TEXT_SCROLL, [hl] + call InitPackBuffers .loop call JoyTextDelay ld a, [wJumptableIndex] bit 7, a jr nz, .end - call Function104b9 + call .RunJumptable call DelayFrame jr .loop .end - ld a, [wcf65] + ld a, [wCurrPocket] ld [wLastPocket], a ld hl, Options - res 4, [hl] + res NO_TEXT_SCROLL, [hl] ret ; 104b9 -Function104b9: ; 104b9 +.RunJumptable: ; 104b9 ld a, [wJumptableIndex] - ld hl, Jumptable_104c3 - call Function1086b + ld hl, .Jumptable + call Pack_GetJumptablePointer jp [hl] -; 104c3 - - -Jumptable_104c3: ; 104c3 (4:44c3) - dw Function104d9 - dw Function104e9 - dw Function104fa - dw Function10594 - dw Function105a6 - dw Function10527 - dw Function10539 - dw Function10566 - dw Function10581 - dw Function10874 - dw Function1087e +; 104c3 -Function104d9: ; 104d9 (4:44d9) +.Jumptable: ; 104c3 (4:44c3) + jumptable_start + jumptable .InitGFX ; 0 + jumptable .InitItemsPocket ; 1 + jumptable .ItemsPocketMenu ; 2 + jumptable .InitBallsPocket ; 3 + jumptable .BallsPocketMenu ; 4 + jumptable .InitKeyItemsPocket ; 5 + jumptable .KeyItemsPocketMenu ; 6 + jumptable .InitTMHMPocket ; 7 + jumptable .TMHMPocketMenu ; 8 + jumptable Pack_QuitNoScript ; 9 + jumptable Pack_QuitRunScript ; 10 + +.InitGFX: ; 104d9 (4:44d9) xor a ld [hBGMapMode], a - call Function10955 + call Pack_InitGFX ld a, [wcf64] ld [wJumptableIndex], a - call Function10a40 + call Pack_InitColors ret -Function104e9: ; 104e9 (4:44e9) +.InitItemsPocket: ; 104e9 (4:44e9) xor a - ld [wcf65], a + ld [wCurrPocket], a call ClearPocketList call DrawPocketName call WaitBGMap_DrawPackGFX - call Function10866 + call Pack_JumptableNext ret -Function104fa: ; 104fa (4:44fa) - ld hl, MenuDataHeader_0x10a4f +.ItemsPocketMenu: ; 104fa (4:44fa) + ld hl, ItemsPocketMenuDataHeader call CopyMenuDataHeader ld a, [wItemsPocketCursor] ld [wMenuCursorBuffer], a ld a, [wItemsPocketScrollPosition] ld [wMenuScrollPosition], a - call HandleScrollingMenu + call ScrollingMenu ld a, [wMenuScrollPosition] ld [wItemsPocketScrollPosition], a - ld a, [MenuSelection2] + ld a, [wMenuCursorY] ld [wItemsPocketCursor], a ld b, $7 ld c, $3 - call Function108d4 + call Pack_InterpretJoypad ret c - call Function105d3 + call ItemSubmenu ret -Function10527: ; 10527 (4:4527) +.InitKeyItemsPocket: ; 10527 (4:4527) ld a, $2 - ld [wcf65], a + ld [wCurrPocket], a call ClearPocketList call DrawPocketName call WaitBGMap_DrawPackGFX - call Function10866 + call Pack_JumptableNext ret -Function10539: ; 10539 (4:4539) - ld hl, MenuDataHeader_0x10a7f +.KeyItemsPocketMenu: ; 10539 (4:4539) + ld hl, KeyItemsPocketMenuDataHeader call CopyMenuDataHeader ld a, [wKeyItemsPocketCursor] ld [wMenuCursorBuffer], a ld a, [wKeyItemsPocketScrollPosition] ld [wMenuScrollPosition], a - call HandleScrollingMenu + call ScrollingMenu ld a, [wMenuScrollPosition] ld [wKeyItemsPocketScrollPosition], a - ld a, [MenuSelection2] + ld a, [wMenuCursorY] ld [wKeyItemsPocketCursor], a ld b, $3 ld c, $7 - call Function108d4 + call Pack_InterpretJoypad ret c - call Function105d3 + call ItemSubmenu ret -Function10566: ; 10566 (4:4566) +.InitTMHMPocket: ; 10566 (4:4566) ld a, $3 - ld [wcf65], a + ld [wCurrPocket], a call ClearPocketList call DrawPocketName xor a ld [hBGMapMode], a call WaitBGMap_DrawPackGFX ld hl, Text_PackEmptyString - call Function10889 - call Function10866 + call Pack_PrintTextNoScroll + call Pack_JumptableNext ret -Function10581: ; 10581 (4:4581) - callba Function2c76f +.TMHMPocketMenu: ; 10581 (4:4581) + callba TMHMPocket ld b, $5 ld c, $1 - call Function108d4 + call Pack_InterpretJoypad ret c xor a - call Function105dc + call TMHMSubmenu ret -Function10594: ; 10594 (4:4594) +.InitBallsPocket: ; 10594 (4:4594) ld a, $1 - ld [wcf65], a + ld [wCurrPocket], a call ClearPocketList call DrawPocketName call WaitBGMap_DrawPackGFX - call Function10866 + call Pack_JumptableNext ret -Function105a6: ; 105a6 (4:45a6) - ld hl, MenuDataHeader_0x10aaf +.BallsPocketMenu: ; 105a6 (4:45a6) + ld hl, BallsPocketMenuDataHeader call CopyMenuDataHeader ld a, [wBallsPocketCursor] ld [wMenuCursorBuffer], a ld a, [wBallsPocketScrollPosition] ld [wMenuScrollPosition], a - call HandleScrollingMenu + call ScrollingMenu ld a, [wMenuScrollPosition] ld [wBallsPocketScrollPosition], a - ld a, [MenuSelection2] + ld a, [wMenuCursorY] ld [wBallsPocketCursor], a ld b, $1 ld c, $5 - call Function108d4 + call Pack_InterpretJoypad ret c - call Function105d3 + call ItemSubmenu ret -Function105d3: ; 105d3 (4:45d3) +ItemSubmenu: ; 105d3 (4:45d3) callba CheckItemContext ld a, [wItemAttributeParamBuffer] - -Function105dc: ; 105dc (4:45dc) +TMHMSubmenu: ; 105dc (4:45dc) and a jr z, .NoUse ld hl, .UsableMenuDataHeader ld de, .UsableJumptable jr .proceed + .NoUse ld hl, .UnusableMenuDataHeader ld de, .UnusableJumptable .proceed push de call LoadMenuDataHeader - call InterpretMenu2 + call VerticalMenu call ExitMenu pop hl ret c - ld a, [MenuSelection2] + ld a, [wMenuCursorY] dec a - call Function1086b + call Pack_GetJumptablePointer jp [hl] -; 10601 (4:4601) +; 10601 (4:4601) .UsableMenuDataHeader: ; 0x10601 db $40 ; flags db 07, 13 ; start coords @@ -858,8 +864,9 @@ Function105dc: ; 105dc (4:45dc) ; 0x10614 .UsableJumptable: ; 10614 - dw .Use - dw .Quit + jumptable_start + jumptable .Use + jumptable .Quit ; 10618 .UnusableMenuDataHeader: ; 0x10618 @@ -877,7 +884,8 @@ Function105dc: ; 105dc (4:45dc) ; 0x10627 .UnusableJumptable: ; 10627 - dw .Quit + jumptable_start + jumptable .Quit ; 10629 .Use: ; 10629 @@ -888,72 +896,70 @@ Function105dc: ; 105dc (4:45dc) ret .ItemFunctionJumptable: ; 10637 (4:4637) - dw .Oak - dw .Oak - dw .Oak - dw .Oak - dw .Unused - dw .BattleField - dw .BattleOnly - + jumptable_start + jumptable .Oak + jumptable .Oak + jumptable .Oak + jumptable .Oak + jumptable .Unused + jumptable .BattleField + jumptable .BattleOnly .Oak: ; 10645 (4:4645) ld hl, Text_ThisIsntTheTime - call Function10889 + call Pack_PrintTextNoScroll ret .Unused: ; 1064c (4:464c) call DoItemEffect - ld a, [wd0ec] + ld a, [wItemEffectSucceeded] and a - jr nz, .asm_1066c + jr nz, .ReturnToBattle ret .BattleField: ; 10656 (4:4656) call DoItemEffect - ld a, [wd0ec] + ld a, [wItemEffectSucceeded] and a - jr nz, .asm_1067e + jr nz, .quit_run_script xor a ld [hBGMapMode], a - call Function10955 + call Pack_InitGFX call WaitBGMap_DrawPackGFX - call Function10a40 + call Pack_InitColors ret -.asm_1066c: ; 1066c (4:466c) +.ReturnToBattle: ; 1066c (4:466c) call ClearBGPalettes - jr .asm_1067e + jr .quit_run_script .BattleOnly: ; 10671 (4:4671) call DoItemEffect - ld a, [wd0ec] + ld a, [wItemEffectSucceeded] and a jr z, .Oak cp $2 - jr z, .asm_10684 -.asm_1067e: ; 1067e (4:467e) - ld a, $a + jr z, .didnt_use_item +.quit_run_script: ; 1067e (4:467e) + ld a, Pack_QuitRunScriptTableIndex ld [wJumptableIndex], a ret -.asm_10684: ; 10684 (4:4684) +.didnt_use_item: ; 10684 (4:4684) xor a - ld [wd0ec], a + ld [wItemEffectSucceeded], a ret ; 10689 (4:4689) - .Quit: ; 10689 ret ; 1068a - -Function1068a: ; 1068a +InitPackBuffers: ; 1068a xor a ld [wJumptableIndex], a ld a, [wLastPocket] and $3 - ld [wcf65], a + ld [wCurrPocket], a inc a add a dec a @@ -961,75 +967,74 @@ Function1068a: ; 1068a xor a ld [wcf66], a xor a - ld [wd0e3], a + ld [wSwitchItem], a ret ; 106a5 -Function106a5: ; 106a5 +DepositSellInitPackBuffers: ; 106a5 xor a ld [hBGMapMode], a ld [wJumptableIndex], a ld [wcf64], a - ld [wcf65], a + ld [wCurrPocket], a ld [wcf66], a - ld [wd0e3], a - call Function10955 - call Function10a40 + ld [wSwitchItem], a + call Pack_InitGFX + call Pack_InitColors ret ; 106be -Function106be: ; 106be -.asm_106be - call Function106c7 - call Function1076f - jr c, .asm_106be +DepositSellPack: ; 106be +.loop + call .RunJumptable + call DepositSellTutorial_InterpretJoypad + jr c, .loop ret ; 106c7 -Function106c7: ; 106c7 +.RunJumptable: ; 106c7 ld a, [wJumptableIndex] - ld hl, Jumptable_106d1 - call Function1086b + ld hl, .Jumptable + call Pack_GetJumptablePointer jp [hl] -; 106d1 - - -Jumptable_106d1: ; 106d1 (4:46d1) - dw .ItemsPocket - dw .BallsPocket - dw .KeyItemsPocket - dw .TMHMPocket +; 106d1 +.Jumptable: ; 106d1 (4:46d1) + jumptable_start + jumptable .ItemsPocket + jumptable .BallsPocket + jumptable .KeyItemsPocket + jumptable .TMHMPocket .ItemsPocket: ; 106d9 (4:46d9) xor a call InitPocket - ld hl, MenuDataHeader_0x10a67 + ld hl, PC_Mart_ItemsPocketMenuDataHeader call CopyMenuDataHeader ld a, [wItemsPocketCursor] ld [wMenuCursorBuffer], a ld a, [wItemsPocketScrollPosition] ld [wMenuScrollPosition], a - call HandleScrollingMenu + call ScrollingMenu ld a, [wMenuScrollPosition] ld [wItemsPocketScrollPosition], a - ld a, [MenuSelection2] + ld a, [wMenuCursorY] ld [wItemsPocketCursor], a ret .KeyItemsPocket: ; 106ff (4:46ff) ld a, 2 call InitPocket - ld hl, MenuDataHeader_0x10a97 + ld hl, PC_Mart_KeyItemsPocketMenuDataHeader call CopyMenuDataHeader ld a, [wKeyItemsPocketCursor] ld [wMenuCursorBuffer], a ld a, [wKeyItemsPocketScrollPosition] ld [wMenuScrollPosition], a - call HandleScrollingMenu + call ScrollingMenu ld a, [wMenuScrollPosition] ld [wKeyItemsPocketScrollPosition], a - ld a, [MenuSelection2] + ld a, [wMenuCursorY] ld [wKeyItemsPocketCursor], a ret @@ -1037,7 +1042,7 @@ Jumptable_106d1: ; 106d1 (4:46d1) ld a, 3 call InitPocket call WaitBGMap_DrawPackGFX - callba Function2c76f + callba TMHMPocket ld a, [CurItem] ld [CurItem], a ret @@ -1045,75 +1050,74 @@ Jumptable_106d1: ; 106d1 (4:46d1) .BallsPocket: ; 1073b (4:473b) ld a, 1 call InitPocket - ld hl, MenuDataHeader_0x10ac7 + ld hl, PC_Mart_BallsPocketMenuDataHeader call CopyMenuDataHeader ld a, [wBallsPocketCursor] ld [wMenuCursorBuffer], a ld a, [wBallsPocketScrollPosition] ld [wMenuScrollPosition], a - call HandleScrollingMenu + call ScrollingMenu ld a, [wMenuScrollPosition] ld [wBallsPocketScrollPosition], a - ld a, [MenuSelection2] + ld a, [wMenuCursorY] ld [wBallsPocketCursor], a ret InitPocket: ; 10762 (4:4762) - ld [wcf65], a + ld [wCurrPocket], a call ClearPocketList call DrawPocketName call WaitBGMap_DrawPackGFX ret - -Function1076f: ; 1076f - ld hl, wcf73 +DepositSellTutorial_InterpretJoypad: ; 1076f + ld hl, wMenuJoypad ld a, [hl] - and $1 - jr nz, .asm_10788 + and A_BUTTON + jr nz, .a_button ld a, [hl] - and $2 - jr nz, .asm_1078f + and B_BUTTON + jr nz, .b_button ld a, [hl] - and $20 - jr nz, .asm_10795 + and D_LEFT + jr nz, .d_left ld a, [hl] - and $10 - jr nz, .asm_107a8 + and D_RIGHT + jr nz, .d_right scf ret -.asm_10788 - ld a, $1 +.a_button + ld a, TRUE ld [wcf66], a and a ret -.asm_1078f +.b_button xor a ld [wcf66], a and a ret -.asm_10795 +.d_left ld a, [wJumptableIndex] dec a and $3 ld [wJumptableIndex], a push de - ld de, SFX_UNKNOWN_62 + ld de, SFX_SWITCH_POCKETS call PlaySFX pop de scf ret -.asm_107a8 +.d_right ld a, [wJumptableIndex] inc a and $3 ld [wJumptableIndex], a push de - ld de, SFX_UNKNOWN_62 + ld de, SFX_SWITCH_POCKETS call PlaySFX pop de scf @@ -1121,131 +1125,130 @@ Function1076f: ; 1076f ; 107bb TutorialPack: ; 107bb - call Function106a5 + call DepositSellInitPackBuffers ld a, [InputType] or a jr z, .loop callba _DudeAutoInput_RightA - .loop - call Function107d7 - call Function1076f + call .RunJumptable + call DepositSellTutorial_InterpretJoypad jr c, .loop xor a ld [wcf66], a ret ; 107d7 -Function107d7: ; 107d7 +.RunJumptable: ; 107d7 ld a, [wJumptableIndex] ld hl, .jumptable - call Function1086b + call Pack_GetJumptablePointer jp [hl] -; 107e1 +; 107e1 .jumptable: ; 107e1 (4:47e1) - dw Function107e9 - dw Function1083b - dw Function10807 - dw Function10826 + jumptable_start + jumptable .Items + jumptable .Balls + jumptable .KeyItems + jumptable .TMHM - -Function107e9: ; 107e9 (4:47e9) +.Items: ; 107e9 (4:47e9) xor a - ld hl, MenuDataHeader_0x107ef - jr Function1085a -; 107ef (4:47ef) + ld hl, .ItemsMenuDataHeader + jr .DisplayPocket -MenuDataHeader_0x107ef: ; 0x107ef +; 107ef (4:47ef) +.ItemsMenuDataHeader: ; 0x107ef db $40 ; flags db 01, 07 ; start coords db 11, 19 ; end coords - dw .MenuData2 + dw .ItemsMenuData2 db 1 ; default option ; 0x107f7 -.MenuData2: ; 0x107f7 +.ItemsMenuData2: ; 0x107f7 db $ae ; flags db 5, 8 ; rows, columns db 2 ; horizontal spacing - dbw 0, OTPartyMons + dbw 0, wDudeNumItems dba PlaceMenuItemName dba PlaceMenuItemQuantity dba UpdateItemDescription ; 10807 -Function10807: ; 10807 (4:4807) +.KeyItems: ; 10807 (4:4807) ld a, 2 - ld hl, MenuDataHeader_0x1080e - jr Function1085a -; 1080e (4:480e) + ld hl, .KeyItemsMenuDataHeader + jr .DisplayPocket -MenuDataHeader_0x1080e: ; 0x1080e +; 1080e (4:480e) +.KeyItemsMenuDataHeader: ; 0x1080e db $40 ; flags db 01, 07 ; start coords db 11, 19 ; end coords - dw .MenuData2 + dw .KeyItemsMenuData2 db 1 ; default option ; 0x10816 -.MenuData2: ; 0x10816 +.KeyItemsMenuData2: ; 0x10816 db $ae ; flags db 5, 8 ; rows, columns db 1 ; horizontal spacing - dbw 0, OTPartyMon1Exp + 2 + dbw 0, wDudeNumKeyItems dba PlaceMenuItemName dba PlaceMenuItemQuantity dba UpdateItemDescription ; 10826 -Function10826: ; 10826 (4:4826) +.TMHM: ; 10826 (4:4826) ld a, 3 call InitPocket call WaitBGMap_DrawPackGFX - callba Function2c76f + callba TMHMPocket ld a, [CurItem] ld [CurItem], a ret -Function1083b: ; 1083b (4:483b) +.Balls: ; 1083b (4:483b) ld a, 1 - ld hl, MenuDataHeader_0x10842 - jr Function1085a -; 10842 (4:4842) + ld hl, .BallsMenuDataHeader + jr .DisplayPocket -MenuDataHeader_0x10842: ; 0x10842 +; 10842 (4:4842) +.BallsMenuDataHeader: ; 0x10842 db $40 ; flags db 01, 07 ; start coords db 11, 19 ; end coords - dw .MenuData2 + dw .BallsMenuData2 db 1 ; default option ; 0x1084a -.MenuData2: ; 0x1084a +.BallsMenuData2: ; 0x1084a db $ae ; flags db 5, 8 ; rows, columns db 2 ; horizontal spacing - dbw 0, OTPartyMon1CaughtGender + dbw 0, wDudeNumBalls dba PlaceMenuItemName dba PlaceMenuItemQuantity dba UpdateItemDescription ; 1085a -Function1085a: ; 1085a (4:485a) +.DisplayPocket: ; 1085a (4:485a) push hl call InitPocket pop hl call CopyMenuDataHeader - call HandleScrollingMenu + call ScrollingMenu ret -Function10866: ; 10866 (4:4866) +Pack_JumptableNext: ; 10866 (4:4866) ld hl, wJumptableIndex inc [hl] ret -Function1086b: ; 1086b +Pack_GetJumptablePointer: ; 1086b ld e, a ld d, 0 rept 2 @@ -1257,24 +1260,24 @@ endr ret ; 10874 -Function10874: ; 10874 (4:4874) +Pack_QuitNoScript: ; 10874 (4:4874) ld hl, wJumptableIndex set 7, [hl] xor a ld [wcf66], a ret -Function1087e: ; 1087e (4:487e) +Pack_QuitRunScript: ; 1087e (4:487e) ld hl, wJumptableIndex set 7, [hl] - ld a, $1 + ld a, TRUE ld [wcf66], a ret -Function10889: ; 10889 (4:4889) +Pack_PrintTextNoScroll: ; 10889 (4:4889) ld a, [Options] push af - set 4, a + set NO_TEXT_SCROLL, a ld [Options], a call PrintText pop af @@ -1283,10 +1286,8 @@ Function10889: ; 10889 (4:4889) WaitBGMap_DrawPackGFX: ; 1089a (4:489a) call WaitBGMap - - DrawPackGFX: ; 1089d - ld a, [wcf65] + ld a, [wCurrPocket] and $3 ld e, a ld d, $0 @@ -1296,7 +1297,6 @@ DrawPackGFX: ; 1089d ld a, [PlayerGender] bit 0, a jr nz, .female - .male_dude ld hl, PackGFXPointers rept 2 @@ -1322,85 +1322,91 @@ PackGFXPointers: ; 108cc dw PackGFX + $f0 * 2 ; 108d4 -Function108d4: ; 108d4 (4:48d4) - ld hl, wcf73 - ld a, [wd0e3] +Pack_InterpretJoypad: ; 108d4 (4:48d4) + ld hl, wMenuJoypad + ld a, [wSwitchItem] and a - jr nz, .asm_10931 + jr nz, .switching_item ld a, [hl] - and $1 - jr nz, .asm_108f8 + and A_BUTTON + jr nz, .a_button ld a, [hl] - and $2 - jr nz, .asm_108fa + and B_BUTTON + jr nz, .b_button ld a, [hl] - and $20 - jr nz, .asm_10901 + and D_LEFT + jr nz, .d_left ld a, [hl] - and $10 - jr nz, .asm_10912 + and D_RIGHT + jr nz, .d_right ld a, [hl] - and $4 - jr nz, .asm_10923 + and SELECT + jr nz, .select scf ret -.asm_108f8 + +.a_button and a ret -.asm_108fa - ld a, $9 + +.b_button + ld a, Pack_QuitNoScriptTableIndex ld [wJumptableIndex], a scf ret -.asm_10901 + +.d_left ld a, b ld [wJumptableIndex], a ld [wcf64], a push de - ld de, SFX_UNKNOWN_62 + ld de, SFX_SWITCH_POCKETS call PlaySFX pop de scf ret -.asm_10912 + +.d_right ld a, c ld [wJumptableIndex], a ld [wcf64], a push de - ld de, SFX_UNKNOWN_62 + ld de, SFX_SWITCH_POCKETS call PlaySFX pop de scf ret -.asm_10923 - callba Function2490c + +.select + callba SwitchItemsInBag ld hl, Text_MoveItemWhere - call Function10889 + call Pack_PrintTextNoScroll scf ret -.asm_10931 + +.switching_item ld a, [hl] - and $5 - jr nz, .asm_1093d + and A_BUTTON | SELECT + jr nz, .place_insert ld a, [hl] - and $2 - jr nz, .asm_1094f + and B_BUTTON + jr nz, .end_switch scf ret -.asm_1093d - callba Function2490c + +.place_insert + callba SwitchItemsInBag ld de, SFX_SWITCH_POKEMON call WaitPlaySFX ld de, SFX_SWITCH_POKEMON call WaitPlaySFX -.asm_1094f +.end_switch xor a - ld [wd0e3], a + ld [wSwitchItem], a scf ret - -Function10955: ; 10955 +Pack_InitGFX: ; 10955 call ClearBGPalettes call ClearTileMap call ClearSprites @@ -1410,18 +1416,15 @@ Function10955: ; 10955 ld bc, $60 tiles ld a, BANK(PackMenuGFX) call FarCopyBytes - ; Background (blue if male, pink if female) hlcoord 0, 1 ld bc, 11 * SCREEN_WIDTH ld a, $24 call ByteFill - ; This is where the items themselves will be listed. hlcoord 5, 1 lb bc, 11, 15 call ClearBox - ; ◀▶ POCKET ▼▲ ITEMS hlcoord 0, 0 ld a, $28 @@ -1431,10 +1434,8 @@ Function10955: ; 10955 inc a dec c jr nz, .loop - call DrawPocketName call PlacePackGFX - ; Place the textbox for displaying the item description hlcoord 0, SCREEN_HEIGHT - 4 - 2 lb bc, 4, SCREEN_WIDTH - 2 @@ -1463,13 +1464,11 @@ PlacePackGFX: ; 109a5 ; 109bb DrawPocketName: ; 109bb - ld a, [wcf65] - + ld a, [wCurrPocket] ; * 15 ld d, a swap a sub d - ld d, 0 ld e, a ld hl, .tilemap @@ -1499,15 +1498,12 @@ DrawPocketName: ; 109bb db $00, $04, $04, $04, $01 ; top border db $06, $07, $08, $09, $0a ; Items db $02, $05, $05, $05, $03 ; bottom border - db $00, $04, $04, $04, $01 ; top border db $15, $16, $17, $18, $19 ; Balls db $02, $05, $05, $05, $03 ; bottom border - db $00, $04, $04, $04, $01 ; top border db $0b, $0c, $0d, $0e, $0f ; Key Items db $02, $05, $05, $05, $03 ; bottom border - db $00, $04, $04, $04, $01 ; top border db $10, $11, $12, $13, $14 ; TM/HM db $02, $05, $05, $05, $03 ; bottom border @@ -1536,25 +1532,24 @@ ClearPocketList: ; 10a36 (4:4a36) call ClearBox ret - -Function10a40: ; 10a40 +Pack_InitColors: ; 10a40 call WaitBGMap - ld b, SCREEN_WIDTH + ld b, SCGB_PACKPALS call GetSGBLayout call SetPalettes call DelayFrame ret ; 10a4f -MenuDataHeader_0x10a4f: ; 0x10a4f +ItemsPocketMenuDataHeader: ; 0x10a4f db $40 ; flags db 01, 07 ; start coords db 11, 19 ; end coords - dw MenuData2_0x10a57 + dw .MenuData2 db 1 ; default option ; 0x10a57 -MenuData2_0x10a57: ; 0x10a57 +.MenuData2: ; 0x10a57 db $ae ; flags db 5, 8 ; rows, columns db 2 ; horizontal spacing @@ -1564,15 +1559,15 @@ MenuData2_0x10a57: ; 0x10a57 dba UpdateItemDescription ; 10a67 -MenuDataHeader_0x10a67: ; 0x10a67 +PC_Mart_ItemsPocketMenuDataHeader: ; 0x10a67 db $40 ; flags db 01, 07 ; start coords db 11, 19 ; end coords - dw MenuData2_0x10a6f + dw .MenuData2 db 1 ; default option ; 0x10a6f -MenuData2_0x10a6f: ; 0x10a6f +.MenuData2: ; 0x10a6f db $2e ; flags db 5, 8 ; rows, columns db 2 ; horizontal spacing @@ -1582,15 +1577,15 @@ MenuData2_0x10a6f: ; 0x10a6f dba UpdateItemDescription ; 10a7f -MenuDataHeader_0x10a7f: ; 0x10a7f +KeyItemsPocketMenuDataHeader: ; 0x10a7f db $40 ; flags db 01, 07 ; start coords db 11, 19 ; end coords - dw MenuData2_0x10a87 + dw .MenuData2 db 1 ; default option ; 0x10a87 -MenuData2_0x10a87: ; 0x10a87 +.MenuData2: ; 0x10a87 db $ae ; flags db 5, 8 ; rows, columns db 1 ; horizontal spacing @@ -1600,15 +1595,15 @@ MenuData2_0x10a87: ; 0x10a87 dba UpdateItemDescription ; 10a97 -MenuDataHeader_0x10a97: ; 0x10a97 +PC_Mart_KeyItemsPocketMenuDataHeader: ; 0x10a97 db $40 ; flags db 01, 07 ; start coords db 11, 19 ; end coords - dw MenuData2_0x10a9f + dw .MenuData2 db 1 ; default option ; 0x10a9f -MenuData2_0x10a9f: ; 0x10a9f +.MenuData2: ; 0x10a9f db $2e ; flags db 5, 8 ; rows, columns db 1 ; horizontal spacing @@ -1618,15 +1613,15 @@ MenuData2_0x10a9f: ; 0x10a9f dba UpdateItemDescription ; 10aaf -MenuDataHeader_0x10aaf: ; 0x10aaf +BallsPocketMenuDataHeader: ; 0x10aaf db $40 ; flags db 01, 07 ; start coords db 11, 19 ; end coords - dw MenuData2_0x10ab7 + dw .MenuData2 db 1 ; default option ; 0x10ab7 -MenuData2_0x10ab7: ; 0x10ab7 +.MenuData2: ; 0x10ab7 db $ae ; flags db 5, 8 ; rows, columns db 2 ; horizontal spacing @@ -1636,15 +1631,15 @@ MenuData2_0x10ab7: ; 0x10ab7 dba UpdateItemDescription ; 10ac7 -MenuDataHeader_0x10ac7: ; 0x10ac7 +PC_Mart_BallsPocketMenuDataHeader: ; 0x10ac7 db $40 ; flags db 01, 07 ; start coords db 11, 19 ; end coords - dw MenuData2_0x10acf + dw .MenuData2 db 1 ; default option ; 0x10acf -MenuData2_0x10acf: ; 0x10acf +.MenuData2: ; 0x10acf db $2e ; flags db 5, 8 ; rows, columns db 2 ; horizontal spacing @@ -1723,6 +1718,5 @@ TextJump_YouCantUseItInABattle: ; 0x10b11 PackMenuGFX: INCBIN "gfx/misc/pack_menu.2bpp" - PackGFX: INCBIN "gfx/misc/pack.2bpp" diff --git a/engine/party_menu.asm b/engine/party_menu.asm index 06b774064..35f6e3d47 100644 --- a/engine/party_menu.asm +++ b/engine/party_menu.asm @@ -8,12 +8,12 @@ SelectMonFromParty: ; 50000 call SetPalettes call DelayFrame call PartyMenuSelect - call Function2b74 + call ReturnToMapWithSpeechTextbox ret ; 5001d -Function5001d: ; 5001d +SelectTradeOrDaycareMon: ; 5001d ld a, b ld [PartyMenuActionText], a call DisableSpriteUpdates @@ -25,7 +25,7 @@ Function5001d: ; 5001d call SetPalettes call DelayFrame call PartyMenuSelect - call Function2b74 + call ReturnToMapWithSpeechTextbox ret ; 5003f @@ -41,7 +41,7 @@ Function5003f: ; 5003f LoadPartyMenuGFX: ; 5004f call LoadFontsBattleExtra callab Function8ad1 ; engine/color.asm - callab ClearSpriteAnims + callab ClearSpriteAnims2 ret ; 5005f @@ -125,7 +125,7 @@ endr PlacePartyHPBar: ; 500cf xor a - ld [wcda9], a + ld [wSGBPals], a ld a, [PartyCount] and a ret z @@ -143,17 +143,16 @@ PlacePartyHPBar: ; 500cf ld d, $6 ld b, $0 call DrawBattleHPBar - ld hl, wcd9b - ld a, [wcda9] + ld hl, wHPPals + ld a, [wSGBPals] ld c, a ld b, $0 add hl, bc call SetHPPal - ld b, SCGB_FC + ld b, SCGB_PARTY_MENU_HP_PALS call GetSGBLayout - .skip - ld hl, wcda9 + ld hl, wSGBPals inc [hl] pop hl ld de, 2 * SCREEN_WIDTH @@ -190,7 +189,7 @@ PlacePartymonHPBar: ; 50117 ld d, a ld a, [hli] ld e, a - predef DrawPartyMenuHPBar + predef ComputeHPBarPixels ret ; 50138 @@ -670,7 +669,7 @@ InitPartyMenuGFX: ; 503e0 pop bc dec c jr nz, .loop - callab Function8cf69 + callab PlaySpriteAnimations ret ; 50405 @@ -679,10 +678,10 @@ InitPartyMenuWithCancel: ; 50405 xor a ld [wSwitchMon], a ld de, PartyMenuAttributes - call InitMenu3 + call SetMenuAttributes ld a, [PartyCount] inc a - ld [wcfa3], a ; list length + ld [w2DMenuNumRows], a ; list length dec a ld b, a ld a, [wPartyMenuCursor] @@ -693,21 +692,21 @@ InitPartyMenuWithCancel: ; 50405 jr c, .done .skip - ld a, $1 + ld a, 1 .done - ld [MenuSelection2], a + ld [wMenuCursorY], a ld a, A_BUTTON | B_BUTTON - ld [wcfa8], a + ld [wMenuJoypadFilter], a ret ; 5042d InitPartyMenuNoCancel: ; 0x5042d ; no cancel ld de, PartyMenuAttributes - call InitMenu3 + call SetMenuAttributes ld a, [PartyCount] - ld [wcfa3], a ; list length + ld [w2DMenuNumRows], a ; list length ld b, a ld a, [wPartyMenuCursor] and a @@ -716,34 +715,38 @@ InitPartyMenuNoCancel: ; 0x5042d cp b jr c, .done .skip - ld a, $1 + ld a, 1 .done - ld [MenuSelection2], a + ld [wMenuCursorY], a ld a, A_BUTTON | B_BUTTON - ld [wcfa8], a + ld [wMenuJoypadFilter], a ret ; 5044f (14:444f) PartyMenuAttributes: ; 5044f ; cursor y ; cursor x -; list length -; ? +; num rows +; num cols ; bit 6: animate sprites bit 5: wrap around ; ? ; distance between items (hi: y, lo: x) ; allowed buttons (mask) - db $01, $00, $00, $01, $60, $00, $20, $00 + db 1, 0 + db 0, 1 + db $60, $00 + dn 2, 0 + db 0 ; 50457 PartyMenuSelect: ; 0x50457 ; sets carry if exitted menu. - call Function1bc9 - call Function1bee + call StaticMenuJoypad + call PlaceHollowCursor ld a, [PartyCount] inc a ld b, a - ld a, [MenuSelection2] ; menu selection? + ld a, [wMenuCursorY] ; menu selection? cp b jr z, .exitmenu ; CANCEL ld [wPartyMenuCursor], a @@ -751,7 +754,7 @@ PartyMenuSelect: ; 0x50457 ld b, a bit 1, b jr nz, .exitmenu ; B button? - ld a, [MenuSelection2] + ld a, [wMenuCursorY] dec a ld [CurPartyMon], a ld c, a diff --git a/engine/phone.asm b/engine/phone.asm index ab0ecb84a..805f221a7 100644 --- a/engine/phone.asm +++ b/engine/phone.asm @@ -274,7 +274,7 @@ endr push hl call LoadCallerScript pop hl - ld de, wd048 + ld de, wPhoneScriptPointer ld a, [hli] ld [de], a inc de @@ -442,10 +442,10 @@ WrongNumber: ; 90233 Script_ReceivePhoneCall: ; 0x90241 refreshscreen $0 callasm RingTwice_StartCall - ptcall wd048 - closetext + ptcall wPhoneScriptPointer + waitbutton callasm HangUp - loadmovesprites + closetext callasm InitCallReceiveDelay end ; 0x90255 diff --git a/engine/phone_scripts.asm b/engine/phone_scripts.asm index 5d0795766..e8af05f36 100644 --- a/engine/phone_scripts.asm +++ b/engine/phone_scripts.asm @@ -1,3 +1,6 @@ +SWARM_DUNSPARCE EQU 0 +SWARM_YANMA EQU 1 + UnusedPhoneScript: ; 0xbcea5 farwritetext UnusedPhoneText end @@ -19,7 +22,7 @@ MomPhoneScript: ; 0xbceaa checkevent EVENT_IN_YOUR_ROOM iftrue MomPhoneHangUpScript farwritetext MomPhoneGreetingText - keeptextopen + buttonsound mapnametotext $0 checkcode VAR_ROOFPALETTE if_equal $1, UnknownScript_0xbcee7 @@ -28,7 +31,7 @@ MomPhoneScript: ; 0xbceaa UnknownScript_0xbcedf: ; 0xbcedf farwritetext UnknownText_0x1b4021 - keeptextopen + buttonsound jump UnknownScript_0xbcf37 UnknownScript_0xbcee7: ; 0xbcee7 @@ -39,37 +42,37 @@ UnknownScript_0xbcee7: ; 0xbcee7 if_equal GROUP_AZALEA_TOWN, .azalea if_equal GROUP_GOLDENROD_CITY, .goldenrod farwritetext MomPhoneGenericAreaText - keeptextopen + buttonsound jump UnknownScript_0xbcf37 .newbark ; 0xbcf05 farwritetext MomPhoneNewBarkText - keeptextopen + buttonsound jump UnknownScript_0xbcf37 .cherrygrove ; 0xbcf0d farwritetext MomPhoneCherrygroveText - keeptextopen + buttonsound jump UnknownScript_0xbcf37 .violet ; 0xbcf15 - displaylocation SPROUT_TOWER, 1 + landmarktotext SPROUT_TOWER, 1 jump UnknownScript_0xbcedf .azalea ; 0xbcf1b - displaylocation SLOWPOKE_WELL, 1 + landmarktotext SLOWPOKE_WELL, 1 jump UnknownScript_0xbcedf .goldenrod ; 0xbcf21 - displaylocation RADIO_TOWER, 1 + landmarktotext RADIO_TOWER, 1 jump UnknownScript_0xbcedf UnknownScript_0xbcf27: ; 0xbcf27 farwritetext UnknownText_0x1b411c - keeptextopen + buttonsound jump UnknownScript_0xbcf37 UnknownScript_0xbcf2f: ; 0xbcf2f farwritetext UnknownText_0x1b4150 - keeptextopen + buttonsound jump UnknownScript_0xbcf37 UnknownScript_0xbcf37: ; 0xbcf37 @@ -113,13 +116,13 @@ UnknownScript_0xbcf79: ; 0xbcf79 MomPhoneSaveMoneyScript: ; 0xbcf87 setflag ENGINE_MOM_SAVING_MONEY farwritetext UnknownText_0x1b4289 - keeptextopen + buttonsound jump MomPhoneHangUpScript MomPhoneWontSaveMoneyScript: ; 0xbcf92 clearflag ENGINE_MOM_SAVING_MONEY farwritetext MomPhoneWontSaveMoneyText - keeptextopen + buttonsound jump MomPhoneHangUpScript MomPhoneHangUpScript: ; 0xbcf9d @@ -155,22 +158,22 @@ BillPhoneScript1: ; 0xbcfc5 checknite iftrue .nitegreet farwritetext BillPhoneMornGreetingText - keeptextopen + buttonsound jump .main .daygreet ; 0xbcfd7 farwritetext BillPhoneDayGreetingText - keeptextopen + buttonsound jump .main .nitegreet ; 0xbcfdf farwritetext BillPhoneNiteGreetingText - keeptextopen + buttonsound jump .main .main ; 0xbcfe7 farwritetext BillPhoneGeneriText - keeptextopen + buttonsound checkcode VAR_BOXSPACE RAM2MEM $0 if_equal $0, .full @@ -188,7 +191,7 @@ BillPhoneScript1: ; 0xbcfc5 BillPhoneScript2: ; 0xbd007 farwritetext BillPhoneNewlyFullText - closetext + waitbutton end ; Elm @@ -302,7 +305,7 @@ JackPhoneScript1: trainertotext SCHOOLBOY, JACK1, $0 checkflag ENGINE_JACK iftrue UnknownScript_0xbd0f3 - farscall UnknownScript_0xbde4e + farscall PhoneScript_AnswerPhone_Male checkflag ENGINE_JACK_MONDAY_MORNING iftrue UnknownScript_0xbd0ef checkcode VAR_WEEKDAY @@ -314,23 +317,23 @@ UnknownScript_0xbd0ef: farjump UnknownScript_0xa08f8 UnknownScript_0xbd0f3: - displaylocation NATIONAL_PARK, $2 + landmarktotext NATIONAL_PARK, $2 farjump UnknownScript_0xa0a2d JackPhoneScript2: trainertotext SCHOOLBOY, JACK1, $0 - farscall UnknownScript_0xbe1b6 - farscall UnknownScript_0xbde3f + farscall PhoneScript_GreetPhone_Male + farscall PhoneScript_Random2 if_equal $0, UnknownScript_0xbd13b checkflag ENGINE_JACK iftrue UnknownScript_0xbd11e checkflag ENGINE_JACK_MONDAY_MORNING iftrue UnknownScript_0xbd11e - farscall UnknownScript_0xbde3f + farscall PhoneScript_Random2 if_equal $0, UnknownScript_0xbd12d UnknownScript_0xbd11e: - farscall UnknownScript_0xbde42 + farscall PhoneScript_Random3 if_equal $0, UnknownScript_0xbd137 farjump UnknownScript_0xa0000 @@ -338,7 +341,7 @@ UnknownScript_0xbd12a: setflag ENGINE_JACK_MONDAY_MORNING UnknownScript_0xbd12d: - displaylocation NATIONAL_PARK, $2 + landmarktotext NATIONAL_PARK, $2 setflag ENGINE_JACK farjump UnknownScript_0xa0376 @@ -352,21 +355,21 @@ UnknownScript_0xbd13b: BeverlyPhoneScript1: trainertotext POKEFANF, BEVERLY1, $0 - farscall UnknownScript_0xbe0b6 + farscall PhoneScript_AnswerPhone_Female checkflag ENGINE_BEVERLY_HAS_NUGGET iftrue UnknownScript_0xbd151 farjump UnknownScript_0xa0900 UnknownScript_0xbd151: - displaylocation NATIONAL_PARK, $2 + landmarktotext NATIONAL_PARK, $2 farjump UnknownScript_0xa0aa5 BeverlyPhoneScript2: trainertotext POKEFANF, BEVERLY1, $0 - farscall UnknownScript_0xbe41e + farscall PhoneScript_GreetPhone_Female checkflag ENGINE_BEVERLY_HAS_NUGGET iftrue UnknownScript_0xbd16e - farscall UnknownScript_0xbde45 + farscall PhoneScript_Random4 if_equal $0, UnknownScript_0xbd172 UnknownScript_0xbd16e: @@ -374,7 +377,7 @@ UnknownScript_0xbd16e: UnknownScript_0xbd172: setflag ENGINE_BEVERLY_HAS_NUGGET - displaylocation NATIONAL_PARK, $2 + landmarktotext NATIONAL_PARK, $2 farjump UnknownScript_0xa061e ; Huey @@ -383,7 +386,7 @@ HueyPhoneScript1: trainertotext SAILOR, HUEY1, $0 checkflag ENGINE_HUEY iftrue UnknownScript_0xbd1a2 - farscall UnknownScript_0xbde4e + farscall PhoneScript_AnswerPhone_Male checkflag ENGINE_HUEY_WEDNESDAY_NIGHT iftrue UnknownScript_0xbd19b checkcode VAR_WEEKDAY @@ -396,28 +399,28 @@ UnknownScript_0xbd19b: farjump UnknownScript_0xa0908 UnknownScript_0xbd1a2: - displaylocation LIGHTHOUSE, $2 + landmarktotext LIGHTHOUSE, $2 farjump UnknownScript_0xa0a32 HueyPhoneScript2: trainertotext SAILOR, HUEY1, $0 - farscall UnknownScript_0xbe1b6 + farscall PhoneScript_GreetPhone_Male checkflag ENGINE_HUEY iftrue UnknownScript_0xbd1c9 checkflag ENGINE_HUEY_WEDNESDAY_NIGHT iftrue UnknownScript_0xbd1c9 - farscall UnknownScript_0xbde42 + farscall PhoneScript_Random3 if_equal $0, UnknownScript_0xbd1d0 if_equal $1, UnknownScript_0xbd1d0 UnknownScript_0xbd1c9: - farjump UnknownScript_0xbe622 + farjump PhoneScript_MonFlavorText UnknownScript_0xbd1cd: setflag ENGINE_HUEY_WEDNESDAY_NIGHT UnknownScript_0xbd1d0: - displaylocation LIGHTHOUSE, $2 + landmarktotext LIGHTHOUSE, $2 setflag ENGINE_HUEY farjump UnknownScript_0xa0376 @@ -427,7 +430,7 @@ GavenPhoneScript1: trainertotext COOLTRAINERM, GAVEN3, $0 checkflag ENGINE_GAVEN iftrue UnknownScript_0xbd1fd - farscall UnknownScript_0xbde4e + farscall PhoneScript_AnswerPhone_Male checkflag ENGINE_GAVEN_THURSDAY_MORNING iftrue UnknownScript_0xbd1f9 checkcode VAR_WEEKDAY @@ -439,21 +442,21 @@ UnknownScript_0xbd1f9: farjump UnknownScript_0xa0910 UnknownScript_0xbd1fd: - displaylocation ROUTE_26, $2 + landmarktotext ROUTE_26, $2 farjump UnknownScript_0xa0a37 GavenPhoneScript2: trainertotext COOLTRAINERM, GAVEN3, $0 - farscall UnknownScript_0xbe1b6 + farscall PhoneScript_GreetPhone_Male checkflag ENGINE_GAVEN iftrue UnknownScript_0xbd220 checkflag ENGINE_GAVEN_THURSDAY_MORNING iftrue UnknownScript_0xbd220 - farscall UnknownScript_0xbde3f + farscall PhoneScript_Random2 if_equal $0, UnknownScript_0xbd22f UnknownScript_0xbd220: - farscall UnknownScript_0xbde42 + farscall PhoneScript_Random3 if_equal $0, UnknownScript_0xbd239 farjump UnknownScript_0xa0000 @@ -461,7 +464,7 @@ UnknownScript_0xbd22c: setflag ENGINE_GAVEN_THURSDAY_MORNING UnknownScript_0xbd22f: - displaylocation ROUTE_26, $2 + landmarktotext ROUTE_26, $2 setflag ENGINE_GAVEN farjump UnknownScript_0xa0376 @@ -474,7 +477,7 @@ BethPhoneScript1: trainertotext COOLTRAINERF, BETH1, $0 checkflag ENGINE_BETH iftrue UnknownScript_0xbd260 - farscall UnknownScript_0xbe0b6 + farscall PhoneScript_AnswerPhone_Female checkflag ENGINE_BETH_FRIDAY_AFTERNOON iftrue UnknownScript_0xbd25c checkcode VAR_WEEKDAY @@ -486,17 +489,17 @@ UnknownScript_0xbd25c: farjump UnknownScript_0xa0918 UnknownScript_0xbd260: - displaylocation ROUTE_26, $2 + landmarktotext ROUTE_26, $2 farjump UnknownScript_0xa0a3c BethPhoneScript2: trainertotext COOLTRAINERF, BETH1, $0 - farscall UnknownScript_0xbe41e + farscall PhoneScript_GreetPhone_Female checkflag ENGINE_BETH iftrue UnknownScript_0xbd283 checkflag ENGINE_BETH_FRIDAY_AFTERNOON iftrue UnknownScript_0xbd283 - farscall UnknownScript_0xbde3f + farscall PhoneScript_Random2 if_equal $0, UnknownScript_0xbd28a UnknownScript_0xbd283: @@ -506,7 +509,7 @@ UnknownScript_0xbd287: setflag ENGINE_BETH_FRIDAY_AFTERNOON UnknownScript_0xbd28a: - displaylocation ROUTE_26, $2 + landmarktotext ROUTE_26, $2 setflag ENGINE_BETH farjump UnknownScript_0xa037e @@ -516,7 +519,7 @@ JosePhoneScript1: trainertotext BIRD_KEEPER, JOSE2, $0 checkflag ENGINE_JOSE iftrue UnknownScript_0xbd2bd - farscall UnknownScript_0xbde4e + farscall PhoneScript_AnswerPhone_Male checkflag ENGINE_JOSE_SATURDAY_NIGHT iftrue UnknownScript_0xbd2b9 checkflag ENGINE_JOSE_HAS_STAR_PIECE @@ -530,29 +533,29 @@ UnknownScript_0xbd2b9: farjump UnknownScript_0xa0920 UnknownScript_0xbd2bd: - displaylocation ROUTE_27, $2 + landmarktotext ROUTE_27, $2 farjump UnknownScript_0xa0a41 UnknownScript_0xbd2c4: - displaylocation ROUTE_27, $2 + landmarktotext ROUTE_27, $2 farjump UnknownScript_0xa0a41 JosePhoneScript2: trainertotext BIRD_KEEPER, JOSE2, $0 - farscall UnknownScript_0xbe1b6 + farscall PhoneScript_GreetPhone_Male checkflag ENGINE_JOSE iftrue UnknownScript_0xbd2f5 checkflag ENGINE_JOSE_SATURDAY_NIGHT iftrue UnknownScript_0xbd2f5 checkflag ENGINE_JOSE_HAS_STAR_PIECE iftrue UnknownScript_0xbd2f5 - farscall UnknownScript_0xbde42 + farscall PhoneScript_Random3 if_equal $0, UnknownScript_0xbd304 - farscall UnknownScript_0xbde42 + farscall PhoneScript_Random3 if_equal $0, UnknownScript_0xbd312 UnknownScript_0xbd2f5: - farscall UnknownScript_0xbde42 + farscall PhoneScript_Random3 if_equal $0, UnknownScript_0xbd30e farjump UnknownScript_0xa0000 @@ -560,7 +563,7 @@ UnknownScript_0xbd301: setflag ENGINE_JOSE_SATURDAY_NIGHT UnknownScript_0xbd304: - displaylocation ROUTE_27, $2 + landmarktotext ROUTE_27, $2 setflag ENGINE_JOSE farjump UnknownScript_0xa0376 @@ -569,7 +572,7 @@ UnknownScript_0xbd30e: UnknownScript_0xbd312: setflag ENGINE_JOSE_HAS_STAR_PIECE - displaylocation ROUTE_27, $2 + landmarktotext ROUTE_27, $2 farjump UnknownScript_0xa05e6 ; Reena @@ -578,7 +581,7 @@ ReenaPhoneScript1: trainertotext COOLTRAINERF, REENA1, $0 checkflag ENGINE_REENA iftrue UnknownScript_0xbd33f - farscall UnknownScript_0xbe0b6 + farscall PhoneScript_AnswerPhone_Female checkflag ENGINE_REENA_SUNDAY_MORNING iftrue UnknownScript_0xbd33b checkcode VAR_WEEKDAY @@ -590,17 +593,17 @@ UnknownScript_0xbd33b: farjump UnknownScript_0xa0928 UnknownScript_0xbd33f: - displaylocation ROUTE_27, $2 + landmarktotext ROUTE_27, $2 farjump UnknownScript_0xa0a46 ReenaPhoneScript2: trainertotext COOLTRAINERF, REENA1, $0 - farscall UnknownScript_0xbe41e + farscall PhoneScript_GreetPhone_Female checkflag ENGINE_REENA iftrue UnknownScript_0xbd362 checkflag ENGINE_REENA_SUNDAY_MORNING iftrue UnknownScript_0xbd362 - farscall UnknownScript_0xbde3f + farscall PhoneScript_Random2 if_equal $0, UnknownScript_0xbd369 UnknownScript_0xbd362: @@ -610,7 +613,7 @@ UnknownScript_0xbd366: setflag ENGINE_REENA_SUNDAY_MORNING UnknownScript_0xbd369: - displaylocation ROUTE_27, $2 + landmarktotext ROUTE_27, $2 setflag ENGINE_REENA farjump UnknownScript_0xa037e @@ -620,7 +623,7 @@ JoeyPhoneScript1: trainertotext YOUNGSTER, JOEY1, $0 checkflag ENGINE_JOEY iftrue UnknownScript_0xbd399 - farscall UnknownScript_0xbde4e + farscall PhoneScript_AnswerPhone_Male checkflag ENGINE_JOEY_MONDAY_AFTERNOON iftrue UnknownScript_0xbd392 checkcode VAR_WEEKDAY @@ -633,17 +636,17 @@ UnknownScript_0xbd392: farjump UnknownScript_0xa0930 UnknownScript_0xbd399: - displaylocation ROUTE_30, $2 + landmarktotext ROUTE_30, $2 farjump UnknownScript_0xa0a4b JoeyPhoneScript2: trainertotext YOUNGSTER, JOEY1, $0 - farscall UnknownScript_0xbe1b6 + farscall PhoneScript_GreetPhone_Male checkflag ENGINE_JOEY iftrue UnknownScript_0xbd3c0 checkflag ENGINE_JOEY_MONDAY_AFTERNOON iftrue UnknownScript_0xbd3c0 - farscall UnknownScript_0xbde42 + farscall PhoneScript_Random3 if_equal $0, UnknownScript_0xbd3c7 if_equal $1, UnknownScript_0xbd3c7 @@ -654,7 +657,7 @@ UnknownScript_0xbd3c4: setflag ENGINE_JOEY_MONDAY_AFTERNOON UnknownScript_0xbd3c7: - displaylocation ROUTE_30, $2 + landmarktotext ROUTE_30, $2 setflag ENGINE_JOEY farjump UnknownScript_0xa0376 @@ -664,7 +667,7 @@ WadePhoneScript1: trainertotext BUG_CATCHER, WADE1, $0 checkflag ENGINE_WADE iftrue UnknownScript_0xbd41a - farscall UnknownScript_0xbde4e + farscall PhoneScript_AnswerPhone_Male checkflag ENGINE_WADE_TUESDAY_NIGHT iftrue UnknownScript_0xbd3f6 checkflag ENGINE_WADE_HAS_ITEM @@ -675,7 +678,7 @@ WadePhoneScript1: iftrue UnknownScript_0xbd484 UnknownScript_0xbd3f6: - farscall UnknownScript_0xbde3f + farscall PhoneScript_Random2 if_equal $0, UnknownScript_0xbd412 checkflag ENGINE_DAILY_BUG_CONTEST iftrue UnknownScript_0xbd412 @@ -691,17 +694,17 @@ UnknownScript_0xbd416: farjump UnknownScript_0xa05a4 UnknownScript_0xbd41a: - displaylocation ROUTE_31, $2 + landmarktotext ROUTE_31, $2 farjump UnknownScript_0xa0a50 UnknownScript_0xbd421: - displaylocation ROUTE_31, $2 + landmarktotext ROUTE_31, $2 farjump UnknownScript_0xa0ab5 WadePhoneScript2: trainertotext BUG_CATCHER, WADE1, $0 - farscall UnknownScript_0xbe1b6 - farscall UnknownScript_0xbde3f + farscall PhoneScript_GreetPhone_Male + farscall PhoneScript_Random2 if_equal $0, UnknownScript_0xbd44c checkflag ENGINE_DAILY_BUG_CONTEST iftrue UnknownScript_0xbd44c @@ -717,15 +720,15 @@ UnknownScript_0xbd44c: iftrue UnknownScript_0xbd474 checkflag ENGINE_WADE_HAS_ITEM iftrue UnknownScript_0xbd474 - farscall UnknownScript_0xbde3f + farscall PhoneScript_Random2 if_equal $0, UnknownScript_0xbd495 checkflag ENGINE_FLYPOINT_GOLDENROD iffalse UnknownScript_0xbd474 - farscall UnknownScript_0xbde3f + farscall PhoneScript_Random2 if_equal $0, UnknownScript_0xbd487 UnknownScript_0xbd474: - farscall UnknownScript_0xbde42 + farscall PhoneScript_Random3 if_equal $0, UnknownScript_0xbd491 farjump UnknownScript_0xa0000 @@ -736,7 +739,7 @@ UnknownScript_0xbd484: setflag ENGINE_WADE_TUESDAY_NIGHT UnknownScript_0xbd487: - displaylocation ROUTE_31, $2 + landmarktotext ROUTE_31, $2 setflag ENGINE_WADE farjump UnknownScript_0xa0376 @@ -745,7 +748,7 @@ UnknownScript_0xbd491: UnknownScript_0xbd495: setflag ENGINE_WADE_HAS_ITEM - displaylocation ROUTE_31, $2 + landmarktotext ROUTE_31, $2 clearevent EVENT_WADE_HAS_BERRY clearevent EVENT_WADE_HAS_PSNCUREBERRY clearevent EVENT_WADE_HAS_PRZCUREBERRY @@ -779,59 +782,56 @@ UnknownScript_0xbd4ce: RalphPhoneScript1: trainertotext FISHER, RALPH1, $0 checkflag ENGINE_RALPH - iftrue UnknownScript_0xbd4fb - farscall UnknownScript_0xbde4e + iftrue Ralph_Rematch + farscall PhoneScript_AnswerPhone_Male checkflag ENGINE_RALPH_WEDNESDAY_MORNING - iftrue UnknownScript_0xbd4f1 + iftrue Ralph_CheckSwarm checkcode VAR_WEEKDAY - if_not_equal WEDNESDAY, UnknownScript_0xbd4f1 + if_not_equal WEDNESDAY, Ralph_CheckSwarm checkmorn - iftrue UnknownScript_0xbd537 - -UnknownScript_0xbd4f1: + iftrue Ralph_WednesdayMorning +Ralph_CheckSwarm: checkflag ENGINE_SPECIAL_WILDDATA - iftrue UnknownScript_0xbd502 + iftrue Ralph_ReportSwarm farjump UnknownScript_0xa0940 -UnknownScript_0xbd4fb: - displaylocation ROUTE_32, $2 +Ralph_Rematch: + landmarktotext ROUTE_32, $2 farjump UnknownScript_0xa0a55 -UnknownScript_0xbd502: - displaylocation ROUTE_32, $2 +Ralph_ReportSwarm: + landmarktotext ROUTE_32, $2 farjump UnknownScript_0xa0af5 RalphPhoneScript2: trainertotext FISHER, RALPH1, $0 - farscall UnknownScript_0xbe1b6 + farscall PhoneScript_GreetPhone_Male checkflag ENGINE_FLYPOINT_GOLDENROD - iffalse UnknownScript_0xbd52b + iffalse Ralph_CheckSwarm2 checkflag ENGINE_RALPH - iftrue UnknownScript_0xbd52b + iftrue Ralph_CheckSwarm2 checkflag ENGINE_RALPH_WEDNESDAY_MORNING - iftrue UnknownScript_0xbd52b - farscall UnknownScript_0xbde3f - if_equal $0, UnknownScript_0xbd53a - -UnknownScript_0xbd52b: - farscall UnknownScript_0xbde48 - if_equal $0, UnknownScript_0xbd544 + iftrue Ralph_CheckSwarm2 + farscall PhoneScript_Random2 + if_equal $0, Ralph_FightMe +Ralph_CheckSwarm2: + farscall PhoneScript_Random5 + if_equal $0, Ralph_SetUpSwarm farjump UnknownScript_0xa0000 -UnknownScript_0xbd537: +Ralph_WednesdayMorning: setflag ENGINE_RALPH_WEDNESDAY_MORNING - -UnknownScript_0xbd53a: - displaylocation ROUTE_32, $2 +Ralph_FightMe: + landmarktotext ROUTE_32, $2 setflag ENGINE_RALPH farjump UnknownScript_0xa0376 -UnknownScript_0xbd544: +Ralph_SetUpSwarm: checkflag ENGINE_SPECIAL_WILDDATA iftrue UnknownScript_0xbd55c setflag ENGINE_SPECIAL_WILDDATA pokenamemem QWILFISH, $1 - displaylocation ROUTE_32, $2 + landmarktotext ROUTE_32, $2 writebyte $1 special Special_ActivateFishingSwarm farjump UnknownScript_0xa05d6 @@ -845,7 +845,7 @@ LizPhoneScript1: trainertotext PICNICKER, LIZ1, $0 checkflag ENGINE_LIZ iftrue UnknownScript_0xbd586 - farscall UnknownScript_0xbe0b6 + farscall PhoneScript_AnswerPhone_Female checkflag ENGINE_LIZ_THURSDAY_AFTERNOON iftrue UnknownScript_0xbd57f checkcode VAR_WEEKDAY @@ -858,25 +858,25 @@ UnknownScript_0xbd57f: farjump UnknownScript_0xa0948 UnknownScript_0xbd586: - displaylocation ROUTE_32, $2 + landmarktotext ROUTE_32, $2 farjump UnknownScript_0xa0a5a LizPhoneScript2: trainertotext PICNICKER, LIZ1, $0 - farscall UnknownScript_0xbde45 + farscall PhoneScript_Random4 if_equal $0, UnknownScript_0xbd5d0 - farscall UnknownScript_0xbe41e + farscall PhoneScript_GreetPhone_Female checkflag ENGINE_LIZ iftrue UnknownScript_0xbd5a9 checkflag ENGINE_LIZ_THURSDAY_AFTERNOON iftrue UnknownScript_0xbd5a9 UnknownScript_0xbd5a9: - farscall UnknownScript_0xbde3f + farscall PhoneScript_Random2 if_equal $0, UnknownScript_0xbd5d4 checkflag ENGINE_FLYPOINT_GOLDENROD iffalse UnknownScript_0xbd5bf - farscall UnknownScript_0xbde3f + farscall PhoneScript_Random2 if_equal $0, UnknownScript_0xbd5c6 UnknownScript_0xbd5bf: @@ -886,7 +886,7 @@ UnknownScript_0xbd5c3: setflag ENGINE_LIZ_THURSDAY_AFTERNOON UnknownScript_0xbd5c6: - displaylocation ROUTE_32, $2 + landmarktotext ROUTE_32, $2 setflag ENGINE_LIZ farjump UnknownScript_0xa037e @@ -950,7 +950,7 @@ AnthonyPhoneScript1: trainertotext HIKER, ANTHONY2, $0 checkflag ENGINE_ANTHONY iftrue UnknownScript_0xbd65d - farscall UnknownScript_0xbde4e + farscall PhoneScript_AnswerPhone_Male checkflag ENGINE_ANTHONY_FRIDAY_NIGHT iftrue UnknownScript_0xbd653 checkcode VAR_WEEKDAY @@ -964,27 +964,27 @@ UnknownScript_0xbd653: farjump UnknownScript_0xa0950 UnknownScript_0xbd65d: - displaylocation ROUTE_33, $2 + landmarktotext ROUTE_33, $2 farjump UnknownScript_0xa0a5f UnknownScript_0xbd664: - displaylocation ROUTE_33, $2 + landmarktotext ROUTE_33, $2 farjump UnknownScript_0xa0afa AnthonyPhoneScript2: trainertotext HIKER, ANTHONY2, $0 - farscall UnknownScript_0xbe1b6 + farscall PhoneScript_GreetPhone_Male checkflag ENGINE_FLYPOINT_GOLDENROD iffalse UnknownScript_0xbd68d checkflag ENGINE_ANTHONY iftrue UnknownScript_0xbd68d checkflag ENGINE_ANTHONY_FRIDAY_NIGHT iftrue UnknownScript_0xbd68d - farscall UnknownScript_0xbde3f + farscall PhoneScript_Random2 if_equal $0, UnknownScript_0xbd69c UnknownScript_0xbd68d: - farscall UnknownScript_0xbde48 + farscall PhoneScript_Random5 if_equal $0, UnknownScript_0xbd6a6 farjump UnknownScript_0xa0000 @@ -992,7 +992,7 @@ UnknownScript_0xbd699: setflag ENGINE_ANTHONY_FRIDAY_NIGHT UnknownScript_0xbd69c: - displaylocation ROUTE_33, $2 + landmarktotext ROUTE_33, $2 setflag ENGINE_ANTHONY farjump UnknownScript_0xa0376 @@ -1001,8 +1001,8 @@ UnknownScript_0xbd6a6: iftrue UnknownScript_0xbd6bd setflag ENGINE_DUNSPARCE_SWARM pokenamemem DUNSPARCE, $1 - loadwilddata $0, DARK_CAVE_VIOLET_ENTRANCE - displaylocation DARK_CAVE, $2 + swarm SWARM_DUNSPARCE, DARK_CAVE_VIOLET_ENTRANCE + landmarktotext DARK_CAVE, $2 farjump UnknownScript_0xa05de UnknownScript_0xbd6bd: @@ -1014,7 +1014,7 @@ ToddPhoneScript1: trainertotext CAMPER, TODD1, $0 checkflag ENGINE_TODD iftrue UnknownScript_0xbd6ea - farscall UnknownScript_0xbde4e + farscall PhoneScript_AnswerPhone_Male checkflag ENGINE_TODD_SATURDAY_MORNING iftrue UnknownScript_0xbd6e0 checkcode VAR_WEEKDAY @@ -1028,7 +1028,7 @@ UnknownScript_0xbd6e0: farjump UnknownScript_0xa0958 UnknownScript_0xbd6ea: - displaylocation ROUTE_34, $2 + landmarktotext ROUTE_34, $2 farjump UnknownScript_0xa0a64 UnknownScript_0xbd6f1: @@ -1036,22 +1036,22 @@ UnknownScript_0xbd6f1: ToddPhoneScript2: trainertotext CAMPER, TODD1, $0 - farscall UnknownScript_0xbe1b6 + farscall PhoneScript_GreetPhone_Male checkflag ENGINE_TODD iftrue UnknownScript_0xbd717 checkflag ENGINE_TODD_SATURDAY_MORNING iftrue UnknownScript_0xbd717 checkflag ENGINE_FLYPOINT_GOLDENROD iffalse UnknownScript_0xbd71f - farscall UnknownScript_0xbde3f + farscall PhoneScript_Random2 if_equal $0, UnknownScript_0xbd72e UnknownScript_0xbd717: - farscall UnknownScript_0xbde3f + farscall PhoneScript_Random2 if_equal $0, UnknownScript_0xbd73c UnknownScript_0xbd71f: - farscall UnknownScript_0xbde42 + farscall PhoneScript_Random3 if_equal $0, UnknownScript_0xbd738 farjump UnknownScript_0xa0000 @@ -1059,7 +1059,7 @@ UnknownScript_0xbd72b: setflag ENGINE_TODD_SATURDAY_MORNING UnknownScript_0xbd72e: - displaylocation ROUTE_34, $2 + landmarktotext ROUTE_34, $2 setflag ENGINE_TODD farjump UnknownScript_0xa0376 @@ -1076,7 +1076,7 @@ GinaPhoneScript1: trainertotext PICNICKER, GINA1, $0 checkflag ENGINE_GINA iftrue UnknownScript_0xbd776 - farscall UnknownScript_0xbe0b6 + farscall PhoneScript_AnswerPhone_Female checkflag ENGINE_GINA_SUNDAY_AFTERNOON iftrue UnknownScript_0xbd768 checkflag ENGINE_GINA_HAS_LEAF_STONE @@ -1095,16 +1095,16 @@ UnknownScript_0xbd772: farjump UnknownScript_0xa05c6 UnknownScript_0xbd776: - displaylocation ROUTE_34, $2 + landmarktotext ROUTE_34, $2 farjump UnknownScript_0xa0a69 UnknownScript_0xbd77d: - displaylocation ROUTE_34, $2 + landmarktotext ROUTE_34, $2 farjump UnknownScript_0xa0abd GinaPhoneScript2: trainertotext PICNICKER, GINA1, $0 - farscall UnknownScript_0xbe41e + farscall PhoneScript_GreetPhone_Female checkflag ENGINE_ROCKETS_IN_RADIO_TOWER iftrue UnknownScript_0xbd7d9 checkflag ENGINE_GINA @@ -1115,15 +1115,15 @@ GinaPhoneScript2: iftrue UnknownScript_0xbd7c8 checkevent EVENT_GINA_GAVE_LEAF_STONE iftrue UnknownScript_0xbd7b2 - farscall UnknownScript_0xbde3f + farscall PhoneScript_Random2 if_equal $0, UnknownScript_0xbd7dd UnknownScript_0xbd7b2: - farscall UnknownScript_0xbde4b + farscall PhoneScript_Random11 if_equal $0, UnknownScript_0xbd7dd checkflag ENGINE_FLYPOINT_GOLDENROD iffalse UnknownScript_0xbd7c8 - farscall UnknownScript_0xbde42 + farscall PhoneScript_Random3 if_equal $0, UnknownScript_0xbd7cf UnknownScript_0xbd7c8: @@ -1133,7 +1133,7 @@ UnknownScript_0xbd7cc: setflag ENGINE_GINA_SUNDAY_AFTERNOON UnknownScript_0xbd7cf: - displaylocation ROUTE_34, $2 + landmarktotext ROUTE_34, $2 setflag ENGINE_GINA farjump UnknownScript_0xa037e @@ -1142,14 +1142,14 @@ UnknownScript_0xbd7d9: UnknownScript_0xbd7dd: setflag ENGINE_GINA_HAS_LEAF_STONE - displaylocation ROUTE_34, $2 + landmarktotext ROUTE_34, $2 farjump UnknownScript_0xa061e ; Irwin IrwinPhoneScript1: trainertotext JUGGLER, IRWIN1, $0 - farscall UnknownScript_0xbde4e + farscall PhoneScript_AnswerPhone_Male checkflag ENGINE_ROCKETS_IN_RADIO_TOWER iftrue UnknownScript_0xbd7f9 farjump UnknownScript_0xa09c8 @@ -1159,7 +1159,7 @@ UnknownScript_0xbd7f9: IrwinPhoneScript2: trainertotext JUGGLER, IRWIN1, $0 - farscall UnknownScript_0xbe1b6 + farscall PhoneScript_GreetPhone_Male checkflag ENGINE_ROCKETS_IN_RADIO_TOWER iftrue UnknownScript_0xbd80f farjump UnknownScript_0xa0848 @@ -1173,7 +1173,7 @@ ArniePhoneScript1: trainertotext BUG_CATCHER, ARNIE1, $0 checkflag ENGINE_ARNIE iftrue UnknownScript_0xbd83c - farscall UnknownScript_0xbde4e + farscall PhoneScript_AnswerPhone_Male checkflag ENGINE_ARNIE_TUESDAY_MORNING iftrue UnknownScript_0xbd832 checkcode VAR_WEEKDAY @@ -1187,27 +1187,27 @@ UnknownScript_0xbd832: farjump UnknownScript_0xa0968 UnknownScript_0xbd83c: - displaylocation ROUTE_35, $2 + landmarktotext ROUTE_35, $2 farjump UnknownScript_0xa0a6e UnknownScript_0xbd843: - displaylocation ROUTE_35, $2 + landmarktotext ROUTE_35, $2 farjump UnknownScript_0xa0aff ArniePhoneScript2: trainertotext BUG_CATCHER, ARNIE1, $0 - farscall UnknownScript_0xbe1b6 + farscall PhoneScript_GreetPhone_Male checkflag ENGINE_ARNIE iftrue UnknownScript_0xbd866 checkflag ENGINE_ARNIE_TUESDAY_MORNING iftrue UnknownScript_0xbd866 - farscall UnknownScript_0xbde3f + farscall PhoneScript_Random2 if_equal $0, UnknownScript_0xbd87d UnknownScript_0xbd866: - farscall UnknownScript_0xbde48 + farscall PhoneScript_Random5 if_equal $0, UnknownScript_0xbd887 - farscall UnknownScript_0xbde42 + farscall PhoneScript_Random3 if_equal $0, UnknownScript_0xbd89e farjump UnknownScript_0xa0000 @@ -1215,17 +1215,17 @@ UnknownScript_0xbd87a: setflag ENGINE_ARNIE_TUESDAY_MORNING UnknownScript_0xbd87d: - displaylocation ROUTE_35, $2 + landmarktotext ROUTE_35, $2 setflag ENGINE_ARNIE farjump UnknownScript_0xa0376 -UnknownScript_0xbd887: +UnknownScript_0xbd887: ; start swarm checkflag ENGINE_YANMA_SWARM iftrue UnknownScript_0xbd8a2 setflag ENGINE_YANMA_SWARM pokenamemem YANMA, $1 - loadwilddata $1, ROUTE_35 - displaylocation ROUTE_35, $2 + swarm SWARM_YANMA, ROUTE_35 + landmarktotext ROUTE_35, $2 farjump UnknownScript_0xa05ce UnknownScript_0xbd89e: @@ -1240,7 +1240,7 @@ AlanPhoneScript1: trainertotext SCHOOLBOY, ALAN1, $0 checkflag ENGINE_ALAN iftrue UnknownScript_0xbd8cf - farscall UnknownScript_0xbde4e + farscall PhoneScript_AnswerPhone_Male checkflag ENGINE_ALAN_WEDNESDAY_AFTERNOON iftrue UnknownScript_0xbd8cb checkflag ENGINE_ALAN_HAS_FIRE_STONE @@ -1254,31 +1254,31 @@ UnknownScript_0xbd8cb: farjump UnknownScript_0xa0970 UnknownScript_0xbd8cf: - displaylocation ROUTE_36, $2 + landmarktotext ROUTE_36, $2 farjump UnknownScript_0xa0a73 UnknownScript_0xbd8d6: - displaylocation ROUTE_36, $2 + landmarktotext ROUTE_36, $2 farjump UnknownScript_0xa0ac5 AlanPhoneScript2: trainertotext SCHOOLBOY, ALAN1, $0 - farscall UnknownScript_0xbe1b6 + farscall PhoneScript_GreetPhone_Male checkflag ENGINE_ALAN iftrue UnknownScript_0xbd915 checkflag ENGINE_ALAN_WEDNESDAY_AFTERNOON iftrue UnknownScript_0xbd915 checkflag ENGINE_ALAN_HAS_FIRE_STONE iftrue UnknownScript_0xbd915 - farscall UnknownScript_0xbde42 + farscall PhoneScript_Random3 if_equal $0, UnknownScript_0xbd91c checkevent EVENT_ALAN_GAVE_FIRE_STONE iftrue UnknownScript_0xbd90d - farscall UnknownScript_0xbde3f + farscall PhoneScript_Random2 if_equal $0, UnknownScript_0xbd926 UnknownScript_0xbd90d: - farscall UnknownScript_0xbde4b + farscall PhoneScript_Random11 if_equal $0, UnknownScript_0xbd926 UnknownScript_0xbd915: @@ -1288,13 +1288,13 @@ UnknownScript_0xbd919: setflag ENGINE_ALAN_WEDNESDAY_AFTERNOON UnknownScript_0xbd91c: - displaylocation ROUTE_36, $2 + landmarktotext ROUTE_36, $2 setflag ENGINE_ALAN farjump UnknownScript_0xa0376 UnknownScript_0xbd926: setflag ENGINE_ALAN_HAS_FIRE_STONE - displaylocation ROUTE_36, $2 + landmarktotext ROUTE_36, $2 farjump UnknownScript_0xa05e6 ; Dana @@ -1303,7 +1303,7 @@ DanaPhoneScript1: trainertotext LASS, DANA1, $0 checkflag ENGINE_DANA iftrue UnknownScript_0xbd959 - farscall UnknownScript_0xbe0b6 + farscall PhoneScript_AnswerPhone_Female checkflag ENGINE_DANA_THURSDAY_NIGHT iftrue UnknownScript_0xbd955 checkflag ENGINE_DANA_HAS_THUNDERSTONE @@ -1317,35 +1317,35 @@ UnknownScript_0xbd955: farjump UnknownScript_0xa0978 UnknownScript_0xbd959: - displaylocation ROUTE_38, $2 + landmarktotext ROUTE_38, $2 farjump UnknownScript_0xa0a78 UnknownScript_0xbd960: - displaylocation ROUTE_38, $2 + landmarktotext ROUTE_38, $2 farjump UnknownScript_0xa0acd DanaPhoneScript2: trainertotext LASS, DANA1, $0 - farscall UnknownScript_0xbe41e + farscall PhoneScript_GreetPhone_Female checkflag ENGINE_DANA iftrue UnknownScript_0xbd99f checkflag ENGINE_DANA_THURSDAY_NIGHT iftrue UnknownScript_0xbd99f checkflag ENGINE_DANA_HAS_THUNDERSTONE iftrue UnknownScript_0xbd99f - farscall UnknownScript_0xbde42 + farscall PhoneScript_Random3 if_equal $0, UnknownScript_0xbd9ae checkevent EVENT_DANA_GAVE_THUNDERSTONE iftrue UnknownScript_0xbd997 - farscall UnknownScript_0xbde3f + farscall PhoneScript_Random2 if_equal $0, UnknownScript_0xbd9bc UnknownScript_0xbd997: - farscall UnknownScript_0xbde4b + farscall PhoneScript_Random11 if_equal $0, UnknownScript_0xbd9bc UnknownScript_0xbd99f: - farscall UnknownScript_0xbde42 + farscall PhoneScript_Random3 if_equal $0, UnknownScript_0xbd9b8 farjump UnknownScript_0xa0017 @@ -1353,7 +1353,7 @@ UnknownScript_0xbd9ab: setflag ENGINE_DANA_THURSDAY_NIGHT UnknownScript_0xbd9ae: - displaylocation ROUTE_38, $2 + landmarktotext ROUTE_38, $2 setflag ENGINE_DANA farjump UnknownScript_0xa037e @@ -1362,7 +1362,7 @@ UnknownScript_0xbd9b8: UnknownScript_0xbd9bc: setflag ENGINE_DANA_HAS_THUNDERSTONE - displaylocation ROUTE_38, $2 + landmarktotext ROUTE_38, $2 farjump UnknownScript_0xa061e ; Chad @@ -1371,7 +1371,7 @@ ChadPhoneScript1: trainertotext SCHOOLBOY, CHAD1, $0 checkflag ENGINE_CHAD iftrue UnknownScript_0xbd9e9 - farscall UnknownScript_0xbde4e + farscall PhoneScript_AnswerPhone_Male checkflag ENGINE_CHAD_FRIDAY_MORNING iftrue UnknownScript_0xbd9e5 checkcode VAR_WEEKDAY @@ -1383,23 +1383,23 @@ UnknownScript_0xbd9e5: farjump UnknownScript_0xa0980 UnknownScript_0xbd9e9: - displaylocation ROUTE_38, $2 + landmarktotext ROUTE_38, $2 farjump UnknownScript_0xa0a7d ChadPhoneScript2: trainertotext SCHOOLBOY, CHAD1, $0 - farscall UnknownScript_0xbe1b6 - farscall UnknownScript_0xbde3f + farscall PhoneScript_GreetPhone_Male + farscall PhoneScript_Random2 if_equal $0, UnknownScript_0xbda31 checkflag ENGINE_CHAD iftrue UnknownScript_0xbda14 checkflag ENGINE_CHAD_FRIDAY_MORNING iftrue UnknownScript_0xbda14 - farscall UnknownScript_0xbde3f + farscall PhoneScript_Random2 if_equal $0, UnknownScript_0xbda23 UnknownScript_0xbda14: - farscall UnknownScript_0xbde42 + farscall PhoneScript_Random3 if_equal $0, UnknownScript_0xbda2d farjump UnknownScript_0xa0000 @@ -1407,7 +1407,7 @@ UnknownScript_0xbda20: setflag ENGINE_CHAD_FRIDAY_MORNING UnknownScript_0xbda23: - displaylocation ROUTE_38, $2 + landmarktotext ROUTE_38, $2 setflag ENGINE_CHAD farjump UnknownScript_0xa0376 @@ -1419,10 +1419,10 @@ UnknownScript_0xbda31: DerekPhoneScript1: trainertotext POKEFANM, DEREK1, $0 - farscall UnknownScript_0xbde4e + farscall PhoneScript_AnswerPhone_Male checkflag ENGINE_DEREK_HAS_NUGGET iftrue UnknownScript_0xbda67 - farscall UnknownScript_0xbde3f + farscall PhoneScript_Random2 if_equal $0, UnknownScript_0xbda5f checkflag ENGINE_DAILY_BUG_CONTEST iftrue UnknownScript_0xbda5f @@ -1438,13 +1438,13 @@ UnknownScript_0xbda63: farjump UnknownScript_0xa05a4 UnknownScript_0xbda67: - displaylocation ROUTE_39, $2 + landmarktotext ROUTE_39, $2 farjump UnknownScript_0xa0ad5 DerekPhoneScript2: trainertotext POKEFANM, DEREK1, $0 - farscall UnknownScript_0xbe1b6 - farscall UnknownScript_0xbde3f + farscall PhoneScript_GreetPhone_Male + farscall PhoneScript_Random2 if_equal $0, UnknownScript_0xbda92 checkflag ENGINE_DAILY_BUG_CONTEST iftrue UnknownScript_0xbda92 @@ -1454,7 +1454,7 @@ DerekPhoneScript2: if_equal SATURDAY, UnknownScript_0xbda9e UnknownScript_0xbda92: - farscall UnknownScript_0xbde45 + farscall PhoneScript_Random4 if_equal $0, UnknownScript_0xbdaa2 farjump UnknownScript_0xa0000 @@ -1463,14 +1463,14 @@ UnknownScript_0xbda9e: UnknownScript_0xbdaa2: setflag ENGINE_DEREK_HAS_NUGGET - displaylocation ROUTE_39, $2 + landmarktotext ROUTE_39, $2 farjump UnknownScript_0xa05e6 TullyPhoneScript1: trainertotext FISHER, TULLY1, $0 checkflag ENGINE_TULLY iftrue UnknownScript_0xbdad5 - farscall UnknownScript_0xbde4e + farscall PhoneScript_AnswerPhone_Male checkflag ENGINE_TULLY_SUNDAY_NIGHT iftrue UnknownScript_0xbdad1 checkflag ENGINE_TULLY_HAS_WATER_STONE @@ -1484,31 +1484,31 @@ UnknownScript_0xbdad1: farjump UnknownScript_0xa0990 UnknownScript_0xbdad5: - displaylocation ROUTE_42, $2 + landmarktotext ROUTE_42, $2 farjump UnknownScript_0xa0a82 UnknownScript_0xbdadc: - displaylocation ROUTE_42, $2 + landmarktotext ROUTE_42, $2 farjump UnknownScript_0xa0add TullyPhoneScript2: trainertotext FISHER, TULLY1, $0 - farscall UnknownScript_0xbe1b6 + farscall PhoneScript_GreetPhone_Male checkflag ENGINE_TULLY iftrue UnknownScript_0xbdb1b checkflag ENGINE_TULLY_SUNDAY_NIGHT iftrue UnknownScript_0xbdb1b checkflag ENGINE_TULLY_HAS_WATER_STONE iftrue UnknownScript_0xbdb1b - farscall UnknownScript_0xbde42 + farscall PhoneScript_Random3 if_equal $0, UnknownScript_0xbdb22 checkevent EVENT_TULLY_GAVE_WATER_STONE iftrue UnknownScript_0xbdb13 - farscall UnknownScript_0xbde3f + farscall PhoneScript_Random2 if_equal $0, UnknownScript_0xbdb2c UnknownScript_0xbdb13: - farscall UnknownScript_0xbde4b + farscall PhoneScript_Random11 if_equal $0, UnknownScript_0xbdb2c UnknownScript_0xbdb1b: @@ -1518,20 +1518,20 @@ UnknownScript_0xbdb1f: setflag ENGINE_TULLY_SUNDAY_NIGHT UnknownScript_0xbdb22: - displaylocation ROUTE_42, $2 + landmarktotext ROUTE_42, $2 setflag ENGINE_TULLY farjump UnknownScript_0xa0376 UnknownScript_0xbdb2c: setflag ENGINE_TULLY_HAS_WATER_STONE - displaylocation ROUTE_42, $2 + landmarktotext ROUTE_42, $2 farjump UnknownScript_0xa05e6 BrentPhoneScript1: trainertotext POKEMANIAC, BRENT1, $0 checkflag ENGINE_BRENT iftrue UnknownScript_0xbdb59 - farscall UnknownScript_0xbde4e + farscall PhoneScript_AnswerPhone_Male checkflag ENGINE_BRENT_MONDAY_MORNING iftrue UnknownScript_0xbdb55 checkcode VAR_WEEKDAY @@ -1543,19 +1543,19 @@ UnknownScript_0xbdb55: farjump UnknownScript_0xa0998 UnknownScript_0xbdb59: - displaylocation ROUTE_43, $2 + landmarktotext ROUTE_43, $2 farjump UnknownScript_0xa0a87 BrentPhoneScript2: trainertotext POKEMANIAC, BRENT1, $0 - farscall UnknownScript_0xbe1b6 - farscall UnknownScript_0xbde3f + farscall PhoneScript_GreetPhone_Male + farscall PhoneScript_Random2 if_equal $0, UnknownScript_0xbdb95 checkflag ENGINE_BRENT iftrue UnknownScript_0xbdb84 checkflag ENGINE_BRENT_MONDAY_MORNING iftrue UnknownScript_0xbdb84 - farscall UnknownScript_0xbde3f + farscall PhoneScript_Random2 if_equal $0, UnknownScript_0xbdb8b UnknownScript_0xbdb84: @@ -1565,7 +1565,7 @@ UnknownScript_0xbdb88: setflag ENGINE_BRENT_MONDAY_MORNING UnknownScript_0xbdb8b: - displaylocation ROUTE_43, $2 + landmarktotext ROUTE_43, $2 setflag ENGINE_BRENT farjump UnknownScript_0xa0376 @@ -1576,7 +1576,7 @@ TiffanyPhoneScript1: trainertotext PICNICKER, TIFFANY3, $0 checkflag ENGINE_TIFFANY iftrue UnknownScript_0xbdbc2 - farscall UnknownScript_0xbe0b6 + farscall PhoneScript_AnswerPhone_Female checkflag ENGINE_TIFFANY_TUESDAY_AFTERNOON iftrue UnknownScript_0xbdbbe checkflag ENGINE_TIFFANY_HAS_PINK_BOW @@ -1590,33 +1590,33 @@ UnknownScript_0xbdbbe: farjump UnknownScript_0xa09a0 UnknownScript_0xbdbc2: - displaylocation ROUTE_43, $2 + landmarktotext ROUTE_43, $2 farjump UnknownScript_0xa0a8c UnknownScript_0xbdbc9: - displaylocation ROUTE_43, $2 + landmarktotext ROUTE_43, $2 farjump UnknownScript_0xa0ae5 TiffanyPhoneScript2: trainertotext PICNICKER, TIFFANY3, $0 - farscall UnknownScript_0xbde45 + farscall PhoneScript_Random4 if_equal $0, UnknownScript_0xbdc21 - farscall UnknownScript_0xbe41e + farscall PhoneScript_GreetPhone_Female checkflag ENGINE_TIFFANY iftrue UnknownScript_0xbdc10 checkflag ENGINE_TIFFANY_TUESDAY_AFTERNOON iftrue UnknownScript_0xbdc10 checkflag ENGINE_TIFFANY_HAS_PINK_BOW iftrue UnknownScript_0xbdc10 - farscall UnknownScript_0xbde42 + farscall PhoneScript_Random3 if_equal $0, UnknownScript_0xbdc17 checkevent EVENT_TIFFANY_GAVE_PINK_BOW iftrue UnknownScript_0xbdc08 - farscall UnknownScript_0xbde3f + farscall PhoneScript_Random2 if_equal $0, UnknownScript_0xbdc69 UnknownScript_0xbdc08: - farscall UnknownScript_0xbde4b + farscall PhoneScript_Random11 if_equal $0, UnknownScript_0xbdc69 UnknownScript_0xbdc10: @@ -1626,7 +1626,7 @@ UnknownScript_0xbdc14: setflag ENGINE_TIFFANY_TUESDAY_AFTERNOON UnknownScript_0xbdc17: - displaylocation ROUTE_43, $2 + landmarktotext ROUTE_43, $2 setflag ENGINE_TIFFANY farjump UnknownScript_0xa037e @@ -1668,7 +1668,7 @@ UnknownScript_0xbdc65: UnknownScript_0xbdc69: setflag ENGINE_TIFFANY_HAS_PINK_BOW - displaylocation ROUTE_43, $2 + landmarktotext ROUTE_43, $2 farjump UnknownScript_0xa061e ; Vance @@ -1677,7 +1677,7 @@ VancePhoneScript1: trainertotext BIRD_KEEPER, VANCE1, $0 checkflag ENGINE_VANCE iftrue UnknownScript_0xbdc96 - farscall UnknownScript_0xbde4e + farscall PhoneScript_AnswerPhone_Male checkflag ENGINE_VANCE_WEDNESDAY_NIGHT iftrue UnknownScript_0xbdc92 checkcode VAR_WEEKDAY @@ -1689,17 +1689,17 @@ UnknownScript_0xbdc92: farjump UnknownScript_0xa09a8 UnknownScript_0xbdc96: - displaylocation ROUTE_44, $2 + landmarktotext ROUTE_44, $2 farjump UnknownScript_0xa0a91 VancePhoneScript2: trainertotext BIRD_KEEPER, VANCE1, $0 - farscall UnknownScript_0xbe1b6 + farscall PhoneScript_GreetPhone_Male checkflag ENGINE_VANCE iftrue UnknownScript_0xbdcbd checkflag ENGINE_VANCE_WEDNESDAY_NIGHT iftrue UnknownScript_0xbdcbd - farscall UnknownScript_0xbde42 + farscall PhoneScript_Random3 if_equal $0, UnknownScript_0xbdcc4 if_equal $1, UnknownScript_0xbdcc4 @@ -1710,7 +1710,7 @@ UnknownScript_0xbdcc1: setflag ENGINE_VANCE_WEDNESDAY_NIGHT UnknownScript_0xbdcc4: - displaylocation ROUTE_44, $2 + landmarktotext ROUTE_44, $2 setflag ENGINE_VANCE farjump UnknownScript_0xa0376 @@ -1718,7 +1718,7 @@ WiltonPhoneScript1: trainertotext FISHER, WILTON1, $0 checkflag ENGINE_WILTON iftrue UnknownScript_0xbdcf7 - farscall UnknownScript_0xbde4e + farscall PhoneScript_AnswerPhone_Male checkflag ENGINE_WILTON_THRUSDAY_MORNING iftrue UnknownScript_0xbdcf3 checkflag ENGINE_WILTON_HAS_ITEM @@ -1732,25 +1732,25 @@ UnknownScript_0xbdcf3: farjump UnknownScript_0xa09b0 UnknownScript_0xbdcf7: - displaylocation ROUTE_44, $2 + landmarktotext ROUTE_44, $2 farjump UnknownScript_0xa0a96 UnknownScript_0xbdcfe: - displaylocation ROUTE_44, $2 + landmarktotext ROUTE_44, $2 farjump UnknownScript_0xa0aed WiltonPhoneScript2: trainertotext FISHER, WILTON1, $0 - farscall UnknownScript_0xbe1b6 + farscall PhoneScript_GreetPhone_Male checkflag ENGINE_WILTON iftrue UnknownScript_0xbdd2f checkflag ENGINE_WILTON_THRUSDAY_MORNING iftrue UnknownScript_0xbdd2f checkflag ENGINE_WILTON_HAS_ITEM iftrue UnknownScript_0xbdd2f - farscall UnknownScript_0xbde3f + farscall PhoneScript_Random2 if_equal $0, UnknownScript_0xbdd36 - farscall UnknownScript_0xbde3f + farscall PhoneScript_Random2 if_equal $0, UnknownScript_0xbdd40 UnknownScript_0xbdd2f: @@ -1760,13 +1760,13 @@ UnknownScript_0xbdd33: setflag ENGINE_WILTON_THRUSDAY_MORNING UnknownScript_0xbdd36: - displaylocation ROUTE_44, $2 + landmarktotext ROUTE_44, $2 setflag ENGINE_WILTON farjump UnknownScript_0xa0376 UnknownScript_0xbdd40: setflag ENGINE_WILTON_HAS_ITEM - displaylocation ROUTE_44, $2 + landmarktotext ROUTE_44, $2 clearevent EVENT_WILTON_HAS_ULTRA_BALL clearevent EVENT_WILTON_HAS_GREAT_BALL clearevent EVENT_WILTON_HAS_POKE_BALL @@ -1794,12 +1794,12 @@ UnknownScript_0xbdd6d: KenjiPhoneScript1: trainertotext BLACKBELT_T, KENJI3, $0 - farscall UnknownScript_0xbde4e + farscall PhoneScript_AnswerPhone_Male farjump UnknownScript_0xa09ee KenjiPhoneScript2: trainertotext BLACKBELT_T, KENJI3, $0 - farscall UnknownScript_0xbe1b6 + farscall PhoneScript_GreetPhone_Male farjump UnknownScript_0xa064c ; Parry @@ -1808,7 +1808,7 @@ ParryPhoneScript1: trainertotext HIKER, PARRY1, $0 checkflag ENGINE_PARRY iftrue UnknownScript_0xbddac - farscall UnknownScript_0xbde4e + farscall PhoneScript_AnswerPhone_Male checkflag ENGINE_PARRY_FRIDAY_AFTERNOON iftrue UnknownScript_0xbdda8 checkcode VAR_WEEKDAY @@ -1820,17 +1820,17 @@ UnknownScript_0xbdda8: farjump UnknownScript_0xa09b8 UnknownScript_0xbddac: - displaylocation ROUTE_45, $2 + landmarktotext ROUTE_45, $2 farjump UnknownScript_0xa0a9b ParryPhoneScript2: trainertotext HIKER, PARRY1, $0 - farscall UnknownScript_0xbe1b6 + farscall PhoneScript_GreetPhone_Male checkflag ENGINE_PARRY iftrue UnknownScript_0xbddd3 checkflag ENGINE_PARRY_FRIDAY_AFTERNOON iftrue UnknownScript_0xbddd3 - farscall UnknownScript_0xbde3f + farscall PhoneScript_Random2 if_equal $0, UnknownScript_0xbddda if_equal $1, UnknownScript_0xbddda @@ -1841,7 +1841,7 @@ UnknownScript_0xbddd7: setflag ENGINE_PARRY_FRIDAY_AFTERNOON UnknownScript_0xbddda: - displaylocation ROUTE_45, $2 + landmarktotext ROUTE_45, $2 setflag ENGINE_PARRY farjump UnknownScript_0xa0376 @@ -1851,7 +1851,7 @@ ErinPhoneScript1: trainertotext PICNICKER, ERIN1, $0 checkflag ENGINE_ERIN iftrue UnknownScript_0xbde07 - farscall UnknownScript_0xbe0b6 + farscall PhoneScript_AnswerPhone_Female checkflag ENGINE_ERIN_SATURDAY_NIGHT iftrue UnknownScript_0xbde03 checkcode VAR_WEEKDAY @@ -1863,17 +1863,17 @@ UnknownScript_0xbde03: farjump UnknownScript_0xa09c0 UnknownScript_0xbde07: - displaylocation ROUTE_46, $2 + landmarktotext ROUTE_46, $2 farjump UnknownScript_0xa0aa0 ErinPhoneScript2: trainertotext PICNICKER, ERIN1, $0 - farscall UnknownScript_0xbe41e + farscall PhoneScript_GreetPhone_Female checkflag ENGINE_ERIN iftrue UnknownScript_0xbde2e checkflag ENGINE_ERIN_SATURDAY_NIGHT iftrue UnknownScript_0xbde2e - farscall UnknownScript_0xbde42 + farscall PhoneScript_Random3 if_equal $0, UnknownScript_0xbde35 if_equal $1, UnknownScript_0xbde35 @@ -1884,35 +1884,35 @@ UnknownScript_0xbde32: setflag ENGINE_ERIN_SATURDAY_NIGHT UnknownScript_0xbde35: - displaylocation ROUTE_46, $2 + landmarktotext ROUTE_46, $2 setflag ENGINE_ERIN farjump UnknownScript_0xa037e -UnknownScript_0xbde3f: - random $2 +PhoneScript_Random2: + random 2 end -UnknownScript_0xbde42: - random $3 +PhoneScript_Random3: + random 3 end -UnknownScript_0xbde45: - random $4 +PhoneScript_Random4: + random 4 end -UnknownScript_0xbde48: - random $5 +PhoneScript_Random5: + random 5 end -UnknownScript_0xbde4b: - random $b +PhoneScript_Random11: + random 11 end -UnknownScript_0xbde4e: +PhoneScript_AnswerPhone_Male: checkday - iftrue UnknownScript_0xbdf22 + iftrue PhoneScript_AnswerPhone_Male_Day checknite - iftrue UnknownScript_0xbdfec + iftrue PhoneScript_AnswerPhone_Male_Nite checkcode VAR_CALLERID if_equal PHONE_SCHOOLBOY_JACK, .Jack if_equal PHONE_SAILOR_HUEY, .Huey @@ -1937,105 +1937,105 @@ UnknownScript_0xbde4e: .Jack: farwritetext UnknownText_0x1b4dc5 - keeptextopen + buttonsound end .Huey: farwritetext UnknownText_0x1b5073 - keeptextopen + buttonsound end .Gaven: farwritetext UnknownText_0x1b5270 - keeptextopen + buttonsound end .Jose: farwritetext UnknownText_0x1b55ae - keeptextopen + buttonsound end .Joey: farwritetext UnknownText_0x1b589a - keeptextopen + buttonsound end .Wade: farwritetext UnknownText_0x1b5a3b - keeptextopen + buttonsound end .Ralph: farwritetext UnknownText_0x1b5c10 - keeptextopen + buttonsound end .Anthony: farwritetext UnknownText_0x1b5f7a - keeptextopen + buttonsound end .Todd: farwritetext UnknownText_0x1b60f5 - keeptextopen + buttonsound end .Irwin: farwritetext UnknownText_0x1b638c - keeptextopen + buttonsound end .Arnie: farwritetext UnknownText_0x1b6454 - keeptextopen + buttonsound end .Alan: farwritetext UnknownText_0x1b659d - keeptextopen + buttonsound end .Chad: farwritetext UnknownText_0x1b67e2 - keeptextopen + buttonsound end .Derek: farwritetext UnknownText_0x1b69a8 - keeptextopen + buttonsound end .Tully: farwritetext UnknownText_0x1b6b39 - keeptextopen + buttonsound end .Brent: farwritetext UnknownText_0x1b6c96 - keeptextopen + buttonsound end .Vance: farwritetext UnknownText_0x1b7019 - keeptextopen + buttonsound end .Wilton: farwritetext UnknownText_0x1b71d5 - keeptextopen + buttonsound end .Kenji: farwritetext UnknownText_0x1b730b - keeptextopen + buttonsound end .Parry: farwritetext UnknownText_0x1b73c7 - keeptextopen + buttonsound end -UnknownScript_0xbdf22: +PhoneScript_AnswerPhone_Male_Day: checkcode VAR_CALLERID if_equal PHONE_SCHOOLBOY_JACK, .Jack if_equal PHONE_SAILOR_HUEY, .Huey @@ -2060,105 +2060,105 @@ UnknownScript_0xbdf22: .Jack: farwritetext UnknownText_0x1b4ded - keeptextopen + buttonsound end .Huey: farwritetext UnknownText_0x1b509b - keeptextopen + buttonsound end .Gaven: farwritetext UnknownText_0x1b52a5 - keeptextopen + buttonsound end .Jose: farwritetext UnknownText_0x1b55da - keeptextopen + buttonsound end .Joey: farwritetext UnknownText_0x1b58c2 - keeptextopen + buttonsound end .Wade: farwritetext UnknownText_0x1b5a74 - keeptextopen + buttonsound end .Ralph: farwritetext UnknownText_0x1b5c63 - keeptextopen + buttonsound end .Anthony: farwritetext UnknownText_0x1b5f9e - keeptextopen + buttonsound end .Todd: farwritetext UnknownText_0x1b611b - keeptextopen + buttonsound end .Irwin: farwritetext UnknownText_0x1b63a8 - keeptextopen + buttonsound end .Arnie: farwritetext UnknownText_0x1b647e - keeptextopen + buttonsound end .Alan: farwritetext UnknownText_0x1b65c7 - keeptextopen + buttonsound end .Chad: farwritetext UnknownText_0x1b680e - keeptextopen + buttonsound end .Derek: farwritetext UnknownText_0x1b69d2 - keeptextopen + buttonsound end .Tully: farwritetext UnknownText_0x1b6b65 - keeptextopen + buttonsound end .Brent: farwritetext UnknownText_0x1b6cc6 - keeptextopen + buttonsound end .Vance: farwritetext UnknownText_0x1b7057 - keeptextopen + buttonsound end .Wilton: farwritetext UnknownText_0x1b71fc - keeptextopen + buttonsound end .Kenji: farwritetext UnknownText_0x1b7331 - keeptextopen + buttonsound end .Parry: farwritetext UnknownText_0x1b73ef - keeptextopen + buttonsound end -UnknownScript_0xbdfec: +PhoneScript_AnswerPhone_Male_Nite: checkcode VAR_CALLERID if_equal PHONE_SCHOOLBOY_JACK, .Jack if_equal PHONE_SAILOR_HUEY, .Huey @@ -2183,109 +2183,109 @@ UnknownScript_0xbdfec: .Jack: farwritetext UnknownText_0x1b4e16 - keeptextopen + buttonsound end .Huey: farwritetext UnknownText_0x1b50c2 - keeptextopen + buttonsound end .Gaven: farwritetext UnknownText_0x1b52cc - keeptextopen + buttonsound end .Jose: farwritetext UnknownText_0x1b55fc - keeptextopen + buttonsound end .Joey: farwritetext UnknownText_0x1b58ea - keeptextopen + buttonsound end .Wade: farwritetext UnknownText_0x1b5a9f - keeptextopen + buttonsound end .Ralph: farwritetext UnknownText_0x1b5cb6 - keeptextopen + buttonsound end .Anthony: farwritetext UnknownText_0x1b5fc9 - keeptextopen + buttonsound end .Todd: farwritetext UnknownText_0x1b6149 - keeptextopen + buttonsound end .Irwin: farwritetext UnknownText_0x1b63c4 - keeptextopen + buttonsound end .Arnie: farwritetext UnknownText_0x1b64a8 - keeptextopen + buttonsound end .Alan: farwritetext UnknownText_0x1b65e3 - keeptextopen + buttonsound end .Chad: farwritetext UnknownText_0x1b6836 - keeptextopen + buttonsound end .Derek: farwritetext UnknownText_0x1b69f8 - keeptextopen + buttonsound end .Tully: farwritetext UnknownText_0x1b6b92 - keeptextopen + buttonsound end .Brent: farwritetext UnknownText_0x1b6cf6 - keeptextopen + buttonsound end .Vance: farwritetext UnknownText_0x1b7092 - keeptextopen + buttonsound end .Wilton: farwritetext UnknownText_0x1b722a - keeptextopen + buttonsound end .Kenji: farwritetext UnknownText_0x1b7357 - keeptextopen + buttonsound end .Parry: farwritetext UnknownText_0x1b7417 - keeptextopen + buttonsound end -UnknownScript_0xbe0b6: +PhoneScript_AnswerPhone_Female: checkday - iftrue UnknownScript_0xbe112 + iftrue PhoneScript_AnswerPhone_Female_Day checknite - iftrue UnknownScript_0xbe164 + iftrue PhoneScript_AnswerPhone_Female_Nite checkcode VAR_CALLERID if_equal PHONE_POKEFAN_BEVERLY, .Beverly if_equal PHONE_COOLTRAINERF_BETH, .Beth @@ -2298,45 +2298,45 @@ UnknownScript_0xbe0b6: .Beverly: farwritetext UnknownText_0x1b4f21 - keeptextopen + buttonsound end .Beth: farwritetext UnknownText_0x1b53f7 - keeptextopen + buttonsound end .Reena: farwritetext UnknownText_0x1b5702 - keeptextopen + buttonsound end .Liz: farwritetext UnknownText_0x1b5d9f - keeptextopen + buttonsound end .Gina: farwritetext UnknownText_0x1b626a - keeptextopen + buttonsound end .Dana: farwritetext UnknownText_0x1b66c8 - keeptextopen + buttonsound end .Tiffany: farwritetext UnknownText_0x1b6e7c - keeptextopen + buttonsound end .Erin: farwritetext UnknownText_0x1b751a - keeptextopen + buttonsound end -UnknownScript_0xbe112: +PhoneScript_AnswerPhone_Female_Day: checkcode VAR_CALLERID if_equal PHONE_POKEFAN_BEVERLY, .Beverly if_equal PHONE_COOLTRAINERF_BETH, .Beth @@ -2349,45 +2349,45 @@ UnknownScript_0xbe112: .Beverly: farwritetext UnknownText_0x1b4f4d - keeptextopen + buttonsound end .Beth: farwritetext UnknownText_0x1b5424 - keeptextopen + buttonsound end .Reena: farwritetext UnknownText_0x1b572e - keeptextopen + buttonsound end .Liz: farwritetext UnknownText_0x1b5dcc - keeptextopen + buttonsound end .Gina: farwritetext UnknownText_0x1b6296 - keeptextopen + buttonsound end .Dana: farwritetext UnknownText_0x1b66ec - keeptextopen + buttonsound end .Tiffany: farwritetext UnknownText_0x1b6ea6 - keeptextopen + buttonsound end .Erin: farwritetext UnknownText_0x1b7548 - keeptextopen + buttonsound end -UnknownScript_0xbe164: +PhoneScript_AnswerPhone_Female_Nite: checkcode VAR_CALLERID if_equal PHONE_POKEFAN_BEVERLY, .Beverly if_equal PHONE_COOLTRAINERF_BETH, .Beth @@ -2400,49 +2400,49 @@ UnknownScript_0xbe164: .Beverly: farwritetext UnknownText_0x1b4f75 - keeptextopen + buttonsound end .Beth: farwritetext UnknownText_0x1b5446 - keeptextopen + buttonsound end .Reena: farwritetext UnknownText_0x1b575a - keeptextopen + buttonsound end .Liz: farwritetext UnknownText_0x1b5df8 - keeptextopen + buttonsound end .Gina: farwritetext UnknownText_0x1b62c5 - keeptextopen + buttonsound end .Dana: farwritetext UnknownText_0x1b6713 - keeptextopen + buttonsound end .Tiffany: farwritetext UnknownText_0x1b6ec9 - keeptextopen + buttonsound end .Erin: farwritetext UnknownText_0x1b756f - keeptextopen + buttonsound end -UnknownScript_0xbe1b6: +PhoneScript_GreetPhone_Male: checkday - iftrue UnknownScript_0xbe28a + iftrue PhoneScript_GreetPhone_Male_Day checknite - iftrue UnknownScript_0xbe354 + iftrue PhoneScript_GreetPhone_Male_Nite checkcode VAR_CALLERID if_equal PHONE_SCHOOLBOY_JACK, .Jack if_equal PHONE_SAILOR_HUEY, .Huey @@ -2467,105 +2467,105 @@ UnknownScript_0xbe1b6: .Jack: farwritetext UnknownText_0x1b4e3e - keeptextopen + buttonsound end .Huey: farwritetext UnknownText_0x1b50e9 - keeptextopen + buttonsound end .Gaven: farwritetext UnknownText_0x1b5301 - keeptextopen + buttonsound end .Jose: farwritetext UnknownText_0x1b5628 - keeptextopen + buttonsound end .Joey: farwritetext UnknownText_0x1b5912 - keeptextopen + buttonsound end .Wade: farwritetext UnknownText_0x1b5ad8 - keeptextopen + buttonsound end .Ralph: farwritetext UnknownText_0x1b5d09 - keeptextopen + buttonsound end .Anthony: farwritetext UnknownText_0x1b5ff6 - keeptextopen + buttonsound end .Todd: farwritetext UnknownText_0x1b616e - keeptextopen + buttonsound end .Irwin: farwritetext UnknownText_0x1b63e3 - keeptextopen + buttonsound end .Arnie: farwritetext UnknownText_0x1b64d2 - keeptextopen + buttonsound end .Alan: farwritetext UnknownText_0x1b660d - keeptextopen + buttonsound end .Chad: farwritetext UnknownText_0x1b6862 - keeptextopen + buttonsound end .Derek: farwritetext UnknownText_0x1b6a22 - keeptextopen + buttonsound end .Tully: farwritetext UnknownText_0x1b6bb9 - keeptextopen + buttonsound end .Brent: farwritetext UnknownText_0x1b6d26 - keeptextopen + buttonsound end .Vance: farwritetext UnknownText_0x1b70e7 - keeptextopen + buttonsound end .Wilton: farwritetext UnknownText_0x1b725c - keeptextopen + buttonsound end .Kenji: farwritetext UnknownText_0x1b737f - keeptextopen + buttonsound end .Parry: farwritetext UnknownText_0x1b743f - keeptextopen + buttonsound end -UnknownScript_0xbe28a: +PhoneScript_GreetPhone_Male_Day: checkcode VAR_CALLERID if_equal PHONE_SCHOOLBOY_JACK, .Jack if_equal PHONE_SAILOR_HUEY, .Huey @@ -2590,105 +2590,105 @@ UnknownScript_0xbe28a: .Jack: farwritetext UnknownText_0x1b4e72 - keeptextopen + buttonsound end .Huey: farwritetext UnknownText_0x1b511a - keeptextopen + buttonsound end .Gaven: farwritetext UnknownText_0x1b5335 - keeptextopen + buttonsound end .Jose: farwritetext UnknownText_0x1b564c - keeptextopen + buttonsound end .Joey: farwritetext UnknownText_0x1b5948 - keeptextopen + buttonsound end .Wade: farwritetext UnknownText_0x1b5b0b - keeptextopen + buttonsound end .Ralph: farwritetext UnknownText_0x1b5d21 - keeptextopen + buttonsound end .Anthony: farwritetext UnknownText_0x1b6017 - keeptextopen + buttonsound end .Todd: farwritetext UnknownText_0x1b618f - keeptextopen + buttonsound end .Irwin: farwritetext UnknownText_0x1b6407 - keeptextopen + buttonsound end .Arnie: farwritetext UnknownText_0x1b6506 - keeptextopen + buttonsound end .Alan: farwritetext UnknownText_0x1b6624 - keeptextopen + buttonsound end .Chad: farwritetext UnknownText_0x1b6890 - keeptextopen + buttonsound end .Derek: farwritetext UnknownText_0x1b6a56 - keeptextopen + buttonsound end .Tully: farwritetext UnknownText_0x1b6bef - keeptextopen + buttonsound end .Brent: farwritetext UnknownText_0x1b6d57 - keeptextopen + buttonsound end .Vance: farwritetext UnknownText_0x1b7112 - keeptextopen + buttonsound end .Wilton: farwritetext UnknownText_0x1b7283 - keeptextopen + buttonsound end .Kenji: farwritetext UnknownText_0x1b7397 - keeptextopen + buttonsound end .Parry: farwritetext UnknownText_0x1b746f - keeptextopen + buttonsound end -UnknownScript_0xbe354: +PhoneScript_GreetPhone_Male_Nite: checkcode VAR_CALLERID if_equal PHONE_SCHOOLBOY_JACK, .Jack if_equal PHONE_SAILOR_HUEY, .Huey @@ -2713,109 +2713,109 @@ UnknownScript_0xbe354: .Jack: farwritetext UnknownText_0x1b4e9e - keeptextopen + buttonsound end .Huey: farwritetext UnknownText_0x1b5154 - keeptextopen + buttonsound end .Gaven: farwritetext UnknownText_0x1b535f - keeptextopen + buttonsound end .Jose: farwritetext UnknownText_0x1b5670 - keeptextopen + buttonsound end .Joey: farwritetext UnknownText_0x1b597c - keeptextopen + buttonsound end .Wade: farwritetext UnknownText_0x1b5b37 - keeptextopen + buttonsound end .Ralph: farwritetext UnknownText_0x1b5d39 - keeptextopen + buttonsound end .Anthony: farwritetext UnknownText_0x1b6041 - keeptextopen + buttonsound end .Todd: farwritetext UnknownText_0x1b61bd - keeptextopen + buttonsound end .Irwin: farwritetext UnknownText_0x1b642c - keeptextopen + buttonsound end .Arnie: farwritetext UnknownText_0x1b6539 - keeptextopen + buttonsound end .Alan: farwritetext UnknownText_0x1b663b - keeptextopen + buttonsound end .Chad: farwritetext UnknownText_0x1b68ba - keeptextopen + buttonsound end .Derek: farwritetext UnknownText_0x1b6a8b - keeptextopen + buttonsound end .Tully: farwritetext UnknownText_0x1b6c23 - keeptextopen + buttonsound end .Brent: farwritetext UnknownText_0x1b6d88 - keeptextopen + buttonsound end .Vance: farwritetext UnknownText_0x1b7132 - keeptextopen + buttonsound end .Wilton: farwritetext UnknownText_0x1b72a5 - keeptextopen + buttonsound end .Kenji: farwritetext UnknownText_0x1b73af - keeptextopen + buttonsound end .Parry: farwritetext UnknownText_0x1b749b - keeptextopen + buttonsound end -UnknownScript_0xbe41e: +PhoneScript_GreetPhone_Female: checkday - iftrue UnknownScript_0xbe47a + iftrue PhoneScript_GreetPhone_Female_Day checknite - iftrue UnknownScript_0xbe4cc + iftrue PhoneScript_GreetPhone_Female_Nite checkcode VAR_CALLERID if_equal PHONE_POKEFAN_BEVERLY, .Beverly if_equal PHONE_COOLTRAINERF_BETH, .Beth @@ -2828,45 +2828,45 @@ UnknownScript_0xbe41e: .Beverly: farwritetext UnknownText_0x1b4fa1 - keeptextopen + buttonsound end .Beth: farwritetext UnknownText_0x1b5472 - keeptextopen + buttonsound end .Reena: farwritetext UnknownText_0x1b5786 - keeptextopen + buttonsound end .Liz: farwritetext UnknownText_0x1b5e25 - keeptextopen + buttonsound end .Gina: farwritetext UnknownText_0x1b62f1 - keeptextopen + buttonsound end .Dana: farwritetext UnknownText_0x1b6738 - keeptextopen + buttonsound end .Tiffany: farwritetext UnknownText_0x1b6ef3 - keeptextopen + buttonsound end .Erin: farwritetext UnknownText_0x1b758f - keeptextopen + buttonsound end -UnknownScript_0xbe47a: +PhoneScript_GreetPhone_Female_Day: checkcode VAR_CALLERID if_equal PHONE_POKEFAN_BEVERLY, .Beverly if_equal PHONE_COOLTRAINERF_BETH, .Beth @@ -2879,45 +2879,45 @@ UnknownScript_0xbe47a: .Beverly: farwritetext UnknownText_0x1b4fda - keeptextopen + buttonsound end .Beth: farwritetext UnknownText_0x1b54a6 - keeptextopen + buttonsound end .Reena: farwritetext UnknownText_0x1b57b7 - keeptextopen + buttonsound end .Liz: farwritetext UnknownText_0x1b5e59 - keeptextopen + buttonsound end .Gina: farwritetext UnknownText_0x1b630e - keeptextopen + buttonsound end .Dana: farwritetext UnknownText_0x1b6757 - keeptextopen + buttonsound end .Tiffany: farwritetext UnknownText_0x1b6f1c - keeptextopen + buttonsound end .Erin: farwritetext UnknownText_0x1b75ac - keeptextopen + buttonsound end -UnknownScript_0xbe4cc: +PhoneScript_GreetPhone_Female_Nite: checkcode VAR_CALLERID if_equal PHONE_POKEFAN_BEVERLY, .Beverly if_equal PHONE_COOLTRAINERF_BETH, .Beth @@ -2930,45 +2930,45 @@ UnknownScript_0xbe4cc: .Beverly: farwritetext UnknownText_0x1b5004 - keeptextopen + buttonsound end .Beth: farwritetext UnknownText_0x1b54d4 - keeptextopen + buttonsound end .Reena: farwritetext UnknownText_0x1b57e8 - keeptextopen + buttonsound end .Liz: farwritetext UnknownText_0x1b5e8e - keeptextopen + buttonsound end .Gina: farwritetext UnknownText_0x1b6331 - keeptextopen + buttonsound end .Dana: farwritetext UnknownText_0x1b6776 - keeptextopen + buttonsound end .Tiffany: farwritetext UnknownText_0x1b6f37 - keeptextopen + buttonsound end .Erin: farwritetext UnknownText_0x1b75c9 - keeptextopen + buttonsound end -UnknownScript_0xbe51e: +PhoneScript_Generic_Male: checkcode VAR_CALLERID if_equal PHONE_SCHOOLBOY_JACK, .Jack if_equal PHONE_COOLTRAINERM_GAVEN, .Gaven @@ -2990,95 +2990,95 @@ UnknownScript_0xbe51e: .Jack: farwritetext UnknownText_0x1b4ecd - keeptextopen + buttonsound end .Unknown: farwritetext UnknownText_0x1b518b - keeptextopen + buttonsound end .Gaven: farwritetext UnknownText_0x1b5393 - keeptextopen + buttonsound end .Jose: farwritetext UnknownText_0x1b5694 - keeptextopen + buttonsound end .Joey: farwritetext UnknownText_0x1b59b2 - keeptextopen + buttonsound end .Wade: farwritetext UnknownText_0x1b5b68 - keeptextopen + buttonsound end .Ralph: farwritetext UnknownText_0x1b5d51 - keeptextopen + buttonsound end .Anthony: farwritetext UnknownText_0x1b606f - keeptextopen + buttonsound end .Todd: farwritetext UnknownText_0x1b61f2 - keeptextopen + buttonsound end .Arnie: farwritetext UnknownText_0x1b656c - keeptextopen + buttonsound end .Alan: farwritetext UnknownText_0x1b6652 - keeptextopen + buttonsound end .Chad: farwritetext UnknownText_0x1b68e8 - keeptextopen + buttonsound end .Derek: farwritetext UnknownText_0x1b6ac2 - keeptextopen + buttonsound end .Tully: farwritetext UnknownText_0x1b6c56 - keeptextopen + buttonsound end .Brent: farwritetext UnknownText_0x1b6db9 - keeptextopen + buttonsound end .Vance: farwritetext UnknownText_0x1b7161 - keeptextopen + buttonsound end .Wilton: farwritetext UnknownText_0x1b72d0 - keeptextopen + buttonsound end .Parry: farwritetext UnknownText_0x1b74c8 - keeptextopen + buttonsound end -UnknownScript_0xbe5d0: +PhoneScript_Generic_Female: checkcode VAR_CALLERID if_equal PHONE_POKEFAN_BEVERLY, .Beverly if_equal PHONE_COOLTRAINERF_BETH, .Beth @@ -3091,59 +3091,59 @@ UnknownScript_0xbe5d0: .Beverly: farwritetext UnknownText_0x1b502b - keeptextopen + buttonsound end .Beth: farwritetext UnknownText_0x1b5510 - keeptextopen + buttonsound end .Reena: farwritetext UnknownText_0x1b5819 - keeptextopen + buttonsound end .Liz: farwritetext UnknownText_0x1b5ebe - keeptextopen + buttonsound end .Gina: farwritetext UnknownText_0x1b6352 - keeptextopen + buttonsound end .Dana: farwritetext UnknownText_0x1b6795 - keeptextopen + buttonsound end .Tiffany: farwritetext UnknownText_0x1b6f60 - keeptextopen + buttonsound end .Erin: farwritetext UnknownText_0x1b75e5 - keeptextopen + buttonsound end -UnknownScript_0xbe622: +PhoneScript_MonFlavorText: special RandomPhoneMon - farscall UnknownScript_0xbde3f - if_equal $0, UnknownScript_0xbe636 + farscall PhoneScript_Random2 + if_equal $0, .TooEnergetic farwritetext UnknownText_0x1b518b - keeptextopen - farjump UnknownScript_0xa0484 + buttonsound + farjump PhoneScript_HangupText_Male -UnknownScript_0xbe636: - farjump UnknownScript_0xbe63a +.TooEnergetic: + farjump .unnecessary -UnknownScript_0xbe63a: +.unnecessary: farwritetext UnknownText_0x1b522b - keeptextopen - farjump UnknownScript_0xa0484 + buttonsound + farjump PhoneScript_HangupText_Male ; be643 diff --git a/engine/pokecenter_pc.asm b/engine/pokecenter_pc.asm index 064b35a6c..1b6a1da2f 100755 --- a/engine/pokecenter_pc.asm +++ b/engine/pokecenter_pc.asm @@ -12,7 +12,7 @@ PokemonCenterPC: ; 1559a xor a ld [hBGMapMode], a call .ChooseWhichPCListToUse - ld [wcf76], a + ld [wWhichIndexSet], a call DoNthMenu jr c, .shutdown ld a, [MenuSelection] @@ -140,7 +140,7 @@ HallOfFamePC: ; 1569a call PC_PlayChoosePCSound call FadeToMenu callba _HallOfFamePC - call ReturnToCallingMenu + call CloseSubmenu and a ret ; 156ab @@ -208,7 +208,7 @@ UnknownText_0x156ff: ; 0x156ff _PlayersPC: ; 15704 ld a, b - ld [wcf76], a + ld [wWhichIndexSet], a ld hl, UnknownText_0x157cc call PC_DisplayTextWaitMenu call Function15715 @@ -323,7 +323,7 @@ KrisWithdrawItemMenu: ; 0x157d1 jr .asm_157da .asm_157e4 - call ReturnToCallingMenu + call CloseSubmenu xor a ret ; 0x157e9 @@ -343,7 +343,7 @@ Function157e9: ; 0x157e9 .askquantity ld hl, .HowManyText call MenuTextBox - callba Function24fbf + callba SelectQuantityToToss call ExitMenu call ExitMenu jr c, .done @@ -403,7 +403,7 @@ KrisTossItemMenu: ; 0x1585f jr .asm_15868 .asm_15878 - call ReturnToCallingMenu + call CloseSubmenu xor a ret ; 0x1587d @@ -431,9 +431,9 @@ KrisDepositItemMenu: ; 0x1588b jr c, .asm_158b6 call DisableSpriteUpdates call LoadStandardMenuDataHeader - callba Function106a5 + callba DepositSellInitPackBuffers .asm_1589c - callba Function106be + callba DepositSellPack ld a, [wcf66] and a jr z, .asm_158b3 @@ -442,7 +442,7 @@ KrisDepositItemMenu: ; 0x1588b jr .asm_1589c .asm_158b3 - call ReturnToCallingMenu + call CloseSubmenu .asm_158b6 xor a @@ -516,7 +516,7 @@ Function1590a: ; 0x1590a .asm_1591d ld hl, .HowManyText call MenuTextBox - callba Function24fbf + callba SelectQuantityToToss push af call ExitMenu call ExitMenu @@ -591,17 +591,17 @@ Function15985: ; 0x15985 ld [wMenuCursorBuffer], a ld a, [wd0dd] ld [wMenuScrollPosition], a - call HandleScrollingMenu + call ScrollingMenu ld a, [wMenuScrollPosition] ld [wd0dd], a - ld a, [MenuSelection2] + ld a, [wMenuCursorY] ld [wd0d7], a pop af ld [wSpriteUpdatesEnabled], a ld a, [wd0e3] and a jr nz, .asm_159d8 - ld a, [wcf73] + ld a, [wMenuJoypad] cp $2 jr z, .asm_15a06 cp $1 @@ -611,7 +611,7 @@ Function15985: ; 0x15985 jr .asm_159f8 .asm_159d8 - ld a, [wcf73] + ld a, [wMenuJoypad] cp $2 jr z, .asm_159e9 cp $1 @@ -629,14 +629,14 @@ Function15985: ; 0x15985 call Function156c7 .asm_159f2 - callba Function2490c + callba SwitchItemsInBag .asm_159f8 jp .asm_15989 .asm_159fb callba Function24706 - call Function1bee + call PlaceHollowCursor and a ret diff --git a/engine/pokedex.asm b/engine/pokedex.asm index d150ee471..14b1ebbce 100644 --- a/engine/pokedex.asm +++ b/engine/pokedex.asm @@ -31,7 +31,7 @@ Pokedex: ; 40000 ld a, [wJumptableIndex] bit 7, a jr nz, .exit - call Function4010b + call Pokedex_Main call DelayFrame jr .main @@ -40,8 +40,8 @@ Pokedex: ; 40000 call PlaySFX call WaitSFX call ClearSprites - ld a, [wc7d4] - ld [wd959], a + ld a, [wCurrentDexMode] + ld [wLastDexMode], a pop af ld [hInMenu], a @@ -63,7 +63,7 @@ InitPokedex: ; 40063 call ClearBGPalettes call ClearSprites call ClearTileMap - call Function414b7 + call Pokedex_LoadGFX ld hl, wPokedexDataStart ld bc, wPokedexDataEnd - wPokedexDataStart @@ -76,78 +76,78 @@ InitPokedex: ; 40063 ld [wcf65], a ld [wcf66], a - call Function400a2 + call Pokedex_CheckUnlockedUnownMode - ld a, [wd959] - ld [wc7d4], a + ld a, [wLastDexMode] + ld [wCurrentDexMode], a - call Function40bdc - call Function400b4 - call Function400ed + call Pokedex_ChangeMode + call Pokedex_InitCursorPosition + call Pokedex_GetLandmark callba Function1de247 - call Function41af7 + call Pokedex_ResetBGMapMode ret ; 400a2 -Function400a2: ; 400a2 +Pokedex_CheckUnlockedUnownMode: ; 400a2 ld a, [StatusFlags] bit 1, a - jr nz, .asm_400ae + jr nz, .unlocked xor a - ld [wc7dc], a + ld [wUnlockedUnownMode], a ret -.asm_400ae - ld a, 1 - ld [wc7dc], a +.unlocked + ld a, TRUE + ld [wUnlockedUnownMode], a ret ; 400b4 -Function400b4: ; 400b4 - ld hl, wc6d0 - ld a, [wc2d6] +Pokedex_InitCursorPosition: ; 400b4 + ld hl, wPokedexDataStart + ld a, [wLastDexEntry] and a - jr z, .asm_400ec - cp $fc - jr nc, .asm_400ec + jr z, .done + cp NUM_POKEMON + 1 + jr nc, .done ld b, a - ld a, [wc7d2] + ld a, [wDexListingEnd] cp $8 - jr c, .asm_400db + jr c, .only_one_page sub $7 ld c, a -.asm_400cc +.loop1 ld a, b cp [hl] - jr z, .asm_400ec + jr z, .done inc hl - ld a, [wc7d0] + ld a, [wDexListingPage] inc a - ld [wc7d0], a + ld [wDexListingPage], a dec c - jr nz, .asm_400cc + jr nz, .loop1 -.asm_400db +.only_one_page ld c, $7 -.asm_400dd +.loop2 ld a, b cp [hl] - jr z, .asm_400ec + jr z, .done inc hl - ld a, [wc7d1] + ld a, [wDexListingCursor] inc a - ld [wc7d1], a + ld [wDexListingCursor], a dec c - jr nz, .asm_400dd + jr nz, .loop2 -.asm_400ec +.done ret ; 400ed -Function400ed: ; 400ed +Pokedex_GetLandmark: ; 400ed ld a, [MapGroup] ld b, a ld a, [MapNumber] @@ -155,7 +155,7 @@ Function400ed: ; 400ed call GetWorldMapLocation cp SPECIAL_MAP - jr nz, .asm_40107 + jr nz, .load ld a, [BackupMapGroup] ld b, a @@ -163,20 +163,20 @@ Function400ed: ; 400ed ld c, a call GetWorldMapLocation -.asm_40107 - ld [wc7e4], a +.load + ld [wDexCurrentLocation], a ret ; 4010b -Function4010b: ; 4010b +Pokedex_Main: ; 4010b ld a, [wJumptableIndex] - ld hl, Jumptable_40115 - call Function41432 + ld hl, .Jumptable + call Pokedex_LoadPointer jp [hl] ; 40115 -Jumptable_40115: ; 40115 (10:4115) +.Jumptable: ; 40115 (10:4115) dw Function4013c dw Function401ae dw Function40217 @@ -188,17 +188,17 @@ Jumptable_40115: ; 40115 (10:4115) dw Function403be dw Function4050a dw Function40562 - dw Function405bd + dw Pokedex_UnownMode ; Unown Dex dw Function405df - dw Function40136 + dw Pokedex_CloseDex ; Exit -Function40131: ; 40131 (10:4131) +Pokedex_IncrementDexPointer: ; 40131 (10:4131) ld hl, wJumptableIndex inc [hl] ret -Function40136: ; 40136 (10:4136) +Pokedex_CloseDex: ; 40136 (10:4136) ld hl, wJumptableIndex set 7, [hl] ret @@ -209,45 +209,46 @@ Function4013c: ; 4013c (10:413c) call ClearSprites xor a hlcoord 0, 0, AttrMap - ld bc, $168 + ld bc, SCREEN_HEIGHT * SCREEN_WIDTH call ByteFill - callba Function1de171 + callba DrawPokedexListWindow hlcoord 0, 17 ld de, String_START_SEARCH - call Function40acd + call Pokedex_PlaceString ld a, $7 ld [wc7d3], a call Function40b0f - call Function41aeb - call Function41af7 + call Pokedex_SetBGMapMode_3ifDMG_4ifCGB + call Pokedex_ResetBGMapMode call Function4074c ld a, $5 ld [hSCX], a - ld a, [wc7d4] - cp $1 + + ld a, [wCurrentDexMode] + cp DEXMODE_OLD ld a, $4a - jr z, .asm_4017b + jr z, .okay ld a, $47 - -.asm_4017b +.okay ld [hWX], a xor a ld [hWY], a call WaitBGMap - call Function41af7 - ld a, $ff + + call Pokedex_ResetBGMapMode + ld a, -1 ld [CurPartySpecies], a ld a, $4 call Function41423 call Function41148 - callba Function1de171 + callba DrawPokedexListWindow hlcoord 0, 17 ld de, String_START_SEARCH - call Function40acd + call Pokedex_PlaceString ld a, $7 ld [wc7d3], a call Function40b0f - call Function40131 + call Pokedex_IncrementDexPointer ret Function401ae: ; 401ae (10:41ae) @@ -270,13 +271,13 @@ Function401ae: ; 401ae (10:41ae) xor a ld [hBGMapMode], a call Function40b0f - call Function41ad7 - call Function41af7 + call Pokedex_SetBGMapMode3 + call Pokedex_ResetBGMapMode ret .a - call Function40bb1 - call Function40bd0 + call Pokedex_GetMonAtCursorPosition + call Pokedex_CheckSeen ret z ld a, $2 ld [wJumptableIndex], a @@ -318,27 +319,27 @@ Function40217: ; 40217 (10:4217) xor a ld [hBGMapMode], a call ClearSprites - call Function41478 + call Pokedex_LoadCurrentFootprint call Function407fd call Function4134f - call Function40bb1 - ld [wc2d6], a - callba Function4424d - call Function40ba0 + call Pokedex_GetMonAtCursorPosition + ld [wLastDexEntry], a + callba DisplayDexEntry + call Pokedex_DrawFootprint call WaitBGMap ld a, $a7 ld [hWX], a - call Function40bb1 + call Pokedex_GetMonAtCursorPosition ld [CurPartySpecies], a ld a, $4 call Function41423 ld a, [CurPartySpecies] call PlayCry - call Function40131 + call Pokedex_IncrementDexPointer ret Function40258: ; 40258 (10:4258) - ld de, Unknown_402e8 + ld de, DexEntryPage_JoypadCoords call Function4135a ld hl, hJoyPressed ; $ffa7 ld a, [hl] @@ -347,38 +348,38 @@ Function40258: ; 40258 (10:4258) ld a, [hl] and A_BUTTON jr nz, .a - call Function4066c + call Pokedex_NextOrPreviousDexEntry ret nc - call Function40131 + call Pokedex_IncrementDexPointer ret .a ld a, [wc7d8] - ld hl, Jumptable_402f2 - call Function41432 + ld hl, DexEntryPage_Jumptable + call Pokedex_LoadPointer jp [hl] .b ld a, [LastVolume] and a - jr z, .asm_40288 + jr z, .max_volume ld a, $77 ld [LastVolume], a -.asm_40288 +.max_volume call MaxVolume ld a, [wcf64] ld [wJumptableIndex], a ret ; 40292 (10:4292) -Function40292: ; 40292 +Pokedex_Page: ; 40292 ld a, [wPokedexStatus] xor $1 ld [wPokedexStatus], a - call Function40bb1 - ld [wc2d6], a - callba Function4424d + call Pokedex_GetMonAtCursorPosition + ld [wLastDexEntry], a + callba DisplayDexEntry call WaitBGMap ret ; 402aa @@ -391,14 +392,14 @@ Function402aa: ; 402aa (10:42aa) ld [hBGMapMode], a call Function407fd call Function4134f - call Function41478 - call Function40bb1 - ld [wc2d6], a - callba Function4424d - call Function40ba0 + call Pokedex_LoadCurrentFootprint + call Pokedex_GetMonAtCursorPosition + ld [wLastDexEntry], a + callba DisplayDexEntry + call Pokedex_DrawFootprint call Function4143b call WaitBGMap - call Function40bb1 + call Pokedex_GetMonAtCursorPosition ld [CurPartySpecies], a ld a, $4 call Function41423 @@ -409,22 +410,23 @@ Function402aa: ; 402aa (10:42aa) ret ; 402e8 (10:42e8) -Unknown_402e8: ; 402e8 - dw $0430 +DexEntryPage_JoypadCoords: ; 402e8 + db D_RIGHT | D_LEFT, 4 dwcoord 1, 17 dwcoord 6, 17 dwcoord 11, 17 dwcoord 15, 17 + ; 402f2 -Jumptable_402f2: ; 402f2 - dw Function40292 - dw Function402fa - dw Function40340 - dw Function4034f +DexEntryPage_Jumptable: ; 402f2 + dw Pokedex_Page + dw .Area + dw .Cry + dw .Print ; 402fa -Function402fa: ; 402fa +.Area: ; 402fa call Function41401 xor a ld [hSCX], a @@ -433,10 +435,10 @@ Function402fa: ; 402fa ld [hWX], a ld a, $90 ld [hWY], a - call Function40bb1 - ld a, [wc7e4] + call Pokedex_GetMonAtCursorPosition + ld a, [wDexCurrentLocation] ld e, a - predef Function91d11 + predef _Area call Function41401 call DelayFrame xor a @@ -449,15 +451,15 @@ Function402fa: ; 402fa call Function4038d call Function4143b call WaitBGMap - call Function40bb1 + call Pokedex_GetMonAtCursorPosition ld [CurPartySpecies], a ld a, $4 call Function41423 ret ; 40340 -Function40340: ; 40340 - call Function40bb1 +.Cry: ; 40340 + call Pokedex_GetMonAtCursorPosition ld a, [wd265] call GetCryIndex ld e, c @@ -466,7 +468,7 @@ Function40340: ; 40340 ret ; 4034f -Function4034f: ; 4034f +.Print: ; 4034f call Function41415 xor a ld [hSCX], a @@ -485,7 +487,7 @@ Function4034f: ; 4034f ld [wcf65], a call ClearBGPalettes call DisableLCD - call Function414fb + call Pokedex_LoadInvertedFont call Function4038d call EnableLCD call WaitBGMap @@ -497,9 +499,9 @@ Function4034f: ; 4034f Function4038d: ; 4038d call Function407fd - call Function40bb1 - callba Function4424d - call Function40ba0 + call Pokedex_GetMonAtCursorPosition + callba DisplayDexEntry + call Pokedex_DrawFootprint ret ; 4039d @@ -509,17 +511,17 @@ Function4039d: ; 4039d (10:439d) call ClearSprites call Function4087c call Function4134f - ld a, [wc7d4] + ld a, [wCurrentDexMode] ld [wc7d8], a call Function40e5b call WaitBGMap ld a, $10 call Function41423 - call Function40131 + call Pokedex_IncrementDexPointer ret Function403be: ; 403be (10:43be) - ld a, [wc7dc] + ld a, [wUnlockedUnownMode] and a jr nz, .asm_403c9 ld de, Unknown_403f3 @@ -542,7 +544,7 @@ Function403be: ; 403be (10:43be) .asm_403e0 ld a, [wc7d8] ld hl, Jumptable_40405 - call Function41432 + call Pokedex_LoadPointer jp [hl] .asm_403ea @@ -553,17 +555,17 @@ Function403be: ; 403be (10:43be) ; 403f3 (10:43f3) Unknown_403f3: ; 403f3 - dw $03c0 - dwcoord 2, 4 - dwcoord 2, 6 - dwcoord 2, 8 + db D_UP | D_DOWN, 3 + dwcoord 2, 4 + dwcoord 2, 6 + dwcoord 2, 8 ; 403fb Unknown_403fb: ; 403fb - dw $04c0 - dwcoord 2, 4 - dwcoord 2, 6 - dwcoord 2, 8 + db D_UP | D_DOWN, 4 + dwcoord 2, 4 + dwcoord 2, 6 + dwcoord 2, 8 dwcoord 2, 10 ; 40405 @@ -585,17 +587,17 @@ Function40411: ; 40411 (10:4411) Function40415: ; 40415 (10:4415) ld b, $2 Function40417: ; 40417 (10:4417) - ld a, [wc7d4] + ld a, [wCurrentDexMode] cp b jr z, .asm_40431 ld a, b - ld [wc7d4], a - call Function40bdc + ld [wCurrentDexMode], a + call Pokedex_ChangeMode call Function40f08 xor a - ld [wc7d0], a - ld [wc7d1], a - call Function400b4 + ld [wDexListingPage], a + ld [wDexListingCursor], a + call Pokedex_InitCursorPosition .asm_40431 call Function41401 @@ -621,12 +623,12 @@ Function40443: ; 40443 (10:4443) ld [wc7d6], a call Function40fa8 xor a - ld [wc7db], a - callba Function44207 + ld [wDexSearchSlowpokeFrame], a + callba DoDexSearchSlowpokeFrame call WaitBGMap ld a, $10 call Function41423 - call Function40131 + call Pokedex_IncrementDexPointer ret Function40471: ; 40471 (10:4471) @@ -646,7 +648,7 @@ Function40471: ; 40471 (10:4471) .asm_4048b ld a, [wc7d8] ld hl, Jumptable_404a8 - call Function41432 + call Pokedex_LoadPointer jp [hl] .asm_40495 @@ -657,7 +659,7 @@ Function40471: ; 40471 (10:4471) ; 4049e (10:449e) Unknown_4049e: ; 4049e - dw $04c0 + db D_UP | D_DOWN, 4 dwcoord 2, 4 dwcoord 2, 6 dwcoord 2, 13 @@ -679,11 +681,11 @@ Function404b0: ; 404b0 Function404b7: ; 404b7 call Function41086 - callba Function441cf + callba AnimateDexSearchSlowpoke ld a, [wc7d7] and a jr nz, .asm_404dc - call Function40bdc + call Pokedex_ChangeMode call Function41107 xor a ld [hBGMapMode], a @@ -694,16 +696,16 @@ Function404b7: ; 404b7 ret .asm_404dc - ld [wc7d2], a - ld a, [wc7d0] + ld [wDexListingEnd], a + ld a, [wDexListingPage] ld [wc7e0], a - ld a, [wc7d1] + ld a, [wDexListingCursor] ld [wc7e1], a - ld a, [wc2d6] + ld a, [wLastDexEntry] ld [wcf65], a xor a - ld [wc7d0], a - ld [wc7d1], a + ld [wDexListingPage], a + ld [wDexListingCursor], a call Function41401 ld a, $9 ld [wJumptableIndex], a @@ -722,17 +724,17 @@ Function4050a: ; 4050a (10:450a) ld [hBGMapMode], a xor a hlcoord 0, 0, AttrMap - ld bc, $168 + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT call ByteFill - call Function41ae1 - call Function41af7 - callba Function1de1d1 + call Pokedex_SetBGMapMode4 + call Pokedex_ResetBGMapMode + callba DrawPokedexSearchResultsWindow call Function409cf ld a, $4 ld [wc7d3], a call Function40b0f - call Function41ad7 - call Function41af7 + call Pokedex_SetBGMapMode3 + call Pokedex_ResetBGMapMode call Function40962 ld a, $5 ld [hSCX], a @@ -741,15 +743,15 @@ Function4050a: ; 4050a (10:450a) xor a ld [hWY], a call WaitBGMap - call Function41af7 - callba Function1de1d1 + call Pokedex_ResetBGMapMode + callba DrawPokedexSearchResultsWindow call Function409cf call Function41281 ld a, $ff ld [CurPartySpecies], a ld a, $4 call Function41423 - call Function40131 + call Pokedex_IncrementDexPointer ret Function40562: ; 40562 (10:4562) @@ -766,13 +768,13 @@ Function40562: ; 40562 (10:4562) xor a ld [hBGMapMode], a call Function40b0f - call Function41ad7 - call Function41af7 + call Pokedex_SetBGMapMode3 + call Pokedex_ResetBGMapMode ret .asm_40583 - call Function40bb1 - call Function40bd0 + call Pokedex_GetMonAtCursorPosition + call Pokedex_CheckSeen ret z ld a, $2 ld [wJumptableIndex], a @@ -782,14 +784,14 @@ Function40562: ; 40562 (10:4562) .asm_40595 ld a, [wc7e0] - ld [wc7d0], a + ld [wDexListingPage], a ld a, [wc7e1] - ld [wc7d1], a + ld [wDexListingCursor], a ld a, [wcf65] - ld [wc2d6], a + ld [wLastDexEntry], a call Function41401 call ClearSprites - call Function40bdc + call Pokedex_ChangeMode ld a, $5 ld [wJumptableIndex], a xor a @@ -798,45 +800,45 @@ Function40562: ; 40562 (10:4562) ld [hWX], a ret -Function405bd: ; 405bd (10:45bd) - call Function41a2c +Pokedex_UnownMode: ; 405bd (10:45bd) + call Pokedex_LoadUnownFont call Function409f1 xor a ld [wc7dd], a call Function41a58 call Function40658 - callba Functionfba2e + callba PrintUnownWord call WaitBGMap ld a, $16 call Function41423 - call Function40131 + call Pokedex_IncrementDexPointer ret Function405df: ; 405df (10:45df) ld hl, hJoyPressed ; $ffa7 ld a, [hl] and A_BUTTON | B_BUTTON - jr nz, .asm_405eb + jr nz, .a_b call Function40610 ret -.asm_405eb +.a_b call Function41401 ld a, $7 ld [wJumptableIndex], a call DelayFrame - call Function41a24 - jr nz, .asm_40603 + call Pokedex_CheckSGB + jr nz, .decompress callba Function1ddf26 - jr .asm_4060f + jr .done -.asm_40603 +.decompress ld hl, PokedexLZ ld de, VTiles2 tile $31 lb bc, BANK(PokedexLZ), $3a call DecompressRequest2bpp -.asm_4060f +.done ret Function40610: ; 40610 (10:4610) @@ -859,7 +861,7 @@ Function40610: ; 40610 (10:4610) ret nc ld a, [hl] inc [hl] - jr .asm_40635 + jr .update .left ld hl, wc7dd @@ -869,7 +871,7 @@ Function40610: ; 40610 (10:4610) ld a, [hl] dec [hl] -.asm_40635 +.update push af xor a ld [hBGMapMode], a @@ -877,7 +879,7 @@ Function40610: ; 40610 (10:4610) call Function40654 call Function41a58 call Function40658 - callba Functionfba2e + callba PrintUnownWord ld a, $1 ld [hBGMapMode], a call DelayFrame @@ -904,11 +906,11 @@ endr ld [hl], c ret -Function4066c: ; 4066c (10:466c) - ld a, [wc7d1] - ld [wc7e2], a - ld a, [wc7d0] - ld [wc7e3], a +Pokedex_NextOrPreviousDexEntry: ; 4066c (10:466c) + ld a, [wDexListingCursor] + ld [wBackupDexListingCursor], a + ld a, [wDexListingPage] + ld [wBackupDexListingPage], a ld hl, hJoyLast ld a, [hl] and D_UP @@ -922,43 +924,43 @@ Function4066c: ; 4066c (10:466c) .up ld a, [wc7d3] ld d, a - ld a, [wc7d2] + ld a, [wDexListingEnd] ld e, a call Function406ea - jr nc, .asm_406b7 - call Function40bb1 - call Function40bd0 - jr nz, .asm_406b5 + jr nc, .nope + call Pokedex_GetMonAtCursorPosition + call Pokedex_CheckSeen + jr nz, .yep jr .up .down ld a, [wc7d3] ld d, a - ld a, [wc7d2] + ld a, [wDexListingEnd] ld e, a call Function406fe - jr nc, .asm_406b7 - call Function40bb1 - call Function40bd0 - jr nz, .asm_406b5 + jr nc, .nope + call Pokedex_GetMonAtCursorPosition + call Pokedex_CheckSeen + jr nz, .yep jr .down -.asm_406b5 +.yep scf ret -.asm_406b7 - ld a, [wc7e2] - ld [wc7d1], a - ld a, [wc7e3] - ld [wc7d0], a +.nope + ld a, [wBackupDexListingCursor] + ld [wDexListingCursor], a + ld a, [wBackupDexListingPage] + ld [wDexListingPage], a and a ret Function406c5: ; 406c5 (10:46c5) ld a, [wc7d3] ld d, a - ld a, [wc7d2] + ld a, [wDexListingEnd] ld e, a ld hl, hJoyLast ld a, [hl] @@ -979,14 +981,14 @@ Function406c5: ; 406c5 (10:46c5) jr asm_4073d Function406ea: ; 406ea (10:46ea) - ld hl, wc7d1 + ld hl, wDexListingCursor ld a, [hl] and a jr z, .asm_406f4 dec [hl] jr asm_4073f .asm_406f4 - ld hl, wc7d0 + ld hl, wDexListingPage ld a, [hl] and a jr z, asm_4073d @@ -994,7 +996,7 @@ Function406ea: ; 406ea (10:46ea) jr asm_4073f Function406fe: ; 406fe (10:46fe) - ld hl, wc7d1 + ld hl, wDexListingCursor ld a, [hl] inc a cp e @@ -1004,14 +1006,14 @@ Function406fe: ; 406fe (10:46fe) inc [hl] jr asm_4073f .asm_4070c - ld hl, wc7d0 + ld hl, wDexListingPage add [hl] cp e jr nc, asm_4073d inc [hl] jr asm_4073f asm_40716: ; 40716 (10:4716) - ld hl, wc7d0 + ld hl, wDexListingPage ld a, [hl] and a jr z, asm_4073d @@ -1025,7 +1027,7 @@ asm_40716: ; 40716 (10:4716) ld [hl], a jr asm_4073f asm_40728: ; 40728 (10:4728) - ld hl, wc7d0 + ld hl, wDexListingPage ld a, d add a add [hl] @@ -1065,20 +1067,20 @@ Function40741: ; 40741 Function4074c: ; 4074c (10:474c) hlcoord 0, 17 ld de, String_START_SEARCH - call Function40acd + call Pokedex_PlaceString ld a, $32 hlcoord 0, 0 - ld bc, $168 + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT call ByteFill hlcoord 0, 0 lb bc, 7, 7 - call Function40ad5 + call Pokedex_PlaceBorder hlcoord 0, 9 ld bc, $607 - call Function40ad5 + call Pokedex_PlaceBorder hlcoord 1, 11 ld de, String_SEEN - call Function40acd + call Pokedex_PlaceString ld hl, PokedexSeen ; wdeb9 (aliases: EndPokedexSeen) ld b, EndPokedexSeen - PokedexSeen call CountSetBits @@ -1088,7 +1090,7 @@ Function4074c: ; 4074c (10:474c) call PrintNum hlcoord 1, 14 ld de, String_OWN - call Function40acd + call Pokedex_PlaceString ld hl, PokedexCaught ld b, EndPokedexCaught - PokedexCaught call CountSetBits @@ -1098,7 +1100,7 @@ Function4074c: ; 4074c (10:474c) call PrintNum hlcoord 1, 17 ld de, String_SELECT_OPTION - call Function40acd + call Pokedex_PlaceString hlcoord 8, 1 ld b, $7 ld a, $5a @@ -1115,7 +1117,7 @@ Function4074c: ; 4074c (10:474c) ld [hl], $54 hlcoord 8, 16 ld [hl], $5b - call Function40ab2 + call Pokedex_PlaceFrontpicTopLeftCorner ret ; 407e1 (10:47e1) @@ -1130,10 +1132,10 @@ String_START_SEARCH: ; 407f2 ; 407fd Function407fd: ; 407fd - call Function40aa6 + call Pokedex_FillBackgroundColor2 hlcoord 0, 0 ld bc, $0f12 - call Function40ad5 + call Pokedex_PlaceBorder hlcoord 19, 0 ld [hl], $34 hlcoord 19, 1 @@ -1151,14 +1153,14 @@ Function407fd: ; 407fd call ByteFill hlcoord 9, 7 ld de, Unknown_40852 - call Function40acd + call Pokedex_PlaceString hlcoord 9, 9 ld de, Unknown_4085c - call Function40acd + call Pokedex_PlaceString hlcoord 0, 17 ld de, Unknown_40867 - call Function40acd - call Function40ab2 + call Pokedex_PlaceString + call Pokedex_PlaceFrontpicTopLeftCorner ret ; 4084f @@ -1173,20 +1175,20 @@ Unknown_40867: ; 40867 ; 4087c Function4087c: ; 4087c (10:487c) - call Function40aa6 + call Pokedex_FillBackgroundColor2 hlcoord 0, 2 lb bc, 8, 18 - call Function40ad5 + call Pokedex_PlaceBorder hlcoord 0, 12 lb bc, 4, 18 - call Function40ad5 + call Pokedex_PlaceBorder hlcoord 0, 1 ld de, Unknown_408b2 - call Function40acd + call Pokedex_PlaceString hlcoord 3, 4 ld de, String_408bd call PlaceString - ld a, [wc7dc] + ld a, [wUnlockedUnownMode] and a ret z hlcoord 3, 10 @@ -1211,19 +1213,19 @@ String_408e5: ; 408e5 ; 408f0 Function408f0: ; 408f0 (10:48f0) - call Function40aa6 + call Pokedex_FillBackgroundColor2 hlcoord 0, 2 lb bc, 14, 18 - call Function40ad5 + call Pokedex_PlaceBorder hlcoord 0, 1 ld de, Unknown_4092a - call Function40acd + call Pokedex_PlaceString hlcoord 8, 4 ld de, Unknown_40935 - call Function40acd + call Pokedex_PlaceString hlcoord 8, 6 ld de, Unknown_40935 - call Function40acd + call Pokedex_PlaceString hlcoord 3, 4 ld de, String_40940 call PlaceString @@ -1254,13 +1256,13 @@ String_4094c: ; 4094c ; 40962 Function40962: ; 40962 (10:4962) - call Function40aa6 + call Pokedex_FillBackgroundColor2 hlcoord 0, 0 lb bc, 7, 7 - call Function40ad5 + call Pokedex_PlaceBorder hlcoord 0, 11 lb bc, 5, 18 - call Function40ad5 + call Pokedex_PlaceBorder hlcoord 1, 12 ld de, String_409ae call PlaceString @@ -1280,7 +1282,7 @@ Function40962: ; 40962 (10:4962) ld [hl], $69 hlcoord 8, 10 ld [hl], $6a - call Function40ab2 + call Pokedex_PlaceFrontpicTopLeftCorner ret ; 409ae (10:49ae) @@ -1310,28 +1312,28 @@ Function409cf: ; 409cf (10:49cf) ret Function409f1: ; 409f1 (10:49f1) - call Function40aa6 + call Pokedex_FillBackgroundColor2 hlcoord 2, 1 lb bc, 10, 13 - call Function40ad5 + call Pokedex_PlaceBorder hlcoord 2, 14 lb bc, 1, 13 - call Function40ad5 + call Pokedex_PlaceBorder hlcoord 2, 15 ld [hl], $3d hlcoord 16, 15 ld [hl], $3e hlcoord 6, 5 - call Function40ab5 + call Pokedex_PlaceFrontpicAtHL ld de, 0 ld b, 0 ld c, 26 -.asm_40a1d +.loop ld hl, UnownDex add hl, de ld a, [hl] and a - jr z, .asm_40a39 + jr z, .done push af ld hl, Unknown_40a3e rept 4 @@ -1341,19 +1343,20 @@ endr ld h, [hl] ld l, a pop af - add $3f + add $40 - 1 ; Unown A ld [hl], a inc de inc b dec c - jr nz, .asm_40a1d -.asm_40a39 + jr nz, .loop +.done ld a, b ld [wc7de], a ret ; 40a3e (10:4a3e) Unknown_40a3e: ; 40a3e +; letter, cursor dwcoord 4,11, 3,11 dwcoord 4,10, 3,10 dwcoord 4, 9, 3, 9 @@ -1382,7 +1385,7 @@ Unknown_40a3e: ; 40a3e dwcoord 14,10, 15,10 ; 40aa6 -Function40aa6: ; 40aa6 +Pokedex_FillBackgroundColor2: ; 40aa6 hlcoord 0, 0 ld a, $32 ld bc, SCREEN_WIDTH * SCREEN_HEIGHT @@ -1390,113 +1393,118 @@ Function40aa6: ; 40aa6 ret ; 40ab2 -Function40ab2: ; 40ab2 +Pokedex_PlaceFrontpicTopLeftCorner: ; 40ab2 hlcoord 1, 1 -Function40ab5: ; 40ab5 +Pokedex_PlaceFrontpicAtHL: ; 40ab5 xor a ld b, $7 -.asm_40ab8 +.row ld c, $7 push af push hl -.asm_40abc +.col ld [hli], a add $7 dec c - jr nz, .asm_40abc + jr nz, .col pop hl - ld de, $0014 + ld de, SCREEN_WIDTH add hl, de pop af inc a dec b - jr nz, .asm_40ab8 + jr nz, .row ret ; 40acd -Function40acd: ; 40acd -.asm_40acd +Pokedex_PlaceString: ; 40acd +.loop ld a, [de] - cp $ff + cp -1 ret z inc de ld [hli], a - jr .asm_40acd + jr .loop ; 40ad5 -Function40ad5: ; 40ad5 +Pokedex_PlaceBorder: ; 40ad5 push hl ld a, $33 ld [hli], a ld d, $34 - call Function40b06 + call .FillRow ld a, $35 ld [hl], a pop hl - ld de, $0014 + ld de, SCREEN_WIDTH add hl, de -.asm_40ae6 +.loop push hl ld a, $36 ld [hli], a ld d, $7f - call Function40b06 + call .FillRow ld a, $37 ld [hl], a pop hl - ld de, $0014 + ld de, SCREEN_WIDTH add hl, de dec b - jr nz, .asm_40ae6 + jr nz, .loop ld a, $38 ld [hli], a ld d, $39 - call Function40b06 + call .FillRow ld a, $3a ld [hl], a ret ; 40b06 -Function40b06: ; 40b06 +.FillRow: ; 40b06 ld e, c -.asm_40b07 +.row_loop ld a, e and a ret z ld a, d ld [hli], a dec e - jr .asm_40b07 + jr .row_loop ; 40b0f Function40b0f: ; 40b0f (10:4b0f) - ld a, [wc7d4] - cp $1 - jr z, .asm_40b1a - ld c, $b - jr .asm_40b1c -.asm_40b1a - ld c, $b -.asm_40b1c +; This check is completely useless. + ld a, [wCurrentDexMode] + cp DEXMODE_OLD + jr z, .okay + ld c, 11 + jr .resume +.okay + ld c, 11 +; End useless check +.resume +; Clear (2 * [wc7d3] + 1) by 11 box starting at 0,1 hlcoord 0, 1 ld a, [wc7d3] add a inc a ld b, a - ld a, $7f - call Function413fe - ld a, [wc7d0] + ld a, " " + call Pokedex_FillBox + +; Load de with wPokedexDataStart + [wDexListingPage] + ld a, [wDexListingPage] ld e, a ld d, $0 - ld hl, wc6d0 + ld hl, wPokedexDataStart add hl, de ld e, l ld d, h hlcoord 0, 2 ld a, [wc7d3] -.asm_40b3c +.loop push af ld a, [de] ld [wd265], a @@ -1504,37 +1512,38 @@ Function40b0f: ; 40b0f (10:4b0f) push hl call Function40b55 pop hl - ld de, $28 + ld de, 2 * SCREEN_WIDTH add hl, de pop de inc de pop af dec a - jr nz, .asm_40b3c + jr nz, .loop call Function4143b ret Function40b55: ; 40b55 (10:4b55) and a ret z - call Function40b6a - call Function40b8d + call Pokedex_PrintNumberIfOldMode + call Pokedex_PlaceDefaultStringIfNotSeen ret c - call Function40b82 + call Pokedex_PlaceCaughtSymbolIfCaught push hl call GetPokemonName pop hl call PlaceString ret -Function40b6a: ; 40b6a (10:4b6a) - ld a, [wc7d4] - cp $1 - jr z, .asm_40b72 +Pokedex_PrintNumberIfOldMode: ; 40b6a (10:4b6a) + ld a, [wCurrentDexMode] + cp DEXMODE_OLD + jr z, .printnum ret -.asm_40b72 + +.printnum push hl - ld de, -20 + ld de, -SCREEN_WIDTH add hl, de ld de, wd265 lb bc, PRINTNUM_LEADINGZEROS | 1, 3 @@ -1542,31 +1551,32 @@ Function40b6a: ; 40b6a (10:4b6a) pop hl ret -Function40b82: ; 40b82 (10:4b82) - call Function40bc4 - jr nz, .asm_40b89 +Pokedex_PlaceCaughtSymbolIfCaught: ; 40b82 (10:4b82) + call Pokedex_CheckCaught + jr nz, .place_caught_symbol inc hl ret -.asm_40b89 + +.place_caught_symbol ld a, $4f ld [hli], a ret -Function40b8d: ; 40b8d (10:4b8d) - call Function40bd0 +Pokedex_PlaceDefaultStringIfNotSeen: ; 40b8d (10:4b8d) + call Pokedex_CheckSeen ret nz inc hl - ld de, String_40b9a + ld de, .NameNotSeen call PlaceString scf ret ; 40b9a (10:4b9a) -String_40b9a: ; 40b9a +.NameNotSeen: ; 40b9a db "-----@" ; 40ba0 -Function40ba0: ; 40ba0 +Pokedex_DrawFootprint: ; 40ba0 hlcoord 18, 1 ld a, $62 ld [hli], a @@ -1581,13 +1591,13 @@ Function40ba0: ; 40ba0 ; 40bb1 -Function40bb1: ; 40bb1 - ld a, [wc7d1] - ld hl, wc7d0 +Pokedex_GetMonAtCursorPosition: ; 40bb1 + ld a, [wDexListingCursor] + ld hl, wDexListingPage add [hl] ld e, a ld d, $0 - ld hl, wc6d0 + ld hl, wPokedexDataStart add hl, de ld a, [hl] ld [wd265], a @@ -1595,7 +1605,7 @@ Function40bb1: ; 40bb1 ; 40bc4 -Function40bc4: ; 40bc4 (10:4bc4) +Pokedex_CheckCaught: ; 40bc4 (10:4bc4) push de push hl ld a, [wd265] @@ -1606,7 +1616,7 @@ Function40bc4: ; 40bc4 (10:4bc4) ret -Function40bd0: ; 40bd0 +Pokedex_CheckSeen: ; 40bd0 push de push hl ld a, [wd265] @@ -1619,100 +1629,100 @@ Function40bd0: ; 40bd0 -Function40bdc: ; 40bdc - ld hl, wc6d0 - ld bc, $100 +Pokedex_ChangeMode: ; 40bdc + ld hl, wPokedexDataStart + ld bc, wPokedexMetadata - wPokedexDataStart xor a call ByteFill - ld a, [wc7d4] - ld hl, Jumptable_40bf0 - call Function41432 + ld a, [wCurrentDexMode] + ld hl, .Jumptable + call Pokedex_LoadPointer jp [hl] ; 40bf0 -Jumptable_40bf0: ; 40bf0 (10:4bf0) - dw Function40bf6 - dw Function40c08 - dw Function40c30 +.Jumptable: ; 40bf0 (10:4bf0) + dw .NewMode + dw .OldMode + dw Pokedex_ABCMode -Function40bf6: ; 40bf6 (10:4bf6) +.NewMode: ; 40bf6 (10:4bf6) ld de, NewPokedexOrder - ld hl, wc6d0 + ld hl, wPokedexDataStart ld c, NUM_POKEMON -.asm_40bfe +.loopnew ld a, [de] inc de ld [hli], a dec c - jr nz, .asm_40bfe - call Function40c18 + jr nz, .loopnew + call .FindLastSeen ret -Function40c08: ; 40c08 (10:4c08) - ld hl, wc6d0 +.OldMode: ; 40c08 (10:4c08) + ld hl, wPokedexDataStart ld a, $1 ld c, NUM_POKEMON -.asm_40c0f +.loopold ld [hli], a inc a dec c - jr nz, .asm_40c0f - call Function40c18 + jr nz, .loopold + call .FindLastSeen ret -Function40c18: ; 40c18 (10:4c18) - ld hl, wc7ca +.FindLastSeen: ; 40c18 (10:4c18) + ld hl, wPokedexDataStart + NUM_POKEMON - 1 ld d, NUM_POKEMON ld e, d -.asm_40c1e +.loopfindend ld a, [hld] ld [wd265], a - call Function40bd0 - jr nz, .asm_40c2b + call Pokedex_CheckSeen + jr nz, .foundend dec d dec e - jr nz, .asm_40c1e -.asm_40c2b + jr nz, .loopfindend +.foundend ld a, d - ld [wc7d2], a + ld [wDexListingEnd], a ret -Function40c30: ; 40c30 +Pokedex_ABCMode: ; 40c30 xor a - ld [wc7d2], a - ld hl, wc6d0 + ld [wDexListingEnd], a + ld hl, wPokedexDataStart ld de, AlphabeticalPokedexOrder ld c, NUM_POKEMON -.asm_40c3c +.loop1abc push bc ld a, [de] ld [wd265], a - call Function40bd0 - jr z, .asm_40c51 + call Pokedex_CheckSeen + jr z, .skipabc ld a, [wd265] ld [hli], a - ld a, [wc7d2] + ld a, [wDexListingEnd] inc a - ld [wc7d2], a + ld [wDexListingEnd], a -.asm_40c51 +.skipabc inc de pop bc dec c - jr nz, .asm_40c3c - ld a, [wc7d2] + jr nz, .loop1abc + ld a, [wDexListingEnd] ld c, 0 -.asm_40c5b +.loop2abc cp NUM_POKEMON - jr z, .asm_40c64 + jr z, .doneabc ld [hl], c inc hl inc a - jr .asm_40c5b + jr .loop2abc -.asm_40c64 +.doneabc ret ; 40c65 @@ -1726,11 +1736,11 @@ Function40e5b: ; 40e5b xor a ld [hBGMapMode], a hlcoord 0, 12 - ld bc, $0412 - call Function40ad5 + lb bc, 4, SCREEN_WIDTH - 2 + call Pokedex_PlaceBorder ld a, [wc7d8] ld hl, Unknown_40e7d - call Function41432 + call Pokedex_LoadPointer ld e, l ld d, h hlcoord 1, 14 @@ -1741,28 +1751,28 @@ Function40e5b: ; 40e5b ; 40e7d Unknown_40e7d: ; 40e7d - dw String_40e85 - dw String_40ea6 - dw String_40ec6 - dw String_40ee4 + dw .NewMode + dw .OldMode + dw .ABCMode + dw .UnownMode ; 40e85 -String_40e85: ; 40e85 - db $e1, $e2, " are listed by" +.NewMode: ; 40e85 + db "<PK><MN> are listed by" next "evolution type.@" ; 40ea6 -String_40ea6: ; 40ea6 - db $e1, $e2, " are listed by" +.OldMode: ; 40ea6 + db "<PK><MN> are listed by" next "official type.@" ; 40ec6 -String_40ec6: ; 40ec6 - db $e1, $e2, " are listed" +.ABCMode: ; 40ec6 + db "<PK><MN> are listed" next "alphabetically.@" ; 40ee4 -String_40ee4: ; 40ee4 +.UnownMode: ; 40ee4 db "UNOWN are listed" next "in catching order.@" ; 40f08 @@ -1771,24 +1781,25 @@ Function40f08: ; 40f08 (10:4f08) xor a ld [hBGMapMode], a hlcoord 0, 12 - ld bc, $412 - call Function40ad5 - ld de, String_40f32 + lb bc, 4, SCREEN_WIDTH - 2 + call Pokedex_PlaceBorder + ld de, String_ChangingModesPleaseWait hlcoord 1, 14 call PlaceString ld a, $1 ld [hBGMapMode], a - ld c, $40 + ld c, 64 call DelayFrames ld de, SFX_CHANGE_DEX_MODE call PlaySFX - ld c, $40 + ld c, 64 call DelayFrames ret ; 40f32 (10:4f32) -String_40f32: ; 40f32 - db "Changing modes.", $4e, "Please wait.@" +String_ChangingModesPleaseWait: ; 40f32 + db "Changing modes." + next "Please wait.@" ; 40f4f Function40f4f: ; 40f4f (10:4f4f) @@ -1861,7 +1872,7 @@ Function40fa8: ; 40fa8 (10:4fa8) hlcoord 9, 3 ld bc, $408 ld a, $7f - call Function413fe + call Pokedex_FillBox ld a, [wc7d5] hlcoord 9, 4 call Function40fcd @@ -1926,8 +1937,8 @@ Function41095: ; 41095 add hl, de ld a, [hl] ld [wc7df], a - ld hl, wc6d0 - ld de, wc6d0 + ld hl, wPokedexDataStart + ld de, wPokedexDataStart ld c, NUM_POKEMON xor a ld [wc7d7], a @@ -1938,7 +1949,7 @@ Function41095: ; 41095 jr z, .asm_410e0 ld [wd265], a ld [CurSpecies], a - call Function40bc4 + call Pokedex_CheckCaught jr z, .asm_410e0 push hl push de @@ -2008,7 +2019,7 @@ Function41107: ; 41107 ld [hBGMapMode], a hlcoord 0, 12 ld bc, $0412 - call Function40ad5 + call Pokedex_PlaceBorder ld de, String_41126 hlcoord 1, 14 call PlaceString @@ -2025,7 +2036,7 @@ String_41126: ; 41126 ; 41148 Function41148: ; 41148 (10:5148) - ld a, [wc7d4] + ld a, [wCurrentDexMode] cp $1 jp z, Function41157 call Function41229 @@ -2034,7 +2045,7 @@ Function41148: ; 41148 (10:5148) Function41157: ; 41157 (10:5157) ld hl, Unknown_41167 - ld a, [wc7d1] + ld a, [wDexListingCursor] or a jr nz, .asm_41163 ld hl, Unknown_411c8 @@ -2133,7 +2144,7 @@ Unknown_41230: ; 41230 ; 41281 Function41281: ; 41281 (10:5281) - ld a, [wc7d4] + ld a, [wCurrentDexMode] cp $1 jp z, Function41157 ld hl, Unknown_41290 @@ -2176,7 +2187,7 @@ Function412f1: ; 412f1 (10:52f1) ld a, [hl] cp $ff ret z - ld a, [wc7d1] + ld a, [wDexListingCursor] and $7 swap a add [hl] @@ -2196,11 +2207,11 @@ Function412f1: ; 412f1 (10:52f1) Function4130e: ; 4130e (10:530e) push de - ld a, [wc7d2] + ld a, [wDexListingEnd] dec a ld e, a - ld a, [wc7d1] - ld hl, wc7d0 + ld a, [wDexListingCursor] + ld hl, wDexListingPage add [hl] cp e jr z, .asm_4133f @@ -2213,7 +2224,7 @@ Function4130e: ; 4130e (10:530e) ld a, d or e jr z, .asm_41341 - ld a, [wc7d2] + ld a, [wDexListingEnd] ld c, a .asm_41333 ld a, e @@ -2247,6 +2258,7 @@ Function4134f: ; 4134f (10:534f) ret Function4135a: ; 4135a (10:535a) +; bc = [de] - 1 ld a, [de] ld b, a inc de @@ -2254,74 +2266,79 @@ Function4135a: ; 4135a (10:535a) dec a ld c, a inc de - call Function413e0 + call Pokedex_BlinkInfoScreenCursor + ld hl, hJoyPressed ; $ffa7 ld a, [hl] and D_LEFT | D_UP and b - jr nz, .asm_4138f + jr nz, .MoveCursorLeft ld a, [hl] and D_RIGHT | D_DOWN and b - jr nz, .asm_413a0 + jr nz, .MoveCursorRight ld a, [hl] and SELECT and b - jr nz, .asm_413c1 - call Function413f5 - jr c, .asm_413bf + jr nz, .Select + call Pokedex_CursorFrameDelay + jr c, .NoAction ld hl, hJoyLast ld a, [hl] and D_LEFT | D_UP and b - jr nz, .asm_4138f + jr nz, .MoveCursorLeft ld a, [hl] and D_RIGHT | D_DOWN and b - jr nz, .asm_413a0 - jr .asm_413bf -.asm_4138f + jr nz, .MoveCursorRight + jr .NoAction + +.MoveCursorLeft ld a, [wc7d8] and a - jr z, .asm_413bf - call Function413d4 - ld [hl], $7f + jr z, .NoAction + call Pokedex_GetCursorPosition + ld [hl], " " ld hl, wc7d8 dec [hl] - jr .asm_413af -.asm_413a0 + jr .UpdateCursorPosition + +.MoveCursorRight ld a, [wc7d8] cp c - jr nc, .asm_413bf - call Function413d4 - ld [hl], $7f + jr nc, .NoAction + call Pokedex_GetCursorPosition + ld [hl], " " ld hl, wc7d8 inc [hl] -.asm_413af - call Function413d4 - ld [hl], $ed +.UpdateCursorPosition + call Pokedex_GetCursorPosition + ld [hl], "▶" ld a, $c ld [wc7d9], a xor a ld [wc7da], a scf ret -.asm_413bf + +.NoAction and a ret -.asm_413c1 - call Function413d4 - ld [hl], $7f + +.Select + call Pokedex_GetCursorPosition + ld [hl], " " ld a, [wc7d8] cp c - jr c, .asm_413ce + jr c, .Update ld a, $ff -.asm_413ce +.Update inc a ld [wc7d8], a - jr .asm_413af + jr .UpdateCursorPosition -Function413d4: ; 413d4 (10:53d4) +Pokedex_GetCursorPosition: ; 413d4 (10:53d4) ld a, [wc7d8] add a ld l, a @@ -2332,30 +2349,32 @@ Function413d4: ; 413d4 (10:53d4) ld l, a ret -Function413e0: ; 413e0 (10:53e0) +Pokedex_BlinkInfoScreenCursor: ; 413e0 (10:53e0) ld hl, wc7da ld a, [hl] inc [hl] and $8 - jr z, .asm_413ef - call Function413d4 - ld [hl], $7f + jr z, .blink_on + call Pokedex_GetCursorPosition + ld [hl], " " ret -.asm_413ef - call Function413d4 - ld [hl], $ed + +.blink_on + call Pokedex_GetCursorPosition + ld [hl], "▶" ret -Function413f5: ; 413f5 (10:53f5) +Pokedex_CursorFrameDelay: ; 413f5 (10:53f5) ld hl, wc7d9 ld a, [hl] and a ret z + dec [hl] scf ret -Function413fe: ; 413fe (10:53fe) +Pokedex_FillBox: ; 413fe (10:53fe) jp FillBoxWithByte Function41401: ; 41401 (10:5401) @@ -2374,7 +2393,7 @@ Function41415: ; 41415 ld a, $ff call DmgToCgbBGPals ld a, $ff - call Functioncf8 + call DmgToCgbObjPal0 call DelayFrame ret @@ -2386,12 +2405,12 @@ Function41427: ; 41427 ld a, $e4 call DmgToCgbBGPals ld a, $e0 - call Functioncf8 + call DmgToCgbObjPal0 ret ; 41432 -Function41432: ; 41432 +Pokedex_LoadPointer: ; 41432 ld e, a ld d, 0 rept 2 @@ -2404,10 +2423,10 @@ endr ; 4143b Function4143b: ; 4143b - call Function40bb1 - call Function40bd0 - jr z, .asm_4145b - ld a, [wdef4] + call Pokedex_GetMonAtCursorPosition + call Pokedex_CheckSeen + jr z, .QuestionMark + ld a, [wFirstUnownSeen] ld [UnownLetter], a ld a, [wd265] ld [CurPartySpecies], a @@ -2416,10 +2435,10 @@ Function4143b: ; 4143b predef GetFrontpic ret -.asm_4145b +.QuestionMark ld a, BANK(sScratch) call GetSRAMBank - callba Function1de0d7 + callba LoadQuestionMarkPic ld hl, VTiles2 ld de, sScratch ld c, 7 * 7 @@ -2431,13 +2450,13 @@ Function4143b: ; 4143b ; 41478 -Function41478: ; 41478 (10:5478) - call Function40bb1 +Pokedex_LoadCurrentFootprint: ; 41478 (10:5478) + call Pokedex_GetMonAtCursorPosition -Function4147b: ; 4147b +Pokedex_LoadAnyFootprint: ; 4147b ld a, [wd265] dec a - and $f8 + and ($ff ^ $07) ; $f8 ; $1f << 3 srl a srl a srl a @@ -2463,7 +2482,7 @@ Function4147b: ; 4147b ; Whoever was editing footprints forgot to fix their ; tile editor. Now each bottom half is 8 tiles off. - ld de, $80 + ld de, 8 tiles add hl, de ld e, l @@ -2476,28 +2495,28 @@ Function4147b: ; 4147b ; 414b7 -Function414b7: ; 414b7 +Pokedex_LoadGFX: ; 414b7 call DisableLCD ld hl, VTiles2 - ld bc, $0310 + ld bc, $31 tiles xor a call ByteFill - call Function414fb + call Pokedex_LoadInvertedFont call LoadFontsExtra ld hl, VTiles2 tile $60 - ld bc, $0200 - call Function41504 - call Function41a24 - jr nz, .asm_414e0 - callba Function1ddf1c - jr .asm_414e9 - -.asm_414e0 + ld bc, $20 tiles + call Pokedex_InvertTiles + call Pokedex_CheckSGB + jr nz, .LoadPokedexLZ + callba LoadSGBPokedexGFX + jr .LoadPokedexSlowpokeLZ + +.LoadPokedexLZ ld hl, PokedexLZ ld de, VTiles2 tile $31 call Decompress -.asm_414e9 +.LoadPokedexSlowpokeLZ ld hl, PokedexSlowpokeLZ ld de, VTiles0 call Decompress @@ -2506,30 +2525,31 @@ Function414b7: ; 414b7 call EnableLCD ret -Function414fb: ; 414fb +Pokedex_LoadInvertedFont: ; 414fb call LoadStandardFont ld hl, VTiles1 - ld bc, $0800 + ld bc, $80 tiles -Function41504: ; 41504 +Pokedex_InvertTiles: ; 41504 +.loop ld a, [hl] xor $ff ld [hli], a dec bc ld a, b or c - jr nz, Function41504 + jr nz, .loop ret ; 4150e PokedexLZ: ; 4150e -INCBIN "gfx/unknown/04150e.2bpp.lz" +INCBIN "gfx/pokedex/pokedex.2bpp.lz" ; 416b0 PokedexSlowpokeLZ: ; 416b0 INCBIN "gfx/pokedex/slowpoke.2bpp.lz" -Function41a24: ; 41a24 +Pokedex_CheckSGB: ; 41a24 ld a, [hCGB] or a ret nz @@ -2538,26 +2558,25 @@ Function41a24: ; 41a24 ret ; 41a2c -Function41a2c: ; 41a2c +Pokedex_LoadUnownFont: ; 41a2c ld a, BANK(sScratch) call GetSRAMBank ld hl, UnownFont ld de, sScratch + $188 - ld bc, $270 + ld bc, 39 tiles ld a, BANK(UnownFont) call FarCopyBytes ld hl, sScratch + $188 - ld bc, $1b0 - call Function41504 + ld bc, 27 tiles + call Pokedex_InvertTiles ld de, sScratch + $188 ld hl, VTiles2 tile $40 - lb bc, BANK(Function41a2c), $1b + lb bc, BANK(Pokedex_LoadUnownFont), 27 call Request2bpp call CloseSRAM ret ; 41a58 - Function41a58: ; 41a58 (10:5a58) ld a, [UnownLetter] push af @@ -2576,3 +2595,68 @@ Function41a58: ; 41a58 (10:5a58) pop af ld [UnownLetter], a ret +; 41a7f + +_NewPokedexEntry: ; 41a7f + xor a + ld [hBGMapMode], a + callba Function1de247 + call Pokedex_ResetBGMapMode + call DisableLCD + call LoadStandardFont + call LoadFontsExtra + call Pokedex_LoadGFX + call Pokedex_LoadAnyFootprint + ld a, [wd265] + ld [CurPartySpecies], a + call Function407fd + call Pokedex_DrawFootprint + hlcoord 0, 17 + ld [hl], $3b + inc hl + ld bc, 19 + ld a, " " + call ByteFill + callba DisplayDexEntry + call EnableLCD + call WaitBGMap + call GetBaseData + ld de, VTiles2 + predef GetFrontpic + ld a, $4 + call Function41423 + ld a, [CurPartySpecies] + call PlayCry + ret +; 41ad7 + + +Pokedex_SetBGMapMode3: ; 41ad7 (10:5ad7) + ld a, $3 + ld [hBGMapMode], a + ld c, 4 + call DelayFrames + ret + +Pokedex_SetBGMapMode4: ; 41ae1 (10:5ae1) + ld a, $4 + ld [hBGMapMode], a + ld c, 4 + call DelayFrames + ret + +Pokedex_SetBGMapMode_3ifDMG_4ifCGB: ; 41aeb (10:5aeb) + ld a, [hCGB] + and a + jr z, .DMG + call Pokedex_SetBGMapMode4 +.DMG + call Pokedex_SetBGMapMode3 + ret + + +Pokedex_ResetBGMapMode: ; 41af7 + xor a + ld [hBGMapMode], a + ret +; 41afb diff --git a/engine/pokegear.asm b/engine/pokegear.asm index da6006853..449c6dc32 100755 --- a/engine/pokegear.asm +++ b/engine/pokegear.asm @@ -24,7 +24,7 @@ PokeGear: ; 90b8d (24:4b8d) bit 7, a jr nz, .done call Function90f04 - callba Function8cf69 + callba PlaySpriteAnimations call DelayFrame jr .loop @@ -59,8 +59,8 @@ Function90bea: ; 90bea (24:4bea) ld a, $7 ld [hWX], a call Function90c4e - callba Function8cf53 - call Function90d32 + callba ClearSpriteAnims + call InitPokegearModeIndicatorArrow ld a, 8 call SkipMusic ld a, $e3 @@ -85,8 +85,8 @@ Function90bea: ; 90bea (24:4bea) ld a, [hCGB] and a ret z - ld a, $e4 - call Functioncf8 + ld a, %11100100 + call DmgToCgbObjPal0 ret Function90c4e: ; 90c4e @@ -121,6 +121,7 @@ Function90c4e: ; 90c4e ld l, e ld a, b + ; standing sprite push af ld de, VTiles0 tile $10 ld bc, 4 tiles @@ -129,7 +130,8 @@ Function90c4e: ; 90c4e pop hl - ld de, $c0 + ; walking sprite + ld de, 12 tiles add hl, de ld de, VTiles0 tile $14 ld bc, 4 tiles @@ -148,11 +150,11 @@ FastShipGFX: ; 90cb2 INCBIN "gfx/misc/fast_ship.2bpp" ; 90d32 -Function90d32: ; 90d32 (24:4d32) +InitPokegearModeIndicatorArrow: ; 90d32 (24:4d32) depixel 4, 2, 4, 0 ld a, SPRITE_ANIM_INDEX_0D call _InitSpriteAnimStruct - ld hl, $3 + ld hl, SPRITEANIMSTRUCT_TILE_ID add hl, bc ld [hl], $0 ret @@ -199,10 +201,10 @@ Function90d70: ; 90d70 (24:4d70) call GetWorldMapLocation cp FAST_SHIP - jr z, .asm_90d95 + jr z, .FastShip cp SPECIAL_MAP - jr nz, .asm_90d8e + jr nz, .LoadLandmark ld a, [BackupMapGroup] ld b, a @@ -210,12 +212,12 @@ Function90d70: ; 90d70 (24:4d70) ld c, a call GetWorldMapLocation -.asm_90d8e +.LoadLandmark ld [wc6d8], a ld [wc6d7], a ret -.asm_90d95 +.FastShip ld [wc6d8], a ld a, NEW_BARK_TOWN ld [wc6d7], a @@ -670,8 +672,8 @@ Function9102f: ; 9102f (24:502f) Function9106a: ; 9106a push af - ld de, 0 - ld b, SPRITE_ANIM_INDEX_0A + depixel 0, 0 + ld b, SPRITE_ANIM_INDEX_WALK_CYCLE ld a, [PlayerGender] bit 0, a jr z, .asm_91079 @@ -680,7 +682,7 @@ Function9106a: ; 9106a .asm_91079 ld a, b call _InitSpriteAnimStruct - ld hl, $3 + ld hl, SPRITEANIMSTRUCT_TILE_ID add hl, bc ld [hl], $10 pop af @@ -688,10 +690,10 @@ Function9106a: ; 9106a push bc callba GetLandmarkCoords pop bc - ld hl, $4 + ld hl, SPRITEANIMSTRUCT_XCOORD add hl, bc ld [hl], e - ld hl, $5 + ld hl, SPRITEANIMSTRUCT_YCOORD add hl, bc ld [hl], d ret @@ -699,15 +701,15 @@ Function9106a: ; 9106a Function91098: ; 91098 push af - ld de, 0 + depixel 0, 0 ld a, SPRITE_ANIM_INDEX_0D call _InitSpriteAnimStruct - ld hl, $3 + ld hl, SPRITEANIMSTRUCT_TILE_ID add hl, bc ld [hl], $4 - ld hl, $2 + ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID add hl, bc - ld [hl], $0 + ld [hl], SPRITE_ANIM_SEQ_NULL pop af push bc call Function910d4 @@ -736,10 +738,10 @@ Function910d4: ; 910d4 ld e, a callba GetLandmarkCoords pop bc - ld hl, $4 + ld hl, SPRITEANIMSTRUCT_XCOORD add hl, bc ld [hl], e - ld hl, $5 + ld hl, SPRITEANIMSTRUCT_YCOORD add hl, bc ld [hl], d ret @@ -765,7 +767,7 @@ Function910f9: ; 910f9 (24:50f9) depixel 4, 10, 4, 4 ld a, SPRITE_ANIM_INDEX_14 call _InitSpriteAnimStruct - ld hl, $3 + ld hl, SPRITEANIMSTRUCT_TILE_ID add hl, bc ld [hl], $8 call _UpdateRadioStation @@ -1425,12 +1427,13 @@ INCBIN "gfx/unknown/0915db.tilemap.rle" _UpdateRadioStation: ; 9163e (24:563e) jr UpdateRadioStation -Function91640: ; 91640 (24:5640) +; called from engine/sprite_anims.asm +AnimateTuningKnob: ; 91640 (24:5640) push bc call .TuningKnob pop bc ld a, [wRadioTuningKnob] - ld hl, $6 + ld hl, SPRITEANIMSTRUCT_XOFFSET add hl, bc ld [hl], a ret @@ -1924,12 +1927,12 @@ PokegearMap: ; 91ae1 ld a, e and a jr nz, .kanto - call Function91ff2 + call LoadTownMapGFX call FillJohtoMap ret .kanto - call Function91ff2 + call LoadTownMapGFX call FillKantoMap ret ; 91af3 @@ -1944,14 +1947,14 @@ _FlyMap: ; 91af3 ld [hl], $1 xor a ld [hBGMapMode], a - callba Function8cf53 - call Function91ff2 - ld de, GFX_922e1 + callba ClearSpriteAnims + call LoadTownMapGFX + ld de, FlyMapLabelBorderGFX ld hl, VTiles2 tile $30 - lb bc, BANK(GFX_922e1), 6 + lb bc, BANK(FlyMapLabelBorderGFX), 6 call Request1bpp call FlyMap - call Function91c8f + call ret_91c8f ld b, SCGB_02 call GetSGBLayout call SetPalettes @@ -1966,7 +1969,7 @@ _FlyMap: ; 91af3 jr nz, .pressedA call FlyMapScroll call GetMapCursorCoordinates - callba Function8cf69 + callba PlaySpriteAnimations call DelayFrame jr .loop @@ -2181,10 +2184,6 @@ Flypoints: ; 91c5e const_def flypoint: MACRO -; \1\@FLY EQUS "FLY_\1" -; \1\@SPAWN EQUS "SPAWN_\1" - ; const \1\@FLY - ; db \2, \1\@SPAWN const FLY_\1 db \2, SPAWN_\1 ENDM @@ -2222,7 +2221,7 @@ KANTO_FLYPOINT EQU const_value db -1 ; 91c8f -Function91c8f: ; 91c8f +ret_91c8f: ; 91c8f ret ; 91c90 @@ -2343,7 +2342,8 @@ FlyMap: ; 91c90 ret ; 91d11 -Function91d11: ; 91d11 +_Area: ; 91d11 +; e: Current landmark ld a, [wd002] push af ld a, [wd003] @@ -2356,25 +2356,24 @@ Function91d11: ; 91d11 ld a, $1 ld [hInMenu], a - ld de, GFX_922d1 + ld de, PokedexNestIconGFX ld hl, VTiles0 tile $7f - lb bc, BANK(GFX_922d1), 1 - call Request2bpp ; actually 1bpp - - call Function91ed0 + lb bc, BANK(PokedexNestIconGFX), 1 + call Request2bpp + call .GetPlayerOrFastShipIcon ld hl, VTiles0 tile $78 - ld c, $4 + ld c, 4 call Request2bpp - call Function91ff2 + call LoadTownMapGFX call FillKantoMap - call Function91de9 + call .PlaceString_MonsNest call TownMapPals hlbgcoord 0, 0, VBGMap1 call TownMapBGUpdate call FillJohtoMap - call Function91de9 + call .PlaceString_MonsNest call TownMapPals hlbgcoord 0, 0 call TownMapBGUpdate @@ -2383,8 +2382,8 @@ Function91d11: ; 91d11 call SetPalettes xor a ld [hBGMapMode], a - xor a - call Function91e1e + xor a ; Johto + call .GetAndPlaceNest .loop call JoyTextDelay ld hl, hJoyPressed @@ -2394,12 +2393,12 @@ Function91d11: ; 91d11 ld a, [hJoypadDown] and SELECT jr nz, .select - call Function91d9b - call Function91dcd + call .LeftRightInput + call .BlinkNestIcons jr .next .select - call Function91e5a + call .HideNestsShowPlayer .next call DelayFrame @@ -2414,27 +2413,27 @@ Function91d11: ; 91d11 ret ; 91d9b -Function91d9b: ; 91d9b +.LeftRightInput: ; 91d9b ld a, [hl] - and $20 - jr nz, .asm_91da6 + and D_LEFT + jr nz, .left ld a, [hl] - and $10 - jr nz, .asm_91db7 + and D_RIGHT + jr nz, .right ret -.asm_91da6 +.left ld a, [hWY] cp $90 ret z call ClearSprites ld a, $90 ld [hWY], a - xor a - call Function91e1e + xor a ; Johto + call .GetAndPlaceNest ret -.asm_91db7 +.right ld a, [StatusFlags] bit 6, a ; hall of fame ret z @@ -2444,39 +2443,39 @@ Function91d9b: ; 91d9b call ClearSprites xor a ld [hWY], a - ld a, $1 - call Function91e1e + ld a, 1 ; Kanto + call .GetAndPlaceNest ret ; 91dcd -Function91dcd: ; 91dcd +.BlinkNestIcons: ; 91dcd ld a, [hVBlankCounter] ld e, a and $f ret nz ld a, e and $10 - jr nz, .asm_91ddc + jr nz, .copy_sprites call ClearSprites ret -.asm_91ddc +.copy_sprites hlcoord 0, 0 ld de, Sprites - ld bc, $a0 + ld bc, SpritesEnd - Sprites call CopyBytes ret ; 91de9 -Function91de9: ; 91de9 +.PlaceString_MonsNest: ; 91de9 hlcoord 0, 0 ld bc, SCREEN_WIDTH - ld a, $7f + ld a, " " call ByteFill hlcoord 0, 1 ld a, $6 ld [hli], a - ld bc, SCREEN_HEIGHT + ld bc, SCREEN_WIDTH - 2 ld a, $7 call ByteFill ld [hl], $17 @@ -2485,54 +2484,56 @@ Function91de9: ; 91de9 call PlaceString ld h, b ld l, c - ld de, String_91e16 + ld de, .String_SNest call PlaceString ret ; 91e16 -String_91e16: +.String_SNest: db "'S NEST@" ; 91e1e -Function91e1e: ; 91e1e +.GetAndPlaceNest: ; 91e1e ld [wd003], a ld e, a - callba Function2a01f + callba FindNest ; load nest landmarks into TileMap[0,0] decoord 0, 0 ld hl, Sprites -.asm_91e2e +.nestloop ld a, [de] and a - jr z, .asm_91e4d + jr z, .done_nest push de ld e, a push hl callba GetLandmarkCoords pop hl + ; load into OAM ld a, d - sub $4 + sub 4 ld [hli], a ld a, e - sub $4 + sub 4 ld [hli], a - ld a, $7f + ld a, $7f ; nest icon in this context ld [hli], a xor a ld [hli], a + ; next pop de inc de - jr .asm_91e2e + jr .nestloop -.asm_91e4d +.done_nest ld hl, Sprites decoord 0, 0 - ld bc, $a0 + ld bc, SpritesEnd - Sprites call CopyBytes ret ; 91e5a -Function91e5a: ; 91e5a - call Function91ea9 +.HideNestsShowPlayer: ; 91e5a + call .CheckPlayerLocation ret c ld a, [wd002] @@ -2540,12 +2541,12 @@ Function91e5a: ; 91e5a callba GetLandmarkCoords ld c, e ld b, d - ld de, Unknown_91e9c + ld de, .PlayerOAM ld hl, Sprites -.asm_91e70 +.ShowPlayerLoop ld a, [de] cp $80 - jr z, .asm_91e91 + jr z, .copy add b ld [hli], a @@ -2557,24 +2558,24 @@ Function91e5a: ; 91e5a inc de ld a, [de] - add $78 + add $78 ; where the player's sprite is loaded ld [hli], a inc de push bc - ld c, 0 + ld c, 0 ; RED ld a, [PlayerGender] bit 0, a - jr z, .asm_91e8c - inc c -.asm_91e8c + jr z, .got_gender + inc c ; BLUE +.got_gender ld a, c ld [hli], a pop bc - jr .asm_91e70 + jr .ShowPlayerLoop -.asm_91e91 +.copy ld hl, Sprites + $10 ld bc, SpritesEnd - (Sprites + $10) xor a @@ -2582,15 +2583,18 @@ Function91e5a: ; 91e5a ret ; 91e9c -Unknown_91e9c: ; 91e9c - db -8, -8, 0 - db -8, 0, 1 - db 0, -8, 2 - db 0, 0, 3 +.PlayerOAM: ; 91e9c + db -1 * 8, -1 * 8, 0 ; top left + db -1 * 8, 0 * 8, 1 ; top right + db 0 * 8, -1 * 8, 2 ; bottom left + db 0 * 8, 0 * 8, 3 ; bottom right db $80 ; terminator ; 91ea9 -Function91ea9: ; 91ea9 +.CheckPlayerLocation: ; 91ea9 +; Don't show the player's sprite if you're +; not in the same region as what's currently +; on the screen. ld a, [wd002] cp FAST_SHIP jr z, .johto @@ -2621,14 +2625,14 @@ Function91ea9: ; 91ea9 ret ; 91ed0 -Function91ed0: ; 91ed0 +.GetPlayerOrFastShipIcon: ; 91ed0 ld a, [wd002] cp FAST_SHIP - jr z, .asm_91ede + jr z, .FastShip callba GetPlayerIcon ret -.asm_91ede +.FastShip ld de, FastShipGFX ld b, BANK(FastShipGFX) ret @@ -2678,7 +2682,7 @@ FillTownMap: ; 91f07 hlcoord 0, 0 .loop ld a, [de] - cp $ff + cp -1 ret z ld a, [de] ld [hli], a @@ -2691,7 +2695,7 @@ TownMapPals: ; 91f13 hlcoord 0, 0 decoord 0, 0, AttrMap - ld bc, 360 + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT .loop ; Current tile ld a, [hli] @@ -2743,10 +2747,12 @@ TownMapPals: ; 91f13 ret TownMapPalMap: - db $11, $21, $22, $00, $11, $13, $54, $54, $11, $21, $22, $00 - db $11, $10, $01, $00, $11, $21, $22, $00, $00, $00, $00, $00 - db $00, $00, $44, $04, $00, $00, $00, $00, $33, $33, $33, $33 - db $33, $33, $33, $03, $33, $33, $33, $33, $00, $00, $00, $00 + dn 1, 1, 2, 1, 2, 2, 0, 0, 1, 1, 1, 3, 5, 4, 5, 4 + dn 1, 1, 2, 1, 2, 2, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0 + dn 1, 1, 2, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + dn 0, 0, 0, 0, 4, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0 + dn 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3 + dn 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0 ; 91f7b TownMapMon: ; 91f7b @@ -2766,16 +2772,16 @@ TownMapMon: ; 91f7b callba GetSpeciesIcon ; Animation/palette - ld de, 0 - ld a, $0 + depixel 0, 0 + ld a, SPRITE_ANIM_INDEX_00 call _InitSpriteAnimStruct - ld hl, 3 + ld hl, SPRITEANIMSTRUCT_TILE_ID add hl, bc - ld [hl], 8 - ld hl, 2 + ld [hl], $8 + ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID add hl, bc - ld [hl], 0 + ld [hl], SPRITE_ANIM_SEQ_NULL ret ; 91fa6 @@ -2801,17 +2807,17 @@ TownMapPlayerIcon: ; 91fa6 call Request2bpp ; Animation/palette - ld de, 0 - ld b, $0a ; Male + depixel 0, 0 + ld b, SPRITE_ANIM_INDEX_WALK_CYCLE ; Male ld a, [PlayerGender] bit 0, a - jr z, .asm_91fd3 - ld b, $1e ; Female -.asm_91fd3 + jr z, .got_gender + ld b, SPRITE_ANIM_INDEX_1E ; Female +.got_gender ld a, b call _InitSpriteAnimStruct - ld hl, $3 + ld hl, SPRITEANIMSTRUCT_TILE_ID add hl, bc ld [hl], $10 @@ -2821,16 +2827,16 @@ TownMapPlayerIcon: ; 91fa6 callba GetLandmarkCoords pop bc - ld hl, 4 + ld hl, SPRITEANIMSTRUCT_XCOORD add hl, bc ld [hl], e - ld hl, 5 + ld hl, SPRITEANIMSTRUCT_YCOORD add hl, bc ld [hl], d ret ; 0x91ff2 -Function91ff2: ; 91ff2 +LoadTownMapGFX: ; 91ff2 ld hl, TownMapGFX ld de, VTiles2 lb bc, BANK(TownMapGFX), $30 @@ -2847,14 +2853,14 @@ KantoMap: ; 92168 INCBIN "gfx/misc/kanto.bin" ; 922d1 +PokedexNestIconGFX: ; 922d1 +INCBIN "gfx/pokegear/dexmap_nest_icon.2bpp" + +FlyMapLabelBorderGFX: ; 922e1 +INCBIN "gfx/pokegear/flymap_label_border.2bpp" -GFX_922d1: ; 922d1 -INCBIN "gfx/unknown/0922d1.2bpp" -GFX_922e1: ; 922e1 -INCBIN "gfx/unknown/0922e1.2bpp" -GFX_92301: ; 92301 -INCBIN "gfx/unknown/092301.2bpp" -Function92311: ; unreferenced +Function92311: ; 92311 +; unreferenced xor a ld [wd002], a call ClearBGPalettes @@ -2866,11 +2872,11 @@ Function92311: ; unreferenced ld [hl], $1 xor a ld [hBGMapMode], a - callba Function8cf53 - call Function91ff2 - ld de, GFX_922e1 + callba ClearSpriteAnims + call LoadTownMapGFX + ld de, FlyMapLabelBorderGFX ld hl, VTiles2 tile $30 - lb bc, BANK(GFX_922e1), 6 + lb bc, BANK(FlyMapLabelBorderGFX), 6 call Request1bpp call FillKantoMap call TownMapBubble @@ -2899,9 +2905,9 @@ Function92311: ; unreferenced ld a, [hl] and A_BUTTON jr nz, .pressedA - call Function923b8 + call .HandleDPad call GetMapCursorCoordinates - callba Function8cf69 + callba PlaySpriteAnimations call DelayFrame jr .loop @@ -2934,36 +2940,36 @@ Function92311: ; unreferenced ret ; 923b8 -Function923b8: ; 923b8 +.HandleDPad: ; 923b8 ld hl, hJoyLast ld a, [hl] and D_DOWN | D_RIGHT - jr nz, .asm_923c6 + jr nz, .down_right ld a, [hl] and D_UP | D_LEFT - jr nz, .asm_923d3 + jr nz, .up_left ret -.asm_923c6 +.down_right ld hl, wd002 ld a, [hl] cp FLY_INDIGO - jr c, .asm_923d0 + jr c, .okay_dr ld [hl], -1 -.asm_923d0 +.okay_dr inc [hl] - jr .asm_923dd + jr .continue -.asm_923d3 +.up_left ld hl, wd002 ld a, [hl] and a - jr nz, .asm_923dc + jr nz, .okay_ul ld [hl], FLY_INDIGO + 1 -.asm_923dc +.okay_ul dec [hl] -.asm_923dd +.continue ld a, [wd002] cp KANTO_FLYPOINT jr c, .johto @@ -2971,14 +2977,14 @@ Function923b8: ; 923b8 call FillKantoMap xor a ld b, $9c - jr .asm_923f3 + jr .finish .johto call FillJohtoMap ld a, $90 ld b, $98 -.asm_923f3 +.finish ld [hWY], a ld a, b ld [hBGMapAddress + 1], a diff --git a/engine/predef.asm b/engine/predef.asm index 680a6b4a0..f459747bb 100644 --- a/engine/predef.asm +++ b/engine/predef.asm @@ -34,7 +34,7 @@ PredefPointers:: ; 856b add_predef Predef1 add_predef HealParty add_predef FlagPredef - add_predef DrawPartyMenuHPBar + add_predef ComputeHPBarPixels add_predef FillPP add_predef TryAddMonToParty add_predef AddTempmonToParty @@ -65,7 +65,7 @@ PredefPointers:: ; 856b add_predef ListMoves ; $20 add_predef PlaceNonFaintStatus add_predef Function50cdb - add_predef Function50c50 + add_predef ListMovePP add_predef GetGender add_predef StatsScreenInit add_predef DrawPlayerHP @@ -76,11 +76,11 @@ PredefPointers:: ; 856b add_predef PrintType add_predef PrintMonTypes add_predef GetUnownLetter - add_predef Functioncbcdd + add_predef LoadPoisonBGPals add_predef Predef2F add_predef Function9853 ; $30 add_predef Predef_LoadSGBLayout - add_predef Function91d11 + add_predef _Area add_predef CheckContestMon add_predef Predef_StartBattle add_predef Predef35 diff --git a/engine/printer.asm b/engine/printer.asm index 5330d6b3c..53eefc1aa 100755 --- a/engine/printer.asm +++ b/engine/printer.asm @@ -20,7 +20,7 @@ Function84022: ; 84022 ld a, [wJumptableIndex] ld e, a ld d, 0 - ld hl, Jumptable_84031 + ld hl, .Jumptable rept 2 add hl, de endr @@ -31,27 +31,28 @@ endr ; 84031 -Jumptable_84031: ; 84031 (21:4031) - dw Function84077 - dw Function84143 - dw Function84120 - dw Function84099 - dw Function84180 - dw Function8412e - dw Function840c5 - dw Function84180 - dw Function84120 - dw Function840de - dw Function84180 - dw Function84120 - dw Function841a1 - dw Function84063 - dw Function8406d - dw Function84120 - dw Function84103 - dw Function84071 - dw Function841b0 - dw Function841b3 +.Jumptable: ; 84031 (21:4031) + jumptable_start + jumptable Function84077 + jumptable Function84143 + jumptable Function84120 + jumptable Function84099 + jumptable Function84180 + jumptable Function8412e + jumptable Function840c5 + jumptable Function84180 + jumptable Function84120 + jumptable Function840de + jumptable Function84180 + jumptable Function84120 + jumptable Function841a1 + jumptable Function84063 + jumptable Function8406d + jumptable Function84120 + jumptable Function84103 + jumptable Function84071 + jumptable Function841b0 + jumptable Function841b3 Function84059: ; 84059 (21:4059) @@ -427,12 +428,12 @@ Unknown_842d5: db 15, 0, $00, 0, 15, 0 ; unused ; 842db -Function842db:: ; 842db +_PrinterReceive:: ; 842db ld a, [wc2d5] add a ld e, a ld d, 0 - ld hl, Jumptable_842ea + ld hl, .Jumptable add hl, de ld a, [hli] ld h, [hl] @@ -441,39 +442,40 @@ Function842db:: ; 842db ; 842ea -Jumptable_842ea: ; 842ea (21:42ea) - dw Function8432f - dw Function84330 - dw Function84339 - dw Function84343 - dw Function8434d - dw Function84357 - dw Function84361 - dw Function8438b - dw Function84395 - dw Function8439f - dw Function843a8 - dw Function843b6 - dw Function84330 - dw Function843c0 - dw Function843c9 - dw Function843c9 - dw Function843c9 - dw Function843c0 - dw Function843c9 - dw Function8439f - dw Function843a8 - dw Function843e6 - dw Function84330 - dw Function843d2 - dw Function843c9 - dw Function843c9 - dw Function843c9 - dw Function843d2 - dw Function843c9 - dw Function8439f - dw Function843a8 - dw Function843b6 +.Jumptable: ; 842ea (21:42ea) + jumptable_start + jumptable Function8432f + jumptable Function84330 + jumptable Function84339 + jumptable Function84343 + jumptable Function8434d + jumptable Function84357 + jumptable Function84361 + jumptable Function8438b + jumptable Function84395 + jumptable Function8439f + jumptable Function843a8 + jumptable Function843b6 + jumptable Function84330 + jumptable Function843c0 + jumptable Function843c9 + jumptable Function843c9 + jumptable Function843c9 + jumptable Function843c0 + jumptable Function843c9 + jumptable Function8439f + jumptable Function843a8 + jumptable Function843e6 + jumptable Function84330 + jumptable Function843d2 + jumptable Function843c9 + jumptable Function843c9 + jumptable Function843c9 + jumptable Function843d2 + jumptable Function843c9 + jumptable Function8439f + jumptable Function843a8 + jumptable Function843b6 Function8432a: ; 8432a (21:432a) @@ -672,7 +674,7 @@ PrintDexEntry: ; 8442c call Function84000 ld a, $10 ld [wcbfa], a - callba Function1dc1b0 + callba PrintPage1 call ClearTileMap ld a, $e4 call DmgToCgbBGPals @@ -694,7 +696,7 @@ PrintDexEntry: ; 8442c call Function84000 ld a, $3 ld [wcbfa], a - callba Function1dc213 + callba PrintPage2 call Function84742 ld a, $4 ld [wcf65], a diff --git a/engine/radio.asm b/engine/radio.asm index 2ee550197..433b5a89f 100644 --- a/engine/radio.asm +++ b/engine/radio.asm @@ -274,7 +274,7 @@ endr ld [CurPartySpecies], a call GetPokemonName ld hl, StringBuffer1 - ld de, wOaksPkmnTalkPkmnNameBuffer + ld de, wMonOrItemNameBuffer ld bc, PKMN_NAME_LENGTH call CopyBytes ; Now that we've chosen our wild Pokemon, diff --git a/engine/rtc.asm b/engine/rtc.asm new file mode 100755 index 000000000..1f5e1e27c --- /dev/null +++ b/engine/rtc.asm @@ -0,0 +1,210 @@ +StopRTC: ; Unreferenced??? + ld a, SRAM_ENABLE + ld [MBC3SRamEnable], a + call LatchClock + ld a, RTC_DH + ld [MBC3SRamBank], a + ld a, [MBC3RTC] + set 6, a ; halt + ld [MBC3RTC], a + call CloseSRAM + ret +; 14019 + +StartRTC: ; 14019 + ld a, SRAM_ENABLE + ld [MBC3SRamEnable], a + call LatchClock + ld a, RTC_DH + ld [MBC3SRamBank], a + ld a, [MBC3RTC] + res 6, a ; halt + ld [MBC3RTC], a + call CloseSRAM + ret +; 14032 + +GetTimeOfDay:: ; 14032 +; get time of day based on the current hour + ld a, [hHours] ; hour + ld hl, TimesOfDay + +.check +; if we're within the given time period, +; get the corresponding time of day + cp [hl] + jr c, .match +; else, get the next entry +rept 2 + inc hl +endr +; try again + jr .check + +.match +; get time of day + inc hl + ld a, [hl] + ld [TimeOfDay], a + ret +; 14044 + +TimesOfDay: ; 14044 +; hours for the time of day +; 04-09 morn | 10-17 day | 18-03 nite + db 04, NITE + db 10, MORN + db 18, DAY + db 24, NITE + db -1, MORN +; 1404e + +Unknown_1404e: ; Unreferenced + db 20, 2 + db 40, 0 + db 60, 1 + db -1, 0 +; 14056 + +StageRTCTimeForSave: ; 14056 + call UpdateTime + ld hl, wRTC + ld a, [CurDay] + ld [hli], a + ld a, [hHours] + ld [hli], a + ld a, [hMinutes] + ld [hli], a + ld a, [hSeconds] + ld [hli], a + ret +; 1406a + +SaveRTC: ; 1406a + ld a, $a + ld [MBC3SRamEnable], a + call LatchClock + ld hl, MBC3RTC + ld a, $c + ld [MBC3SRamBank], a + res 7, [hl] + ld a, BANK(sRTCStatusFlags) + ld [MBC3SRamBank], a + xor a + ld [sRTCStatusFlags], a + call CloseSRAM + ret +; 14089 + +StartClock:: ; 14089 + call GetClock + call Function1409b + call FixDays + jr nc, .skip_set + ; bit 5: Day count exceeds 139 + ; bit 6: Day count exceeds 255 + call RecordRTCStatus ; set flag on sRTCStatusFlags + +.skip_set + call StartRTC + ret +; 1409b + +Function1409b: ; 1409b + ld hl, hRTCDayHi + bit 7, [hl] + jr nz, .set_bit_7 + bit 6, [hl] + jr nz, .set_bit_7 + xor a + ret + +.set_bit_7 + ; Day count exceeds 16383 + ld a, %10000000 + call RecordRTCStatus ; set bit 7 on sRTCStatusFlags + ret +; 140ae + +Function140ae: ; 140ae + call CheckRTCStatus + ld c, a + and %11000000 ; Day count exceeded 255 or 16383 + jr nz, .time_overflow + + ld a, c + and %00100000 ; Day count exceeded 139 + jr z, .dont_update + + call UpdateTime + ld a, [wRTC + 0] + ld b, a + ld a, [CurDay] + cp b + jr c, .dont_update + +.time_overflow + callba ClearDailyTimers + callba Function170923 +; mobile + ld a, $5 + call GetSRAMBank + ld a, [$aa8c] + inc a + ld [$aa8c], a + ld a, [$b2fa] + inc a + ld [$b2fa], a + call CloseSRAM + ret + +.dont_update + xor a + ret +; 140ed + +_InitTime:: ; 140ed + call GetClock + call FixDays + ld hl, hRTCSeconds + ld de, StartSecond + + ld a, [StringBuffer2 + 3] + sub [hl] + dec hl + jr nc, .okay_secs + add 60 +.okay_secs + ld [de], a + dec de + + ld a, [StringBuffer2 + 2] + sbc [hl] + dec hl + jr nc, .okay_mins + add 60 +.okay_mins + ld [de], a + dec de + + ld a, [StringBuffer2 + 1] + sbc [hl] + dec hl + jr nc, .okay_hrs + add 24 +.okay_hrs + ld [de], a + dec de + + ld a, [StringBuffer2] + sbc [hl] + dec hl + jr nc, .okay_days + add 140 + ld c, 7 + call SimpleDivide + +.okay_days + ld [de], a + ret +; 1412a diff --git a/engine/save.asm b/engine/save.asm index 20f59c042..65faabb7a 100644 --- a/engine/save.asm +++ b/engine/save.asm @@ -18,7 +18,7 @@ SaveMenu: ; 14a1a .refused call ExitMenu - call Functiond90 + call ret_d90 callba SaveMenu_LoadEDTile scf ret @@ -182,7 +182,7 @@ AskOverwriteSaveFile: ; 14b89 ld a, [wSaveFileExists] and a jr z, .erase - call Function14bcb + call CompareLoadedAndSavedPlayerID jr z, .yoursavefile ld hl, UnknownText_0x15297 call SaveTheGame_yesorno @@ -213,17 +213,17 @@ SaveTheGame_yesorno: ; 14baf call LoadMenuTextBox lb bc, 0, 7 call PlaceYesNoBox - ld a, [MenuSelection2] + ld a, [wMenuCursorY] dec a call WriteBackup push af - call Functiond90 + call ret_d90 pop af and a ret ; 14bcb -Function14bcb: ; 14bcb +CompareLoadedAndSavedPlayerID: ; 14bcb ld a, BANK(sPlayerData) call GetSRAMBank ld hl, sPlayerData + (PlayerID - wPlayerData) @@ -291,7 +291,7 @@ SaveGameData_: ; 14c10 ld a, BANK(sBattleTowerChallengeState) call GetSRAMBank ld a, [sBattleTowerChallengeState] - cp $4 + cp BATTLETOWER_RECEIVED_REWARD jr nz, .ok xor a ld [sBattleTowerChallengeState], a @@ -373,7 +373,7 @@ ErasePreviousSave: ; 14cbb call EraseLinkBattleStats call EraseMysteryGift call SaveData - call Function14d5c + call EraseBattleTowerStatus ld a, BANK(sStackTop) call GetSRAMBank xor a @@ -437,7 +437,7 @@ Unknown_14d2c: ; 14d2c db $11, $0c, $0c, $06, $06, $04 ; 14d5c -Function14d5c: ; 14d5c +EraseBattleTowerStatus: ; 14d5c ld a, BANK(sBattleTowerChallengeState) call GetSRAMBank xor a @@ -486,7 +486,7 @@ Function14d93: ; 14d93 ; 14da0 -Function14da0: ; 14da0 +HallOfFame_InitSaveIfNeeded: ; 14da0 ld a, [wSavedAtLeastOnce] and a ret nz @@ -512,7 +512,7 @@ SaveOptions: ; 14dbb ld bc, OptionsEnd - Options call CopyBytes ld a, [Options] - and $ef + and $ff ^ (1 << NO_TEXT_SCROLL) ld [sOptions], a jp CloseSRAM ; 14dd7 @@ -791,9 +791,9 @@ LoadPlayerData: ; 14fd7 (5:4fd7) ld a, BANK(sBattleTowerChallengeState) call GetSRAMBank ld a, [sBattleTowerChallengeState] - cp $4 + cp BATTLETOWER_RECEIVED_REWARD jr nz, .not_4 - ld a, $3 + ld a, BATTLETOWER_WON_CHALLENGE ld [sBattleTowerChallengeState], a .not_4 call CloseSRAM @@ -892,7 +892,7 @@ _SaveData: ; 1509a jp CloseSRAM -Function150b9: ; 150b9 +_LoadData: ; 150b9 ld a, BANK(sCrystalData) call GetSRAMBank ld hl, sCrystalData @@ -938,8 +938,11 @@ endr ; 150f9 SaveBoxAddress: ; 150f9 +; Save box via wMisc. +; We do this in three steps because the size of wMisc is less than +; the size of sBox. push hl - +; Load the first part of the active box. push af push de ld a, BANK(sBox) @@ -951,7 +954,7 @@ SaveBoxAddress: ; 150f9 call CloseSRAM pop de pop af - +; Save it to the target box. push af push de call GetSRAMBank @@ -959,6 +962,8 @@ SaveBoxAddress: ; 150f9 ld bc, (wMiscEnd - wMisc) call CopyBytes call CloseSRAM + +; Load the second part of the active box. ld a, BANK(sBox) call GetSRAMBank ld hl, sBox + (wMiscEnd - wMisc) @@ -973,7 +978,7 @@ SaveBoxAddress: ; 150f9 add hl, de ld e, l ld d, h - +; Save it to the next part of the target box. push af push de call GetSRAMBank @@ -981,6 +986,8 @@ SaveBoxAddress: ; 150f9 ld bc, (wMiscEnd - wMisc) call CopyBytes call CloseSRAM + +; Load the third and final part of the active box. ld a, BANK(sBox) call GetSRAMBank ld hl, sBox + (wMiscEnd - wMisc) * 2 @@ -995,7 +1002,7 @@ SaveBoxAddress: ; 150f9 add hl, de ld e, l ld d, h - +; Save it to the final part of the target box. call GetSRAMBank ld hl, wMisc ld bc, sBoxEnd - (sBox + (wMiscEnd - wMisc) * 2) ; $8e @@ -1008,10 +1015,13 @@ SaveBoxAddress: ; 150f9 LoadBoxAddress: ; 1517d (5:517d) +; Load box via wMisc. +; We do this in three steps because the size of wMisc is less than +; the size of sBox. push hl ld l, e ld h, d - +; Load part 1 push af push hl call GetSRAMBank @@ -1031,7 +1041,7 @@ LoadBoxAddress: ; 1517d (5:517d) ld de, (wMiscEnd - wMisc) add hl, de - +; Load part 2 push af push hl call GetSRAMBank @@ -1048,7 +1058,7 @@ LoadBoxAddress: ; 1517d (5:517d) call CloseSRAM pop hl pop af - +; Load part 3 ld de, (wMiscEnd - wMisc) add hl, de call GetSRAMBank diff --git a/engine/scripting.asm b/engine/scripting.asm index c80343a4c..44f53ceed 100644 --- a/engine/scripting.asm +++ b/engine/scripting.asm @@ -70,178 +70,178 @@ RunScriptCommand: ; 96ca9 ScriptCommandTable: ; 96cb1 - dw Script_scall - dw Script_farscall - dw Script_ptcall - dw Script_jump - dw Script_farjump - dw Script_ptjump - dw Script_if_equal - dw Script_if_not_equal - dw Script_iffalse - dw Script_iftrue - dw Script_if_greater_than - dw Script_if_less_than - dw Script_jumpstd - dw Script_callstd - dw Script_callasm - dw Script_special - dw Script_ptcallasm - dw Script_checkmaptriggers - dw Script_domaptrigger - dw Script_checktriggers - dw Script_dotrigger - dw Script_writebyte - dw Script_addvar - dw Script_random - dw Script_checkver - dw Script_copybytetovar - dw Script_copyvartobyte - dw Script_loadvar - dw Script_checkcode - dw Script_writevarcode - dw Script_writecode - dw Script_giveitem - dw Script_takeitem - dw Script_checkitem - dw Script_givemoney - dw Script_takemoney - dw Script_checkmoney - dw Script_givecoins - dw Script_takecoins - dw Script_checkcoins - dw Script_addcellnum - dw Script_delcellnum - dw Script_checkcellnum - dw Script_checktime - dw Script_checkpoke - dw Script_givepoke - dw Script_giveegg - dw Script_givepokeitem - dw Script_checkpokeitem - dw Script_checkevent - dw Script_clearevent - dw Script_setevent - dw Script_checkflag - dw Script_clearflag - dw Script_setflag - dw Script_wildon - dw Script_wildoff - dw Script_xycompare - dw Script_warpmod - dw Script_blackoutmod - dw Script_warp - dw Script_readmoney - dw Script_readcoins - dw Script_RAM2MEM - dw Script_pokenamemem - dw Script_itemtotext - dw Script_mapnametotext - dw Script_trainertotext - dw Script_stringtotext - dw Script_itemnotify - dw Script_pocketisfull - dw Script_loadfont - dw Script_refreshscreen - dw Script_loadmovesprites - dw Script_loadbytec2cf - dw Script_farwritetext - dw Script_writetext - dw Script_repeattext - dw Script_yesorno - dw Script_loadmenudata - dw Script_writebackup - dw Script_jumptextfaceplayer + dw Script_scall ; 00 + dw Script_farscall ; 01 + dw Script_ptcall ; 02 + dw Script_jump ; 03 + dw Script_farjump ; 04 + dw Script_ptjump ; 05 + dw Script_if_equal ; 06 + dw Script_if_not_equal ; 07 + dw Script_iffalse ; 08 + dw Script_iftrue ; 09 + dw Script_if_greater_than ; 0a + dw Script_if_less_than ; 0b + dw Script_jumpstd ; 0c + dw Script_callstd ; 0d + dw Script_callasm ; 0e + dw Script_special ; 0f + dw Script_ptcallasm ; 10 + dw Script_checkmaptriggers ; 11 + dw Script_domaptrigger ; 12 + dw Script_checktriggers ; 13 + dw Script_dotrigger ; 14 + dw Script_writebyte ; 15 + dw Script_addvar ; 16 + dw Script_random ; 17 + dw Script_checkver ; 18 + dw Script_copybytetovar ; 19 + dw Script_copyvartobyte ; 1a + dw Script_loadvar ; 1b + dw Script_checkcode ; 1c + dw Script_writevarcode ; 1d + dw Script_writecode ; 1e + dw Script_giveitem ; 1f + dw Script_takeitem ; 20 + dw Script_checkitem ; 21 + dw Script_givemoney ; 22 + dw Script_takemoney ; 23 + dw Script_checkmoney ; 24 + dw Script_givecoins ; 25 + dw Script_takecoins ; 26 + dw Script_checkcoins ; 27 + dw Script_addcellnum ; 28 + dw Script_delcellnum ; 29 + dw Script_checkcellnum ; 2a + dw Script_checktime ; 2b + dw Script_checkpoke ; 2c + dw Script_givepoke ; 2d + dw Script_giveegg ; 2e + dw Script_givepokeitem ; 2f + dw Script_checkpokeitem ; 30 + dw Script_checkevent ; 31 + dw Script_clearevent ; 32 + dw Script_setevent ; 33 + dw Script_checkflag ; 34 + dw Script_clearflag ; 35 + dw Script_setflag ; 36 + dw Script_wildon ; 37 + dw Script_wildoff ; 38 + dw Script_xycompare ; 39 + dw Script_warpmod ; 3a + dw Script_blackoutmod ; 3b + dw Script_warp ; 3c + dw Script_readmoney ; 3d + dw Script_readcoins ; 3e + dw Script_RAM2MEM ; 3f + dw Script_pokenamemem ; 40 + dw Script_itemtotext ; 41 + dw Script_mapnametotext ; 42 + dw Script_trainertotext ; 43 + dw Script_stringtotext ; 44 + dw Script_itemnotify ; 45 + dw Script_pocketisfull ; 46 + dw Script_textbox ; 47 + dw Script_refreshscreen ; 48 + dw Script_closetext ; 49 + dw Script_loadbytec2cf ; 4a + dw Script_farwritetext ; 4b + dw Script_writetext ; 4c + dw Script_repeattext ; 4d + dw Script_yesorno ; 4e + dw Script_loadmenudata ; 4f + dw Script_writebackup ; 50 + dw Script_jumptextfaceplayer ; 51 IF _CRYSTAL - dw Script_farjumptext + dw Script_farjumptext ; 52 ENDC - dw Script_jumptext - dw Script_closetext - dw Script_keeptextopen - dw Script_pokepic - dw Script_pokepicyesorno - dw Script_interpretmenu - dw Script_interpretmenu2 - dw Script_loadpikachudata - dw Script_battlecheck - dw Script_loadtrainerdata - dw Script_loadpokedata - dw Script_loadtrainer - dw Script_startbattle - dw Script_returnafterbattle - dw Script_catchtutorial - dw Script_trainertext - dw Script_trainerstatus - dw Script_winlosstext - dw Script_scripttalkafter - dw Script_talkaftercancel - dw Script_talkaftercheck - dw Script_setlasttalked - dw Script_applymovement - dw Script_applymovement2 - dw Script_faceplayer - dw Script_faceperson - dw Script_variablesprite - dw Script_disappear - dw Script_appear - dw Script_follow - dw Script_stopfollow - dw Script_moveperson - dw Script_writepersonxy - dw Script_loademote - dw Script_showemote - dw Script_spriteface - dw Script_follownotexact - dw Script_earthquake - dw Script_changemap - dw Script_changeblock - dw Script_reloadmap - dw Script_reloadmappart - dw Script_writecmdqueue - dw Script_delcmdqueue - dw Script_playmusic - dw Script_playrammusic - dw Script_musicfadeout - dw Script_playmapmusic - dw Script_reloadmapmusic - dw Script_cry - dw Script_playsound - dw Script_waitbutton - dw Script_warpsound - dw Script_specialsound - dw Script_passtoengine - dw Script_newloadmap - dw Script_pause - dw Script_deactivatefacing - dw Script_priorityjump - dw Script_warpcheck - dw Script_ptpriorityjump - dw Script_return - dw Script_end - dw Script_reloadandreturn - dw Script_resetfuncs - dw Script_pokemart - dw Script_elevator - dw Script_trade - dw Script_askforphonenumber - dw Script_phonecall - dw Script_hangup - dw Script_describedecoration - dw Script_fruittree - dw Script_specialphonecall - dw Script_checkphonecall - dw Script_verbosegiveitem - dw Script_verbosegiveitem2 - dw Script_loadwilddata - dw Script_halloffame - dw Script_credits - dw Script_warpfacing - dw Script_battletowertext - dw Script_displaylocation - dw Script_trainerclassname - dw Script_name - dw Script_wait - dw Script_check_save + dw Script_jumptext ; 53 + dw Script_waitbutton ; 54 + dw Script_buttonsound ; 55 + dw Script_pokepic ; 56 + dw Script_closepokepic ; 57 + dw Script__2dmenu ; 58 + dw Script_verticalmenu ; 59 + dw Script_loadpikachudata ; 5a + dw Script_randomwildmon ; 5b + dw Script_loadmemtrainer ; 5c + dw Script_loadwildmon ; 5d + dw Script_loadtrainer ; 5e + dw Script_startbattle ; 5f + dw Script_returnafterbattle ; 60 + dw Script_catchtutorial ; 61 + dw Script_trainertext ; 62 + dw Script_trainerflagaction ; 63 + dw Script_winlosstext ; 64 + dw Script_scripttalkafter ; 65 + dw Script_end_if_just_battled ; 66 + dw Script_check_just_battled ; 67 + dw Script_setlasttalked ; 68 + dw Script_applymovement ; 69 + dw Script_applymovement2 ; 6a + dw Script_faceplayer ; 6b + dw Script_faceperson ; 6c + dw Script_variablesprite ; 6d + dw Script_disappear ; 6e + dw Script_appear ; 6f + dw Script_follow ; 70 + dw Script_stopfollow ; 71 + dw Script_moveperson ; 72 + dw Script_writepersonxy ; 73 + dw Script_loademote ; 74 + dw Script_showemote ; 75 + dw Script_spriteface ; 76 + dw Script_follownotexact ; 77 + dw Script_earthquake ; 78 + dw Script_changemap ; 79 + dw Script_changeblock ; 7a + dw Script_reloadmap ; 7b + dw Script_reloadmappart ; 7c + dw Script_writecmdqueue ; 7d + dw Script_delcmdqueue ; 7e + dw Script_playmusic ; 7f + dw Script_encountermusic ; 80 + dw Script_musicfadeout ; 81 + dw Script_playmapmusic ; 82 + dw Script_reloadmapmusic ; 83 + dw Script_cry ; 84 + dw Script_playsound ; 85 + dw Script_waitsfx ; 86 + dw Script_warpsound ; 87 + dw Script_specialsound ; 88 + dw Script_passtoengine ; 89 + dw Script_newloadmap ; 8a + dw Script_pause ; 8b + dw Script_deactivatefacing ; 8c + dw Script_priorityjump ; 8d + dw Script_warpcheck ; 8e + dw Script_ptpriorityjump ; 8f + dw Script_return ; 90 + dw Script_end ; 91 + dw Script_reloadandreturn ; 92 + dw Script_end_all ; 93 + dw Script_pokemart ; 94 + dw Script_elevator ; 95 + dw Script_trade ; 96 + dw Script_askforphonenumber ; 97 + dw Script_phonecall ; 98 + dw Script_hangup ; 99 + dw Script_describedecoration ; 9a + dw Script_fruittree ; 9b + dw Script_specialphonecall ; 9c + dw Script_checkphonecall ; 9d + dw Script_verbosegiveitem ; 9e + dw Script_verbosegiveitem2 ; 9f + dw Script_swarm ; a0 + dw Script_halloffame ; a1 + dw Script_credits ; a2 + dw Script_warpfacing ; a3 + dw Script_battletowertext ; a4 + dw Script_landmarktotext ; a5 + dw Script_trainerclassname ; a6 + dw Script_name ; a7 + dw Script_wait ; a8 + dw Script_check_save ; a9 ; 96e05 StartScript: ; 96e05 @@ -316,11 +316,11 @@ Script_jumptextfaceplayer: ; 96e45 ; text_pointer (RawTextPointerLabelParam) ld a, [ScriptBank] - ld [wd44e], a + ld [wScriptTextBank], a call GetScriptByte - ld [wd44f], a + ld [wScriptTextAddr], a call GetScriptByte - ld [wd450], a + ld [wScriptTextAddr + 1], a ld b, BANK(JumpTextFacePlayerScript) ld hl, JumpTextFacePlayerScript jp ScriptJump @@ -332,11 +332,11 @@ Script_jumptext: ; 96e5f ; text_pointer (RawTextPointerLabelParam) ld a, [ScriptBank] - ld [wd44e], a + ld [wScriptTextBank], a call GetScriptByte - ld [wd44f], a + ld [wScriptTextAddr], a call GetScriptByte - ld [wd450], a + ld [wScriptTextAddr + 1], a ld b, BANK(JumpTextScript) ld hl, JumpTextScript jp ScriptJump @@ -345,10 +345,10 @@ Script_jumptext: ; 96e5f JumpTextFacePlayerScript: ; 96e79 faceplayer JumpTextScript: ; 96e7a - loadfont + opentext repeattext -1, -1 + waitbutton closetext - loadmovesprites end ; 96e81 @@ -361,11 +361,11 @@ Script_farjumptext: ; 96e81 ; text_pointer (PointerLabelBeforeBank) call GetScriptByte - ld [wd44e], a + ld [wScriptTextBank], a call GetScriptByte - ld [wd44f], a + ld [wScriptTextAddr], a call GetScriptByte - ld [wd450], a + ld [wScriptTextAddr + 1], a ld b, BANK(JumpTextScript) ld hl, JumpTextScript jp ScriptJump @@ -419,7 +419,7 @@ Script_repeattext: ; 96ebb ld a, l cp -1 jr nz, .done - ld hl, wd44e + ld hl, wScriptTextBank ld a, [hli] ld b, a ld a, [hli] @@ -427,17 +427,18 @@ Script_repeattext: ; 96ebb ld l, a call MapTextbox ret + .done ret ; 96ed9 -Script_closetext: ; 96ed9 +Script_waitbutton: ; 96ed9 ; script command 0x54 - jp CloseText + jp WaitButton ; 96edc -Script_keeptextopen: ; 96edc +Script_buttonsound: ; 96edc ; script command 0x55 ld a, [hOAMUpdate] @@ -445,7 +446,7 @@ Script_keeptextopen: ; 96edc ld a, $1 ld [hOAMUpdate], a call WaitBGMap - call KeepTextOpen + call ButtonSound pop af ld [hOAMUpdate], a ret @@ -455,9 +456,9 @@ Script_yesorno: ; 96eed ; script command 0x4e call YesNoBox - ld a, 0 + ld a, FALSE jr c, .no - ld a, 1 + ld a, TRUE .no ld [ScriptVar], a ret @@ -502,20 +503,20 @@ Script_pokepic: ; 96f16 ret ; 96f29 -Script_pokepicyesorno: ; 96f29 +Script_closepokepic: ; 96f29 ; script command 0x57 - callba PokepicYesOrNo + callba ClosePokepic ret ; 96f30 -Script_interpretmenu2: ; 96f30 +Script_verticalmenu: ; 96f30 ; script command 0x59 ld a, [ScriptBank] - ld hl, InterpretMenu2 + ld hl, VerticalMenu rst FarCall - ld a, [MenuSelection2] + ld a, [wMenuCursorY] jr nc, .ok xor a .ok @@ -523,11 +524,11 @@ Script_interpretmenu2: ; 96f30 ret ; 96f41 -Script_interpretmenu: ; 96f41 +Script__2dmenu: ; 96f41 ; script command 0x58 ld a, [ScriptBank] - ld hl, InterpretMenu + ld hl, _2DMenu rst FarCall ld a, [wMenuCursorBuffer] jr nc, .ok @@ -575,14 +576,14 @@ GiveItemScript: ; 96f77 callasm ret_96f76 writetext ReceivedItemText iffalse .Full - waitbutton + waitsfx specialsound - closetext + waitbutton itemnotify end .Full - keeptextopen + buttonsound pocketisfull end ; 96f89 @@ -611,7 +612,7 @@ Script_verbosegiveitem2: ; 96f8e ld [wItemQuantityChangeBuffer], a ld hl, NumItems call ReceiveItem - ld a, 1 + ld a, TRUE jr c, .ok2 xor a .ok2 @@ -748,7 +749,7 @@ Script_elevator: ; 9707c ld b, a callba Elevator ret c - ld a, $1 + ld a, TRUE ld [ScriptVar], a ret ; 97099 @@ -835,7 +836,7 @@ Script_fruittree: ; 970ee jp ScriptJump ; 970fc -Script_loadwilddata: ; 970fc +Script_swarm: ; 970fc ; script command 0xa0 ; parameters: ; flag (SingleByteParam) @@ -848,7 +849,7 @@ Script_loadwilddata: ; 970fc ld d, a call GetScriptByte ld e, a - callba LoadWildData + callba StoreSwarmMapIndices ret ; 9710f @@ -876,7 +877,7 @@ endr Script_scripttalkafter: ; 97125 ; script command 0x65 - ld hl, wd04b + ld hl, wScriptAfterPointer ld a, [hli] ld h, [hl] ld l, a @@ -885,7 +886,7 @@ Script_scripttalkafter: ; 97125 jp ScriptJump ; 97132 -Script_trainerstatus: ; 97132 +Script_trainerflagaction: ; 97132 ; script command 0x63 ; parameters: ; action (SingleByteParam) @@ -902,7 +903,7 @@ Script_trainerstatus: ; 97132 ld a, c and a ret z - ld a, 1 + ld a, TRUE ld [ScriptVar], a ret ; 9714c @@ -926,7 +927,7 @@ Script_winlosstext: ; 9714c ret ; 97163 -Script_talkaftercancel: ; 97163 +Script_end_if_just_battled: ; 97163 ; script command 0x66 ld a, [wRunningTrainerBattleScript] @@ -935,10 +936,10 @@ Script_talkaftercancel: ; 97163 jp Script_end ; 9716b -Script_talkaftercheck: ; 9716b +Script_check_just_battled: ; 9716b ; script command 0x67 - ld a, 1 + ld a, TRUE ld [ScriptVar], a ld a, [wRunningTrainerBattleScript] and a @@ -948,7 +949,7 @@ Script_talkaftercheck: ; 9716b ret ; 9717a -Script_playrammusic: ; 9717a +Script_encountermusic: ; 9717a ; script command 0x80 ld a, [OtherTrainerClass] @@ -1011,7 +1012,7 @@ Script_playsound: ; 971b7 ret ; 971c3 -Script_waitbutton: ; 971c3 +Script_waitsfx: ; 971c3 ; script command 0x86 call WaitSFX @@ -1481,7 +1482,7 @@ Script_loadpikachudata: ; 973f0 ret ; 973fb -Script_battlecheck: ; 973fb +Script_randomwildmon: ; 973fb ; script command 0x5b xor a @@ -1489,19 +1490,19 @@ Script_battlecheck: ; 973fb ret ; 97400 -Script_loadtrainerdata: ; 97400 +Script_loadmemtrainer: ; 97400 ; script command 0x5c ld a, (1 << 7) | 1 ld [wBattleScriptFlags], a - ld a, [WalkingDirection] + ld a, [wTempTrainerClass] ld [OtherTrainerClass], a - ld a, [FacingDirection] + ld a, [wTempTrainerID] ld [OtherTrainerID], a ret ; 97412 -Script_loadpokedata: ; 97412 +Script_loadwildmon: ; 97412 ; script command 0x5d ; parameters: ; pokemon (PokemonParam) @@ -1654,7 +1655,7 @@ ScriptCall: ; 974cb ld e, [hl] inc [hl] ld d, $0 - ld hl, wScriptStackBA1 + ld hl, wScriptStack rept 3 add hl, de endr @@ -1862,11 +1863,11 @@ Script_priorityjump: ; 975aa ; pointer (ScriptPointerLabelParam) ld a, [ScriptBank] - ld [wd44e], a + ld [wPriorityScriptBank], a call GetScriptByte - ld [wd44f], a + ld [wPriorityScriptAddr], a call GetScriptByte - ld [wd450], a + ld [wPriorityScriptAddr + 1], a ld hl, ScriptFlags set 3, [hl] ret @@ -2185,7 +2186,7 @@ ConvertLandmarkToText: ; 976f4 jp ConvertMemToText ; 97701 -Script_displaylocation: ; 97701 +Script_landmarktotext: ; 97701 ; script command 0xa5 ; parameters: ; id (SingleByteParam) @@ -2362,7 +2363,7 @@ Script_giveitem: ; 977ca ld hl, NumItems call ReceiveItem jr nc, .full - ld a, $1 + ld a, TRUE ld [ScriptVar], a ret .full @@ -2384,11 +2385,11 @@ Script_takeitem: ; 977f0 call GetScriptByte ld [wItemQuantityChangeBuffer], a ld a, -1 - ld [ItemCountBuffer], a + ld [CurItemQuantity], a ld hl, NumItems call TossItem ret nc - ld a, $1 + ld a, TRUE ld [ScriptVar], a ret ; 97812 @@ -2405,7 +2406,7 @@ Script_checkitem: ; 97812 ld hl, NumItems call CheckItem ret nc - ld a, 1 + ld a, TRUE ld [ScriptVar], a ret ; 97829 @@ -2534,7 +2535,7 @@ Script_checktime: ; 978ae call GetScriptByte and c ret z - ld a, $1 + ld a, TRUE ld [ScriptVar], a ret ; 978c3 @@ -2551,7 +2552,7 @@ Script_checkpoke: ; 978c3 ld de, 1 call IsInArray ret nc - ld a, 1 + ld a, TRUE ld [ScriptVar], a ret ; 978da @@ -2567,7 +2568,7 @@ Script_addcellnum: ; 978da ld c, a callba AddPhoneNumber ret nc - ld a, $1 + ld a, TRUE ld [ScriptVar], a ret ; 978ef @@ -2583,7 +2584,7 @@ Script_delcellnum: ; 978ef ld c, a callba DelCellNum ret nc - ld a, $1 + ld a, TRUE ld [ScriptVar], a ret ; 97904 @@ -2600,7 +2601,7 @@ Script_checkcellnum: ; 97904 ld c, a callba CheckCellNum ret nc - ld a, $1 + ld a, TRUE ld [ScriptVar], a ret ; 97919 @@ -2624,7 +2625,7 @@ Script_checkphonecall: ; 97926 ld a, [wSpecialPhoneCallID] and a jr z, .ok - ld a, 1 + ld a, TRUE .ok ld [ScriptVar], a ret @@ -2728,7 +2729,7 @@ Script_checkevent: ; 979a4 ld a, c and a jr z, .false - ld a, 1 + ld a, TRUE .false ld [ScriptVar], a ret @@ -2743,7 +2744,7 @@ Script_setflag: ; 979bb ld e, a call GetScriptByte ld d, a - ld b, 1 ; set + ld b, SET_FLAG call _EngineFlagAction ret ; 979c9 @@ -2757,7 +2758,7 @@ Script_clearflag: ; 979c9 ld e, a call GetScriptByte ld d, a - ld b, 0 ; clear + ld b, RESET_FLAG call _EngineFlagAction ret ; 979d7 @@ -2776,7 +2777,7 @@ Script_checkflag: ; 979d7 ld a, c and a jr z, .false - ld a, 1 + ld a, TRUE .false ld [ScriptVar], a ret @@ -3025,10 +3026,10 @@ Script_reloadandreturn: ; 97b16 jp Script_end ; 97b1c -Script_loadfont: ; 97b1c +Script_textbox: ; 97b1c ; script command 0x47 - call LoadFont + call OpenText ret ; 97b20 @@ -3053,15 +3054,15 @@ Script_loadbytec2cf: ; 97b27 ; 97b2e -LoadMoveSpritesScript: ; 97b2e - loadmovesprites +CloseTextScript: ; 97b2e + closetext ; 97b2f -Script_loadmovesprites: ; 97b2f +Script_closetext: ; 97b2f ; script command 0x49 call Function2e20 - call LoadMoveSprites + call CloseText ret ; 97b36 @@ -3165,7 +3166,7 @@ ExitScriptSubroutine: ; 97b9a dec [hl] ld e, [hl] ld d, $0 - ld hl, wScriptStackBA1 + ld hl, wScriptStack rept 3 add hl,de endr @@ -3186,7 +3187,7 @@ endr ret ; 97bc0 -Script_resetfuncs: ; 97bc0 +Script_end_all: ; 97bc0 ; script command 0x93 xor a @@ -3210,17 +3211,15 @@ Script_halloffame: ; 97bd5 callba HallOfFame ld hl, GameTimerPause set 0, [hl] - jr DisplayCredits + jr ReturnFromCredits ; 97bf3 Script_credits: ; 97bf3 ; script command 0xa2 callba RedCredits - ; fallthrough - -DisplayCredits: - call Script_resetfuncs +ReturnFromCredits: + call Script_end_all ld a, $3 call LoadMapStatus call StopScript diff --git a/engine/scrolling_menu.asm b/engine/scrolling_menu.asm new file mode 100755 index 000000000..b09453239 --- /dev/null +++ b/engine/scrolling_menu.asm @@ -0,0 +1,543 @@ +_InitScrollingMenu:: ; 245af + xor a + ld [wMenuJoypad], a + ld [hBGMapMode], a + inc a + ld [hInMenu], a + call InitScrollingMenuCursor + call ScrollingMenu_InitFlags + call ScrollingMenu_ValidateSwitchItem + call ScrollingMenu_InitDisplay + call ApplyTilemap + xor a + ld [hBGMapMode], a + ret +; 245cb + +_ScrollingMenu:: ; 245cb +.loop + call ScrollingMenuJoyAction + jp c, .exit + call z, .zero + jr .loop +; 245d6 + +.exit: ; 245d6 + call MenuClickSound + ld [wMenuJoypad], a + ld a, 0 + ld [hInMenu], a + ret +; 245e1 + +.zero: ; 245e1 + call ScrollingMenu_InitDisplay + ld a, 1 + ld [hBGMapMode], a + ld c, 3 + call DelayFrames + xor a + ld [hBGMapMode], a + ret +; 245f1 + +ScrollingMenu_InitDisplay: ; 245f1 + xor a + ld [hBGMapMode], a + ld hl, Options + ld a, [hl] + push af + set NO_TEXT_SCROLL, [hl] + call ScrollingMenu_UpdateDisplay + call ScrollingMenu_PlaceCursor + call ScrollingMenu_CheckCallFunction3 + pop af + ld [Options], a + ret +; 24609 + +ScrollingMenuJoyAction: ; 24609 +.loop + call ScrollingMenuJoypad + ld a, [hJoyLast] + and D_PAD + ld b, a + ld a, [hJoyPressed] + and BUTTONS + or b + bit 0, a ; A + jp nz, .a_button + bit 1, a ; B + jp nz, .b_button + bit 2, a ; Select + jp nz, .select + bit 3, a ; Start + jp nz, .start + bit 4, a ; Right + jp nz, .d_right + bit 5, a ; Left + jp nz, .d_left + bit 6, a ; Up + jp nz, .d_up + bit 7, a ; Down + jp nz, .d_down + jr .loop +; 24640 + +.unreferenced: ; unreferenced + ld a, -1 + and a + ret +; 24644 + +.a_button: ; 24644 + call PlaceHollowCursor + ld a, [wMenuCursorY] + dec a + call ScrollingMenu_GetListItemCoordAndFunctionArgs + ld a, [MenuSelection] + ld [CurItem], a + ld a, [MenuSelectionQuantity] + ld [wItemQuantityBuffer], a + call ScrollingMenu_GetCursorPosition + dec a + ld [wScrollingMenuCursorPosition], a + ld [CurItemQuantity], a + ld a, [MenuSelection] + cp -1 + jr z, .b_button + ld a, A_BUTTON + scf + ret +; 2466f + +.b_button: ; 2466f + ld a, B_BUTTON + scf + ret +; 24673 + +.select: ; 24673 + ld a, [wMenuData2Flags] + bit 7, a + jp z, xor_a_dec_a + ld a, [wMenuCursorY] + dec a + call ScrollingMenu_GetListItemCoordAndFunctionArgs + ld a, [MenuSelection] + cp -1 + jp z, xor_a_dec_a + call ScrollingMenu_GetCursorPosition + dec a + ld [wScrollingMenuCursorPosition], a + ld a, SELECT + scf + ret +; 24695 + +.start: ; 24695 + ld a, [wMenuData2Flags] + bit 6, a + jp z, xor_a_dec_a + ld a, START + scf + ret +; 246a1 + +.d_left: ; 246a1 + ld hl, w2DMenuFlags2 + bit 7, [hl] + jp z, xor_a_dec_a + ld a, [wMenuData2Flags] + bit 3, a + jp z, xor_a_dec_a + ld a, D_LEFT + scf + ret +; 246b5 + +.d_right: ; 246b5 + ld hl, w2DMenuFlags2 + bit 7, [hl] + jp z, xor_a_dec_a + ld a, [wMenuData2Flags] + bit 2, a + jp z, xor_a_dec_a + ld a, D_RIGHT + scf + ret +; 246c9 + +.d_up: ; 246c9 + ld hl, w2DMenuFlags2 + bit 7, [hl] + jp z, xor_a + ld hl, wMenuScrollPosition + ld a, [hl] + and a + jr z, .xor_dec_up + dec [hl] + jp xor_a + +.xor_dec_up + jp xor_a_dec_a +; 246df + +.d_down: ; 246df + ld hl, w2DMenuFlags2 + bit 7, [hl] + jp z, xor_a + ld hl, wMenuScrollPosition + ld a, [wMenuData2_ScrollingMenuHeight] + add [hl] + ld b, a + ld a, [wScrollingMenuListSize] + cp b + jr c, .xor_dec_down + inc [hl] + jp xor_a + +.xor_dec_down + jp xor_a_dec_a +; 246fc + +ScrollingMenu_GetCursorPosition: ; 246fc + ld a, [wMenuScrollPosition] + ld c, a + ld a, [wMenuCursorY] + add c + ld c, a + ret +; 24706 + +Function24706: ; 24706 (9:4706) + call MenuBoxCoord2Tile + ld de, SCREEN_WIDTH + add hl, de + ld de, 2 * SCREEN_WIDTH + ld a, [wMenuData2_ScrollingMenuHeight] +.asm_24713 + ld [hl], " " + add hl, de + dec a + jr nz, .asm_24713 + ret + +InitScrollingMenuCursor: ; 2471a + ld hl, wMenuData2_ItemsPointerAddr + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [wMenuData2_ItemsPointerBank] + call GetFarByte + ld [wScrollingMenuListSize], a + ld a, [wMenuData2_ScrollingMenuHeight] + ld c, a + ld a, [wMenuScrollPosition] + add c + ld c, a + ld a, [wScrollingMenuListSize] + inc a + cp c + jr nc, .skip + ld a, [wMenuData2_ScrollingMenuHeight] + ld c, a + ld a, [wScrollingMenuListSize] + inc a + sub c + jr nc, .store + xor a + +.store + ld [wMenuScrollPosition], a + +.skip + ld a, [wMenuScrollPosition] + ld c, a + ld a, [wMenuCursorBuffer] + add c + ld b, a + ld a, [wScrollingMenuListSize] + inc a + cp b + jr c, .asm_2475a + jr nc, .asm_24763 + +.asm_2475a + xor a + ld [wMenuScrollPosition], a + ld a, $1 + ld [wMenuCursorBuffer], a + +.asm_24763 + ret +; 24764 + +ScrollingMenu_InitFlags: ; 24764 + ld a, [wMenuData2Flags] + ld c, a + ld a, [wScrollingMenuListSize] + ld b, a + ld a, [wMenuBorderTopCoord] + add 1 + ld [w2DMenuCursorInitY], a + ld a, [wMenuBorderLeftCoord] + add 0 + ld [w2DMenuCursorInitX], a + ld a, [wMenuData2_ScrollingMenuHeight] + cp b + jr c, .no_extra_row + jr z, .no_extra_row + ld a, b + inc a +.no_extra_row + ld [w2DMenuNumRows], a + ld a, 1 + ld [w2DMenuNumCols], a + ld a, $8c + bit 2, c + jr z, .skip_set_0 + set 0, a + +.skip_set_0 + bit 3, c + jr z, .skip_set_1 + set 1, a + +.skip_set_1 + ld [w2DMenuFlags1], a + xor a + ld [w2DMenuFlags2], a + ld a, $20 + ld [w2DMenuCursorOffsets], a + ld a, A_BUTTON | B_BUTTON | D_UP | D_DOWN + bit 7, c + jr z, .disallow_select + add SELECT + +.disallow_select + bit 6, c + jr z, .disallow_start + add START + +.disallow_start + ld [wMenuJoypadFilter], a + ld a, [w2DMenuNumRows] + ld b, a + ld a, [wMenuCursorBuffer] + and a + jr z, .reset_cursor + cp b + jr z, .cursor_okay + jr c, .cursor_okay + +.reset_cursor + ld a, 1 + +.cursor_okay + ld [wMenuCursorY], a + ld a, 1 + ld [wMenuCursorX], a + xor a + ld [wCursorCurrentTile], a + ld [wCursorCurrentTile + 1], a + ld [wCursorOffCharacter], a + ret +; 247dd + +ScrollingMenu_ValidateSwitchItem: ; 247dd + ld a, [wScrollingMenuListSize] + ld c, a + ld a, [wSwitchItem] + and a + jr z, .done + dec a + cp c + jr c, .done + xor a + ld [wSwitchItem], a + +.done + ret +; 247f0 + +ScrollingMenu_UpdateDisplay: ; 247f0 + call ClearWholeMenuBox + ld a, [wMenuData2Flags] + bit 4, a ; place arrows + jr z, .okay + ld a, [wMenuScrollPosition] + and a + jr z, .okay + ld a, [wMenuBorderTopCoord] + ld b, a + ld a, [wMenuBorderRightCoord] + ld c, a + call Coord2Tile + ld [hl], "▲" + +.okay + call MenuBoxCoord2Tile + ld bc, SCREEN_WIDTH + 1 + add hl, bc + ld a, [wMenuData2_ScrollingMenuHeight] + ld b, a + ld c, $0 +.loop + ld a, [wMenuScrollPosition] + add c + ld [wScrollingMenuCursorPosition], a + ld a, c + call ScrollingMenu_GetListItemCoordAndFunctionArgs + ld a, [MenuSelection] + cp -1 + jr z, .cancel + push bc + push hl + call ScrollingMenu_CallFunctions1and2 + pop hl + ld bc, 2 * SCREEN_WIDTH + add hl, bc + pop bc + inc c + ld a, c + cp b + jr nz, .loop + ld a, [wMenuData2Flags] + bit 4, a ; place arrows + jr z, .done + ld a, [wMenuBorderBottomCoord] + ld b, a + ld a, [wMenuBorderRightCoord] + ld c, a + call Coord2Tile + ld [hl], "▼" + +.done + ret + +.cancel + ld a, [wMenuData2Flags] + bit 0, a ; call function on cancel + jr nz, .call_function + ld de, .string_2485f + call PlaceString + ret + +.string_2485f + db "CANCEL@" + +.call_function + ld d, h + ld e, l + ld hl, wMenuData2_ScrollingMenuFunction1 + jp CallPointerAt +; 2486e + +ScrollingMenu_CallFunctions1and2: ; 2486e + push hl + ld d, h + ld e, l + ld hl, wMenuData2_ScrollingMenuFunction1 + call CallPointerAt + pop hl + ld a, [wMenuData2_ScrollingMenuWidth] + and a + jr z, .done + ld e, a + ld d, $0 + add hl, de + ld d, h + ld e, l + ld hl, wMenuData2_ScrollingMenuFunction2 + call CallPointerAt + +.done + ret +; 2488b + +ScrollingMenu_PlaceCursor: ; 2488b + ld a, [wSwitchItem] + and a + jr z, .done + ld b, a + ld a, [wMenuScrollPosition] + cp b + jr nc, .done + ld c, a + ld a, [wMenuData2_ScrollingMenuHeight] + add c + cp b + jr c, .done + ld a, b + sub c + dec a + add a + add $1 + ld c, a + ld a, [wMenuBorderTopCoord] + add c + ld b, a + ld a, [wMenuBorderLeftCoord] + add $0 + ld c, a + call Coord2Tile + ld [hl], "▷" + +.done + ret +; 248b8 + +ScrollingMenu_CheckCallFunction3: ; 248b8 + ld a, [wMenuData2Flags] + bit 5, a ; call function 3 + ret z + bit 1, a ; call function 3 if not switching items + jr z, .call + ld a, [wSwitchItem] + and a + ret nz + +.call + ld a, [wMenuCursorY] + dec a + call ScrollingMenu_GetListItemCoordAndFunctionArgs + ld hl, wMenuData2_ScrollingMenuFunction3 + call CallPointerAt + ret +; 248d5 + +ScrollingMenu_GetListItemCoordAndFunctionArgs: ; 248d5 + push de + push hl + ld e, a + ld a, [wMenuScrollPosition] + add e + ld e, a + ld d, $0 + ld hl, wMenuData2_ItemsPointerAddr + ld a, [hli] + ld h, [hl] + ld l, a + inc hl ; items + ld a, [wMenuData2_ScrollingMenuSpacing] + cp 1 + jr z, .got_spacing + cp 2 + jr z, .pointless_jump +.pointless_jump + add hl, de +.got_spacing + add hl, de + ld a, [wMenuData2_ItemsPointerBank] + call GetFarByte + ld [MenuSelection], a + ld [CurItem], a + inc hl + ld a, [wMenuData2_ItemsPointerBank] + call GetFarByte + ld [MenuSelectionQuantity], a + pop hl + pop de + ret +; 2490c diff --git a/engine/search.asm b/engine/search.asm new file mode 100755 index 000000000..662623296 --- /dev/null +++ b/engine/search.asm @@ -0,0 +1,276 @@ +SpecialBeastsCheck: ; 0x4a6e8 +; Check if the player owns all three legendary beasts. +; They must exist in either party or PC, and have the player's OT and ID. +; Return the result in ScriptVar. + + ld a, RAIKOU + ld [ScriptVar], a + call CheckOwnMonAnywhere + jr nc, .notexist + + ld a, ENTEI + ld [ScriptVar], a + call CheckOwnMonAnywhere + jr nc, .notexist + + ld a, SUICUNE + ld [ScriptVar], a + call CheckOwnMonAnywhere + jr nc, .notexist + + ; they exist + ld a, 1 + ld [ScriptVar], a + ret + +.notexist + xor a + ld [ScriptVar], a + ret + + +SpecialMonCheck: ; 0x4a711 +; Check if the player owns any monsters of the species in ScriptVar. +; Return the result in ScriptVar. + + call CheckOwnMonAnywhere + jr c, .exists + + ; doesn't exist + xor a + ld [ScriptVar], a + ret + +.exists + ld a, 1 + ld [ScriptVar], a + ret + + +CheckOwnMonAnywhere: ; 0x4a721 +; Check if the player owns any monsters of the species in ScriptVar. +; It must exist in either party or PC, and have the player's OT and ID. + + ; If there are no monsters in the party, + ; the player must not own any yet. + ld a, [PartyCount] + and a + ret z + + ld d, a + ld e, 0 + ld hl, PartyMon1Species + ld bc, PartyMonOT + + ; Run CheckOwnMon on each Pokémon in the party. +.partymon + call CheckOwnMon + ret c ; found! + + push bc + ld bc, PARTYMON_STRUCT_LENGTH + add hl, bc + pop bc + call UpdateOTPointer + dec d + jr nz, .partymon + + ; Run CheckOwnMon on each Pokémon in the PC. + ld a, BANK(sBoxCount) + call GetSRAMBank + ld a, [sBoxCount] + and a + jr z, .boxes + + ld d, a + ld hl, sBoxMon1Species + ld bc, sBoxMonOT +.openboxmon + call CheckOwnMon + jr nc, .loop + + ; found! + call CloseSRAM + ret + +.loop + push bc + ld bc, BOXMON_STRUCT_LENGTH + add hl, bc + pop bc + call UpdateOTPointer + dec d + jr nz, .openboxmon + + ; Run CheckOwnMon on each monster in the other 13 PC boxes. +.boxes + call CloseSRAM + + ld c, 0 +.box + ; Don't search the current box again. + ld a, [wCurBox] + and $f + cp c + jr z, .loopbox + + ; Load the box. + ld hl, BoxAddressTable1 + ld b, 0 +rept 3 + add hl, bc +endr + ld a, [hli] + call GetSRAMBank + ld a, [hli] + ld h, [hl] + ld l, a + + ; Number of monsters in the box + ld a, [hl] + and a + jr z, .loopbox + + push bc + + push hl + ld de, sBoxMons - sBoxCount + add hl, de + ld d, h + ld e, l + pop hl + push de + ld de, sBoxMonOT - sBoxCount + add hl, de + ld b, h + ld c, l + pop hl + + ld d, a + +.boxmon + call CheckOwnMon + jr nc, .loopboxmon + + ; found! + pop bc + call CloseSRAM + ret + +.loopboxmon + push bc + ld bc, BOXMON_STRUCT_LENGTH + add hl, bc + pop bc + call UpdateOTPointer + dec d + jr nz, .boxmon + pop bc + +.loopbox + inc c + ld a, c + cp NUM_BOXES + jr c, .box + + ; not found + call CloseSRAM + and a + ret + + +CheckOwnMon: ; 0x4a7ba +; Check if a Pokémon belongs to the player and is of a specific species. + +; inputs: +; hl, pointer to PartyMonNSpecies +; bc, pointer to PartyMonNOT +; ScriptVar should contain the species we're looking for + +; outputs: +; sets carry if monster matches species, ID, and OT name. + + push bc + push hl + push de + ld d, b + ld e, c + +; check species + ld a, [ScriptVar] ; species we're looking for + ld b, [hl] ; species we have + cp b + jr nz, .notfound ; species doesn't match + +; check ID number + ld bc, MON_ID + add hl, bc ; now hl points to ID number + ld a, [PlayerID] + cp [hl] + jr nz, .notfound ; ID doesn't match + inc hl + ld a, [PlayerID + 1] + cp [hl] + jr nz, .notfound ; ID doesn't match + +; check OT +; This only checks five characters, which is fine for the Japanese version, +; but in the English version the player name is 7 characters, so this is wrong. + + ld hl, PlayerName + + rept 4 + ld a, [de] + cp [hl] + jr nz, .notfound + cp "@" + jr z, .found ; reached end of string + inc hl + inc de + endr + + ld a, [de] + cp [hl] + jr z, .found + +.notfound + pop de + pop hl + pop bc + and a + ret + +.found + pop de + pop hl + pop bc + scf + ret +; 0x4a810 + +BoxAddressTable1: ; 4a810 + dba sBox1 + dba sBox2 + dba sBox3 + dba sBox4 + dba sBox5 + dba sBox6 + dba sBox7 + dba sBox8 + dba sBox9 + dba sBox10 + dba sBox11 + dba sBox12 + dba sBox13 + dba sBox14 +; 4a83a + +UpdateOTPointer: ; 0x4a83a + push hl + ld hl, NAME_LENGTH + add hl, bc + ld b, h + ld c, l + pop hl + ret +; 0x4a843 diff --git a/engine/selectmenu.asm b/engine/selectmenu.asm index 916e48b3c..03210f43d 100755 --- a/engine/selectmenu.asm +++ b/engine/selectmenu.asm @@ -5,12 +5,12 @@ SelectMenu:: ; 13327 jp UseRegisteredItem .NotRegistered - call LoadFont + call OpenText ld b, BANK(ItemMayBeRegisteredText) ld hl, ItemMayBeRegisteredText call MapTextbox - call CloseText - jp LoadMoveSprites + call WaitButton + jp CloseText ; 13340 @@ -139,17 +139,17 @@ UseRegisteredItem: ; 133c3 ; 133df .NoFunction ; 133df - call LoadFont + call OpenText call CantUseItem - call LoadMoveSprites + call CloseText and a ret ; 133ea .Current ; 133ea - call LoadFont + call OpenText call DoItemEffect - call LoadMoveSprites + call CloseText and a ret ; 133f5 @@ -158,8 +158,8 @@ UseRegisteredItem: ; 133c3 call ResetWindow call FadeToMenu call DoItemEffect - call ReturnToCallingMenu - call LoadMoveSprites + call CloseSubmenu + call CloseText and a ret ; 13406 @@ -167,11 +167,11 @@ UseRegisteredItem: ; 133c3 .Overworld ; 13406 call ResetWindow ld a, 1 - ld [wd0ef], a + ld [wUsingItemWithSelect], a call DoItemEffect xor a - ld [wd0ef], a - ld a, [wd0ec] + ld [wUsingItemWithSelect], a + ld a, [wItemEffectSucceeded] cp 1 jr nz, ._cantuse scf @@ -185,7 +185,7 @@ UseRegisteredItem: ; 133c3 ._cantuse call CantUseItem - call LoadMoveSprites + call CloseText and a ret ; 1342d diff --git a/engine/slot_machine.asm b/engine/slot_machine.asm index afd038588..aad1e4def 100755 --- a/engine/slot_machine.asm +++ b/engine/slot_machine.asm @@ -1,11 +1,20 @@ +SLOTS_NOMATCH EQU -1 +SLOTS_SEVEN EQU $00 +SLOTS_POKEBALL EQU $04 +SLOTS_CHERRY EQU $08 +SLOTS_PIKACHU EQU $0c +SLOTS_SQUIRTLE EQU $10 +SLOTS_STARYU EQU $14 +REEL_SIZE EQU 15 + _SlotMachine: ld hl, Options set 4, [hl] - call Function926f7 + call .InitGFX call DelayFrame -.asm_926d2 - call Function927af - jr nc, .asm_926d2 +.loop + call SlotsLoop + jr nc, .loop call WaitSFX ld de, SFX_QUIT_SLOTS call PlaySFX @@ -18,7 +27,7 @@ _SlotMachine: res 2, [hl] ret -Function926f7: ; 926f7 (24:66f7) +.InitGFX: ; 926f7 (24:66f7) call ClearBGPalettes call ClearTileMap call ClearSprites @@ -27,132 +36,140 @@ Function926f7: ; 926f7 (24:66f7) call DelayFrame call DisableLCD hlbgcoord 0, 0 - lb bc, 4, 0 + ld bc, VBGMap1 - VBGMap0 ld a, " " call ByteFill ld b, SCGB_05 call GetSGBLayout - callab Function8cf53 - ld hl, wc6d0 - ld bc, $48 + callab ClearSpriteAnims + ld hl, wSlots + ld bc, wSlotsDataEnd - wSlots xor a call ByteFill + ld hl, Slots2LZ ld de, VTiles0 tile $00 call Decompress + ld hl, Slots3LZ ld de, VTiles0 tile $40 call Decompress + ld hl, Slots1LZ ld de, VTiles2 tile $00 call Decompress + ld hl, Slots2LZ ld de, VTiles2 tile $25 call Decompress + ld hl, SlotsTilemap decoord 0, 0 - ld bc, 20 * 12 + ld bc, SCREEN_WIDTH * 12 call CopyBytes + ld hl, rLCDC ; $ff40 set 2, [hl] call EnableLCD - ld hl, wc6d0 - ld bc, $64 + ld hl, wSlots ; Alias: wTrademons + ld bc, wSlotsEnd - wSlots ; Alias: wTrademonsEnd xor a call ByteFill - call Function92a98 - call Function9279b + call InitReelTiles + call Slots_GetPals ld a, $7 - ld hl, wc300 + ld hl, wSpriteAnimDict ld [hli], a ld [hl], $40 xor a ld [wJumptableIndex], a - ld a, $ff - ld [wc709], a + ld a, SLOTS_NOMATCH + ld [wSlotBias], a ld de, MUSIC_GAME_CORNER call PlayMusic xor a ld [wd002], a call Random - and $2a + and %00101010 ret nz ld a, $1 ld [wd002], a ret -Function9279b: ; 9279b (24:679b) - ld a, $e4 +Slots_GetPals: ; 9279b (24:679b) + ld a, %11100100 call DmgToCgbBGPals - lb de, $e4, $e4 + lb de, %11100100, %11100100 ld a, [hCGB] and a - jr nz, .asm_927ab - lb de, $c0, $e4 -.asm_927ab + jr nz, .cgb + lb de, %11000000, %11100100 +.cgb call DmgToCgbObjPals ret -Function927af: ; 927af (24:67af) +SlotsLoop: ; 927af (24:67af) ld a, [wJumptableIndex] bit 7, a - jr nz, .asm_927d1 - call Function92844 - call Function92b0f + jr nz, .stop + call SlotsJumptable + call Slots_SpinReels xor a - ld [wc3b5], a - callab Function8cfa8 - call Function927f8 - call Function927d3 + ld [wCurrSpriteOAMAddr], a + callab DoNextFrameForFirst16Sprites + call .PrintCoinsAndPayout + call .DummyFunc call DelayFrame and a ret -.asm_927d1 + +.stop scf ret -Function927d3: ; 927d3 (24:67d3) +.DummyFunc: ; 927d3 (24:67d3) +; dummied out ret -; 927d4 (24:67d4) - -Function927d4: ; 927d4 - ld a, [wc6d0] + ld a, [wReel1ReelAction] and a ret nz - ld a, [wc6e0] + ld a, [wReel2ReelAction] and a ret nz - ld a, [wc70c] + ld a, [wFirstTwoReelsMatchingSevens] and a - jr nz, .asm_927ea - ld a, $e4 + jr nz, .matching_sevens + ld a, %11100100 call DmgToCgbBGPals ret -.asm_927ea +.matching_sevens ld a, [TextDelayFrames] and $7 ret nz ld a, [rBGP] - xor %1100 + xor %00001100 call DmgToCgbBGPals ret + ; 927f8 -Function927f8: ; 927f8 (24:67f8) +.PrintCoinsAndPayout: ; 927f8 (24:67f8) hlcoord 5, 1 ld de, Coins lb bc, PRINTNUM_LEADINGZEROS | 2, 4 call PrintNum hlcoord 11, 1 - ld de, wc711 + ld de, wPayout lb bc, PRINTNUM_LEADINGZEROS | 2, 4 call PrintNum ret + ; 92811 (24:6811) Function92811: ; 92811 - ld a, [wc709] +; unreferenced - debug function? + ld a, [wSlotBias] add 0 daa ld e, a @@ -167,17 +184,20 @@ Function92811: ; 92811 hlcoord 0, 0 ld [hl], a ret + ; 9282c Function9282c: ; 9282c +; unreferenced +; animate OAM tiles? ld hl, wcf66 ld a, [hl] inc [hl] and $7 ret nz - ld hl, Sprites + $42 - ld c, $18 -.asm_92839 + ld hl, Sprites + 16 * 4 + 2 + ld c, 40 - 16 +.loop ld a, [hl] xor $20 ld [hli], a @@ -185,15 +205,16 @@ rept 3 inc hl endr dec c - jr nz, .asm_92839 + jr nz, .loop ret + ; 92844 -Function92844: ; 92844 (24:6844) +SlotsJumptable: ; 92844 (24:6844) ld a, [wJumptableIndex] ld e, a ld d, 0 - ld hl, Jumptable_92853 + ld hl, .Jumptable rept 2 add hl, de endr @@ -201,208 +222,207 @@ endr ld h, [hl] ld l, a jp [hl] + ; 92853 (24:6853) -Jumptable_92853: ; 92853 (24:6853) - dw Function9287e - dw Function9288e - dw Function928c6 - dw Function928d6 - dw Function928e6 - dw Function92900 - dw Function92910 - dw Function9292a - dw Function9293a - dw Function92879 - dw Function92879 - dw Function92879 - dw Function92955 - dw Function9296b - dw Function92987 - dw Function9299e - dw Function929a4 - dw Function929d9 - dw Function929f0 - - -Function92879: ; 92879 (24:6879) +.Jumptable: ; 92853 (24:6853) + jumptable_start + jumptable Slots_Init ; 00 + jumptable Slots_BetAndStart ; 01 + jumptable Slots_WaitStart ; 02 + jumptable Slots_WaitReel1 ; 03 + jumptable Slots_WaitStopReel1 ; 04 + jumptable Slots_WaitReel2 ; 05 + jumptable Slots_WaitStopReel2 ; 06 + jumptable Slots_WaitReel3 ; 07 + jumptable Slots_WaitStopReel3 ; 08 + jumptable Slots_Next ; 09 + jumptable Slots_Next ; 0a + jumptable Slots_Next ; 0b + jumptable Slots_FlashIfWin ; 0c + jumptable Slots_FlashScreen ; 0d + jumptable Slots_GiveEarnedCoins ; 0e + jumptable Slots_PayoutTextAndAnim ; 0f + jumptable Slots_PayoutAnim ; 10 + jumptable Slots_RestartOrQuit ; 11 + jumptable Slots_Quit ; 12 + +Slots_Next: ; 92879 (24:6879) ld hl, wJumptableIndex inc [hl] ret -Function9287e: ; 9287e (24:687e) - call Function92879 +Slots_Init: ; 9287e (24:687e) + call Slots_Next xor a - ld [wc70b], a - ld [wc70c], a - ld a, $ff - ld [wc70d], a + ld [wFirstTwoReelsMatching], a + ld [wFirstTwoReelsMatchingSevens], a + ld a, -1 + ld [wSlotMatched], a ret -Function9288e: ; 9288e (24:688e) - call Function9307c - jr nc, .asm_92899 - ld a, $12 +Slots_BetAndStart: ; 9288e (24:688e) + call Slots_AskBet + jr nc, .proceed + ld a, Slots_QuitTableIndex ld [wJumptableIndex], a ret -.asm_92899 - call Function92879 - call Function9303f - call Function93002 - ld a, $20 + +.proceed + call Slots_Next + call Slots_IlluminateBetLights + call Slots_InitBias + ld a, 32 ld [wcf64], a + ld a, 4 ; ReelAction_NormalRateTableIndex + ld [wReel1ReelAction], a + ld [wReel2ReelAction], a + ld [wReel3ReelAction], a ld a, $4 - ld [wc6d0], a - ld [wc6e0], a - ld [wc6f0], a - ld a, $4 - ld [wc6d9], a - ld [wc6e9], a - ld [wc6f9], a + ld [wReel1Slot09], a + ld [wReel2Slot09], a + ld [wReel3Slot09], a call WaitSFX ld a, SFX_SLOT_MACHINE_START - call Function9331e + call Slots_PlaySFX ret -Function928c6: ; 928c6 (24:68c6) +Slots_WaitStart: ; 928c6 (24:68c6) ld hl, wcf64 ld a, [hl] and a - jr z, .asm_928cf + jr z, .proceed dec [hl] ret -.asm_928cf - call Function92879 + +.proceed + call Slots_Next xor a ld [hJoypadSum], a ret -Function928d6: ; 928d6 (24:68d6) +Slots_WaitReel1: ; 928d6 (24:68d6) ld hl, hJoypadSum ; $ffa5 ld a, [hl] and A_BUTTON ret z - call Function92879 - call Function92a2b - ld [wc6d0], a - -Function928e6: ; 928e6 (24:68e6) - ld a, [wc6d0] + call Slots_Next + call Slots_StopReel1 + ld [wReel1ReelAction], a +Slots_WaitStopReel1: ; 928e6 (24:68e6) + ld a, [wReel1ReelAction] cp $0 ret nz ld a, SFX_STOP_SLOT - call Function9331e - ld bc, wc6d0 - ld de, wc700 - call Function929f6 - call Function92879 + call Slots_PlaySFX + ld bc, wReel1 + ld de, wReel1Stopped + call Slots_LoadReelState + call Slots_Next xor a ld [hJoypadSum], a - -Function92900: ; 92900 (24:6900) +Slots_WaitReel2: ; 92900 (24:6900) ld hl, hJoypadSum ; $ffa5 ld a, [hl] and A_BUTTON ret z - call Function92879 - call Function92a2e - ld [wc6e0], a - -Function92910: ; 92910 (24:6910) - ld a, [wc6e0] + call Slots_Next + call Slots_StopReel2 + ld [wReel2ReelAction], a +Slots_WaitStopReel2: ; 92910 (24:6910) + ld a, [wReel2ReelAction] cp $0 ret nz ld a, SFX_STOP_SLOT - call Function9331e - ld bc, wc6e0 - ld de, wc703 - call Function929f6 - call Function92879 + call Slots_PlaySFX + ld bc, wReel2 + ld de, wReel2Stopped + call Slots_LoadReelState + call Slots_Next xor a ld [hJoypadSum], a - -Function9292a: ; 9292a (24:692a) +Slots_WaitReel3: ; 9292a (24:692a) ld hl, hJoypadSum ; $ffa5 ld a, [hl] and A_BUTTON ret z - call Function92879 - call Function92a60 - ld [wc6f0], a - -Function9293a: ; 9293a (24:693a) - ld a, [wc6f0] + call Slots_Next + call Slots_StopReel3 + ld [wReel3ReelAction], a +Slots_WaitStopReel3: ; 9293a (24:693a) + ld a, [wReel3ReelAction] cp $0 ret nz ld a, SFX_STOP_SLOT - call Function9331e - ld bc, wc6f0 - ld de, wc706 - call Function929f6 - call Function92879 + call Slots_PlaySFX + ld bc, wReel3 + ld de, wReel3Stopped + call Slots_LoadReelState + call Slots_Next xor a ld [hJoypadSum], a ret -Function92955: ; 92955 (24:6955) - ld a, [wc70d] - cp $ff - jr nz, .asm_92963 - call Function92879 - call Function92879 +Slots_FlashIfWin: ; 92955 (24:6955) + ld a, [wSlotMatched] + cp -1 + jr nz, .GotIt + call Slots_Next + call Slots_Next ret -.asm_92963 - call Function92879 - ld a, $10 - ld [wcf64], a -Function9296b: ; 9296b (24:696b) +.GotIt + call Slots_Next + ld a, 16 + ld [wcf64], a +Slots_FlashScreen: ; 9296b (24:696b) ld hl, wcf64 ld a, [hl] and a - jr z, .asm_92980 + jr z, .done dec [hl] srl a ret z + ld a, [rOBP0] xor $ff ld e, a ld d, a call DmgToCgbObjPals ret -.asm_92980 - call Function9279b - call Function92879 + +.done + call Slots_GetPals + call Slots_Next ret -Function92987: ; 92987 (24:6987) +Slots_GiveEarnedCoins: ; 92987 (24:6987) xor a - ld [wc70b], a - ld [wc70c], a - ld a, $e4 + ld [wFirstTwoReelsMatching], a + ld [wFirstTwoReelsMatchingSevens], a + ld a, %11100100 call DmgToCgbBGPals - call Function93124 + call SlotGetPayout xor a ld [wcf64], a - call Function92879 + call Slots_Next ret -Function9299e: ; 9299e (24:699e) - call Function93158 - call Function92879 - -Function929a4: ; 929a4 (24:69a4) +Slots_PayoutTextAndAnim: ; 9299e (24:699e) + call SlotPayoutText + call Slots_Next +Slots_PayoutAnim: ; 929a4 (24:69a4) ld hl, wcf64 ld a, [hl] inc [hl] and $1 ret z - ld hl, wc711 + ld hl, wPayout ld a, [hli] ld d, a or [hl] - jr z, .asm_929d5 + jr z, .done ld e, [hl] dec de ld [hl], e @@ -412,44 +432,46 @@ Function929a4: ; 929a4 (24:69a4) ld d, [hl] inc hl ld e, [hl] - call Function92a04 - jr c, .asm_929c5 + call Slot_CheckCoinCaseFull + jr c, .okay inc de -.asm_929c5 +.okay ld [hl], e dec hl ld [hl], d ld a, [wcf64] and $7 - ret z + ret z ; ret nz would be more appropriate ld de, SFX_GET_COIN_FROM_SLOTS call PlaySFX ret -.asm_929d5 - call Function92879 + +.done + call Slots_Next ret -Function929d9: ; 929d9 (24:69d9) - call Function9304c +Slots_RestartOrQuit: ; 929d9 (24:69d9) + call Slots_DeilluminateBetLights call WaitPressAorB_BlinkCursor - call Function930e9 - jr c, .asm_929ea - ld a, $0 + call Slots_AskPlayAgain + jr c, .exit_slots + ld a, Slots_InitTableIndex ld [wJumptableIndex], a ret -.asm_929ea - ld a, $12 + +.exit_slots + ld a, Slots_QuitTableIndex ld [wJumptableIndex], a ret -Function929f0: ; 929f0 (24:69f0) +Slots_Quit: ; 929f0 (24:69f0) ld hl, wJumptableIndex set 7, [hl] ret -Function929f6: ; 929f6 (24:69f6) +Slots_LoadReelState: ; 929f6 (24:69f6) push de - call Function92a12 + call Slots_GetCurrentReelState pop de ld a, [hli] ld [de], a @@ -461,32 +483,33 @@ Function929f6: ; 929f6 (24:69f6) ld [de], a ret -Function92a04: ; 92a04 (24:6a04) +Slot_CheckCoinCaseFull: ; 92a04 (24:6a04) ld a, d cp 9999 / $100 - jr c, .asm_92a10 + jr c, .not_full ld a, e cp 9999 % $100 - jr c, .asm_92a10 + jr c, .not_full scf ret -.asm_92a10 + +.not_full and a ret -Function92a12: ; 92a12 (24:6a12) - ld hl, $3 +Slots_GetCurrentReelState: ; 92a12 (24:6a12) + ld hl, wReel1Position - wReel1 add hl, bc ld a, [hl] and a - jr nz, .asm_92a1c + jr nz, .okay ld a, $f -.asm_92a1c +.okay dec a and $f ld e, a ld d, $0 - ld hl, $1 + ld hl, wReel1TilemapAddr - wReel1 add hl, bc ld a, [hli] ld h, [hl] @@ -494,180 +517,186 @@ Function92a12: ; 92a12 (24:6a12) add hl, de ret -Function92a2b: ; 92a2b (24:6a2b) +Slots_StopReel1: ; 92a2b (24:6a2b) ld a, $7 ret -Function92a2e: ; 92a2e (24:6a2e) - ld a, [wc70a] +Slots_StopReel2: ; 92a2e (24:6a2e) + ld a, [wSlotBet] cp $2 - jr c, .asm_92a4e - ld a, [wc709] + jr c, .dont_jump + ld a, [wSlotBias] and a - jr z, .asm_92a3f - cp $ff - jr nz, .asm_92a4e -.asm_92a3f - call Function92a51 - jr nz, .asm_92a4e + jr z, .skip + cp SLOTS_NOMATCH + jr nz, .dont_jump +.skip + call .CheckReel1ForASeven + jr nz, .dont_jump call Random - cp $50 - jr nc, .asm_92a4e + cp $50 ; 32% + jr nc, .dont_jump ld a, $a ret -.asm_92a4e + +.dont_jump ld a, $8 ret -Function92a51: ; 92a51 (24:6a51) - ld a, [wc700] +.CheckReel1ForASeven: ; 92a51 (24:6a51) + ld a, [wReel1Stopped] and a ret z - ld a, [wc701] + ld a, [wReel1Stopped + 1] and a ret z - ld a, [wc702] + ld a, [wReel1Stopped + 2] and a ret -Function92a60: ; 92a60 (24:6a60) - ld a, [wc70b] +Slots_StopReel3: ; 92a60 (24:6a60) + ld a, [wFirstTwoReelsMatching] and a - jr z, .asm_92a95 - ld a, [wc70c] + jr z, .stop + ld a, [wFirstTwoReelsMatchingSevens] and a - jr z, .asm_92a95 - ld a, [wc709] + jr z, .stop + ld a, [wSlotBias] and a - jr nz, .asm_92a84 + jr nz, .biased call Random cp 180 - jr nc, .asm_92a95 + jr nc, .stop cp 120 - jr nc, .asm_92a92 + jr nc, .slow_advance cp 60 - jr nc, .asm_92a8f + jr nc, .golem ld a, $15 ret -.asm_92a84 + +.biased call Random - cp $a0 - jr nc, .asm_92a95 - cp $50 - jr nc, .asm_92a92 -.asm_92a8f + cp 160 + jr nc, .stop + cp 80 + jr nc, .slow_advance +.golem ld a, $12 ret -.asm_92a92 + +.slow_advance ld a, $10 ret -.asm_92a95 + +.stop ld a, $9 ret -Function92a98: ; 92a98 (24:6a98) - ld bc, wc6d0 - ld hl, $6 +InitReelTiles: ; 92a98 (24:6a98) + ld bc, wReel1 + ld hl, wReel1OAMAddr - wReel1 add hl, bc - ld de, Sprites + $40 + ld de, Sprites + 16 * 4 ld [hl], e inc hl ld [hl], d - ld hl, $1 + ld hl, wReel1TilemapAddr - wReel1 add hl, bc - ld de, Unknown_93327 + ld de, Reel1Tilemap ld [hl], e inc hl ld [hl], d - ld hl, $8 + ld hl, wReel1XCoord - wReel1 add hl, bc - ld [hl], $30 - call Function92af9 - ld bc, wc6e0 - ld hl, $6 + ld [hl], 6 * 8 + call .OAM + + ld bc, wReel2 + ld hl, wReel1OAMAddr - wReel1 add hl, bc - ld de, Sprites + $60 + ld de, Sprites + 24 * 4 ld [hl], e inc hl ld [hl], d - ld hl, $1 + ld hl, wReel1TilemapAddr - wReel1 add hl, bc - ld de, Unknown_93339 + ld de, Reel2Tilemap ld [hl], e inc hl ld [hl], d - ld hl, $8 + ld hl, wReel1XCoord - wReel1 add hl, bc - ld [hl], $50 - call Function92af9 - ld bc, wc6f0 - ld hl, $6 + ld [hl], 10 * 8 + call .OAM + + ld bc, wReel3 + ld hl, wReel1OAMAddr - wReel1 add hl, bc - ld de, Sprites + $80 + ld de, Sprites + 32 * 4 ld [hl], e inc hl ld [hl], d - ld hl, $1 + ld hl, wReel1TilemapAddr - wReel1 add hl, bc - ld de, Unknown_9334b + ld de, Reel3Tilemap ld [hl], e inc hl ld [hl], d - ld hl, $8 + ld hl, wReel1XCoord - wReel1 add hl, bc - ld [hl], $70 - call Function92af9 + ld [hl], 14 * 8 + call .OAM ret -Function92af9: ; 92af9 (24:6af9) - ld hl, 0 +.OAM: ; 92af9 (24:6af9) + ld hl, wReel1ReelAction - wReel1 add hl, bc ld [hl], $0 - ld hl, $3 + ld hl, wReel1Position - wReel1 add hl, bc - ld [hl], $e - ld hl, $4 + ld [hl], REEL_SIZE - 1 + ld hl, wReel1SpinDistance - wReel1 add hl, bc ld [hl], $0 - call Function92b53 + call UpdateReelPositionAndOAM ret -Function92b0f: ; 92b0f (24:6b0f) - ld bc, wc6d0 - call Function92b22 - ld bc, wc6e0 - call Function92b22 - ld bc, wc6f0 - call Function92b22 +Slots_SpinReels: ; 92b0f (24:6b0f) + ld bc, wReel1 + call .SpinReel + ld bc, wReel2 + call .SpinReel + ld bc, wReel3 + call .SpinReel ret -Function92b22: ; 92b22 (24:6b22) - ld hl, $4 +.SpinReel: ; 92b22 (24:6b22) + ld hl, wReel1SpinDistance - wReel1 add hl, bc ld a, [hl] and $f - jr nz, .asm_92b2e + jr nz, .skip call Function92bd4 -.asm_92b2e - ld hl, $5 +.skip + ld hl, wReel1SpinRate - wReel1 add hl, bc ld a, [hl] and a ret z ld d, a - ld hl, $4 + ld hl, wReel1SpinDistance - wReel1 add hl, bc add [hl] ld [hl], a and $f - jr z, Function92b53 - ld hl, $6 + jr z, UpdateReelPositionAndOAM + ld hl, wReel1OAMAddr - wReel1 add hl, bc ld a, [hli] ld h, [hl] ld l, a ld e, $8 -.asm_92b49 +.loop ld a, [hl] add d ld [hli], a @@ -675,21 +704,21 @@ rept 3 inc hl endr dec e - jr nz, .asm_92b49 + jr nz, .loop ret -Function92b53: ; 92b53 (24:6b53) - ld hl, $8 +UpdateReelPositionAndOAM: ; 92b53 (24:6b53) + ld hl, wReel1XCoord - wReel1 add hl, bc ld a, [hl] - ld [wc712 + 1], a - ld a, $50 - ld [wc712 + 2], a - ld hl, $3 + ld [wCurrReelXCoord], a + ld a, 10 * 8 + ld [wCurrReelYCoord], a + ld hl, wReel1Position - wReel1 add hl, bc ld e, [hl] - ld d, $0 - ld hl, $1 + ld d, 0 + ld hl, wReel1TilemapAddr - wReel1 add hl, bc ld a, [hli] ld h, [hl] @@ -697,29 +726,29 @@ Function92b53: ; 92b53 (24:6b53) add hl, de ld e, l ld d, h - call Function92b83 - ld hl, $3 + call .LoadOAM + ld hl, wReel1Position - wReel1 add hl, bc ld a, [hl] inc a and $f - cp $f - jr nz, .asm_92b81 + cp REEL_SIZE + jr nz, .load xor a -.asm_92b81 +.load ld [hl], a ret -Function92b83: ; 92b83 (24:6b83) - ld hl, $6 +.LoadOAM: ; 92b83 (24:6b83) + ld hl, wReel1OAMAddr - wReel1 add hl, bc ld a, [hli] ld h, [hl] ld l, a -.asm_92b8a - ld a, [wc712 + 2] +.loop + ld a, [wCurrReelYCoord] ld [hli], a - ld a, [wc712 + 1] + ld a, [wCurrReelXCoord] ld [hli], a ld a, [de] ld [hli], a @@ -727,27 +756,28 @@ Function92b83: ; 92b83 (24:6b83) srl a set 7, a ld [hli], a - ld a, [wc712 + 2] + + ld a, [wCurrReelYCoord] ld [hli], a - ld a, [wc712 + 1] - add $8 + ld a, [wCurrReelXCoord] + add 1 * 8 ld [hli], a ld a, [de] -rept 2 inc a -endr + inc a ld [hli], a srl a srl a set 7, a ld [hli], a inc de - ld a, [wc712 + 2] - sub $10 - ld [wc712 + 2], a - cp $10 - jr nz, .asm_92b8a + ld a, [wCurrReelYCoord] + sub 2 * 8 + ld [wCurrReelYCoord], a + cp 2 * 8 + jr nz, .loop ret + ; 92bbe (24:6bbe) Function92bbe: ; 92bbe @@ -762,6 +792,7 @@ Function92bbe: ; 92bbe ld a, [hl] pop hl ret + ; 92bce Unknown_92bce: ; 92bce @@ -769,11 +800,11 @@ Unknown_92bce: ; 92bce ; 92bd4 Function92bd4: ; 92bd4 (24:6bd4) - ld hl, 0 + ld hl, wReel1ReelAction - wReel1 add hl, bc ld e, [hl] ld d, 0 - ld hl, Jumptable_92be4 + ld hl, .jumptable rept 2 add hl, de endr @@ -781,124 +812,139 @@ endr ld h, [hl] ld l, a jp [hl] + ; 92be4 (24:6be4) -Jumptable_92be4: ; 92be4 - dw Function92c16 - dw Function92c4c - dw Function92c17 - dw Function92c1e - dw Function92c25 - dw Function92c2c - dw Function92c33 - dw Function92c5e - dw Function92c86 - dw Function92ca9 - dw Function92cd2 - dw Function92cf8 - dw Function92d13 - dw Function92df7 - dw Function92e10 - dw Function92e31 - dw Function92e47 - dw Function92e64 - dw Function92d20 - dw Function92d4f - dw Function92d6e - dw Function92d7e - dw Function92da4 - dw Function92db3 - dw Function92dca +.jumptable: ; 92be4 + jumptable_start + jumptable ReelAction_DoNothing ; 00 + jumptable Slots_StopReelIgnoreJoypad ; 01 + + jumptable ReelAction_QuadrupleRate ; 02 + jumptable ReelAction_DoubleRate ; 03 + jumptable ReelAction_NormalRate ; 04 + jumptable ReelAction_HalfRate ; 05 + jumptable ReelAction_QuarterRate ; 06 + + jumptable ReelAction_StopReel1 ; 07 + jumptable ReelAction_StopReel2 ; 08 + jumptable ReelAction_StopReel3 ; 09 + + jumptable ReelAction_SetUpReel2SkipTo7 ; 0a + jumptable ReelAction_WaitReel2SkipTo7 ; 0b + jumptable ReelAction_FastSpinReel2UntilLinedUp7s ; 0c + + jumptable ReelAction_BoringReelDrops ; 0d + jumptable ReelAction_CheckDropReel ; 0e + jumptable ReelAction_WaitDropReel ; 0f + + jumptable ReelAction_StartSlowAdvanceReel3 ; 10 + jumptable ReelAction_WaitSlowAdvanceReel3 ; 11 + + jumptable ReelAction_InitGolem ; 12 + jumptable ReelAction_WaitGolem ; 13 + jumptable ReelAction_EndGolem ; 14 + + jumptable Slots_InitChansey ; 15 + jumptable ReelAction_WaitChansey ; 16 + jumptable ReelAction_WaitEgg ; 17 + jumptable ReelAction_DropReel ; 18 ; 92c16 -Function92c16: ; 92c16 +ReelAction_DoNothing: ; 92c16 ret + ; 92c17 -Function92c17: ; 92c17 - ld hl, $5 +ReelAction_QuadrupleRate: ; 92c17 + ld hl, wReel1SpinRate - wReel1 add hl, bc ld [hl], $10 ret + ; 92c1e -Function92c1e: ; 92c1e - ld hl, $5 +ReelAction_DoubleRate: ; 92c1e + ld hl, wReel1SpinRate - wReel1 add hl, bc ld [hl], $8 ret + ; 92c25 -Function92c25: ; 92c25 - ld hl, $5 +ReelAction_NormalRate: ; 92c25 + ld hl, wReel1SpinRate - wReel1 add hl, bc ld [hl], $4 ret + ; 92c2c -Function92c2c: ; 92c2c - ld hl, $5 +ReelAction_HalfRate: ; 92c2c + ld hl, wReel1SpinRate - wReel1 add hl, bc ld [hl], $2 ret + ; 92c33 -Function92c33: ; 92c33 - ld hl, $5 +ReelAction_QuarterRate: ; 92c33 + ld hl, wReel1SpinRate - wReel1 add hl, bc ld [hl], $1 ret + ; 92c3a -Function92c3a: ; 92c3a - ld hl, $5 +Slots_StopReel: ; 92c3a + ld hl, wReel1SpinRate - wReel1 add hl, bc ld [hl], $0 - ld hl, 0 + ld hl, wReel1ReelAction - wReel1 add hl, bc ld [hl], $1 - ld hl, $f + ld hl, wReel1Slot0f - wReel1 add hl, bc ld [hl], $3 - -Function92c4c: ; 92c4c - ld hl, $f +Slots_StopReelIgnoreJoypad: ; 92c4c + ld hl, wReel1Slot0f - wReel1 add hl, bc ld a, [hl] and a - jr z, .asm_92c56 + jr z, .EndReel dec [hl] ret -.asm_92c56 - ld hl, 0 +.EndReel + ld hl, wReel1ReelAction - wReel1 add hl, bc ld a, $0 ld [hl], a ret + ; 92c5e -Function92c5e: ; 92c5e - ld a, [wc709] - cp $ff - jr z, .asm_92c72 - ld hl, $9 +ReelAction_StopReel1: ; 92c5e + ld a, [wSlotBias] + cp SLOTS_NOMATCH + jr z, .NoBias + ld hl, wReel1Slot09 - wReel1 add hl, bc ld a, [hl] and a - jr z, .asm_92c72 + jr z, .NoBias dec [hl] - call Function92c76 + call .CheckForBias ret nz - -.asm_92c72 - call Function92c3a +.NoBias + call Slots_StopReel ret + ; 92c76 -Function92c76: ; 92c76 - call Function92a12 - ld a, [wc709] +.CheckForBias: ; 92c76 + call Slots_GetCurrentReelState + ld a, [wSlotBias] ld e, a ld a, [hli] cp e @@ -909,40 +955,41 @@ Function92c76: ; 92c76 ld a, [hl] cp e ret + ; 92c86 -Function92c86: ; 92c86 - call Function92e94 - jr nc, .asm_92c94 - ld a, [wc717] - ld hl, wc709 +ReelAction_StopReel2: ; 92c86 + call Slots_CheckMatchedFirstTwoReels + jr nc, .nope + ld a, [wSlotBuildingMatch] + ld hl, wSlotBias cp [hl] - jr z, .asm_92ca5 - -.asm_92c94 - ld a, [wc709] - cp $ff - jr z, .asm_92ca5 - ld hl, $9 + jr z, .NoBias +.nope + ld a, [wSlotBias] + cp SLOTS_NOMATCH + jr z, .NoBias + ld hl, wReel1Slot09 - wReel1 add hl, bc ld a, [hl] and a - jr z, .asm_92ca5 + jr z, .NoBias dec [hl] ret -.asm_92ca5 - call Function92c3a +.NoBias + call Slots_StopReel ret + ; 92ca9 -Function92ca9: ; 92ca9 - call Function92f1d - jr nc, .asm_92cbd - ld hl, wc709 +ReelAction_StopReel3: ; 92ca9 + call Slots_CheckMatchedAllThreeReels + jr nc, .NoMatch + ld hl, wSlotBias cp [hl] - jr z, .asm_92cce - ld hl, $9 + jr z, .NoBias + ld hl, wReel1Slot09 - wReel1 add hl, bc ld a, [hl] and a @@ -950,49 +997,51 @@ Function92ca9: ; 92ca9 dec [hl] ret -.asm_92cbd - ld a, [wc709] - cp $ff - jr z, .asm_92cce - ld hl, $9 +.NoMatch + ld a, [wSlotBias] + cp SLOTS_NOMATCH + jr z, .NoBias + ld hl, wReel1Slot09 - wReel1 add hl, bc ld a, [hl] and a - jr z, .asm_92cce + jr z, .NoBias dec [hl] ret -.asm_92cce - call Function92c3a +.NoBias + call Slots_StopReel ret + ; 92cd2 -Function92cd2: ; 92cd2 - call Function92e94 - jr nc, .asm_92ce1 - ld a, [wc70c] +ReelAction_SetUpReel2SkipTo7: ; 92cd2 + call Slots_CheckMatchedFirstTwoReels + jr nc, .no_match + ld a, [wFirstTwoReelsMatchingSevens] and a - jr z, .asm_92ce1 - call Function92c3a + jr z, .no_match + call Slots_StopReel ret -.asm_92ce1 +.no_match ld a, SFX_STOP_SLOT - call Function9331e - ld hl, 0 + call Slots_PlaySFX + ld hl, wReel1ReelAction - wReel1 add hl, bc inc [hl] - ld hl, $a + ld hl, wReel1Slot0a - wReel1 add hl, bc ld [hl], $20 - ld hl, $5 + ld hl, wReel1SpinRate - wReel1 add hl, bc ld [hl], $0 ret + ; 92cf8 -Function92cf8: ; 92cf8 - ld hl, $a +ReelAction_WaitReel2SkipTo7: ; 92cf8 + ld hl, wReel1Slot0a - wReel1 add hl, bc ld a, [hl] and a @@ -1002,157 +1051,159 @@ Function92cf8: ; 92cf8 .asm_92d02 ld a, SFX_THROW_BALL - call Function9331e - ld hl, 0 + call Slots_PlaySFX + ld hl, wReel1ReelAction - wReel1 add hl, bc inc [hl] - ld hl, $5 + ld hl, wReel1SpinRate - wReel1 add hl, bc ld [hl], $8 ret + ; 92d13 -Function92d13: ; 92d13 - call Function92e94 +ReelAction_FastSpinReel2UntilLinedUp7s: ; 92d13 + call Slots_CheckMatchedFirstTwoReels ret nc - ld a, [wc70c] + ld a, [wFirstTwoReelsMatchingSevens] and a ret z - call Function92c3a + call Slots_StopReel ret + ; 92d20 -Function92d20: ; 92d20 - call Function92f1d +ReelAction_InitGolem: ; 92d20 + call Slots_CheckMatchedAllThreeReels ret c ld a, SFX_STOP_SLOT - call Function9331e - call Function93316 - ld hl, 0 + call Slots_PlaySFX + call Slots_WaitSFX + ld hl, wReel1ReelAction - wReel1 add hl, bc inc [hl] - ld hl, $5 + ld hl, wReel1SpinRate - wReel1 add hl, bc ld [hl], $0 call Function92fc0 push bc push af depixel 12, 13 - ld a, SPRITE_ANIM_INDEX_06 + ld a, SPRITE_ANIM_INDEX_SLOT_GOLEM call _InitSpriteAnimStruct - ld hl, $e + ld hl, SPRITEANIMSTRUCT_0E add hl, bc pop af ld [hl], a pop bc xor a ld [wcf64], a - -Function92d4f: ; 92d4f +ReelAction_WaitGolem: ; 92d4f ld a, [wcf64] - cp $2 - jr z, .asm_92d5b - cp $1 - jr z, .asm_92d62 + cp 2 + jr z, .two + cp 1 + jr z, .one ret -.asm_92d5b - call Function92f1d - call Function92c3a +.two + call Slots_CheckMatchedAllThreeReels + call Slots_StopReel ret -.asm_92d62 - ld hl, 0 +.one + ld hl, wReel1ReelAction - wReel1 add hl, bc inc [hl] - ld hl, $5 + ld hl, wReel1SpinRate - wReel1 add hl, bc ld [hl], $8 ret + ; 92d6e -Function92d6e: ; 92d6e +ReelAction_EndGolem: ; 92d6e xor a ld [wcf64], a - ld hl, 0 + ld hl, wReel1ReelAction - wReel1 add hl, bc dec [hl] - ld hl, $5 + ld hl, wReel1SpinRate - wReel1 add hl, bc ld [hl], $0 ret + ; 92d7e -Function92d7e: ; 92d7e - call Function92f1d +Slots_InitChansey: ; 92d7e + call Slots_CheckMatchedAllThreeReels ret c ld a, SFX_STOP_SLOT - call Function9331e - call Function93316 - ld hl, 0 + call Slots_PlaySFX + call Slots_WaitSFX + ld hl, wReel1ReelAction - wReel1 add hl, bc inc [hl] - ld hl, $5 + ld hl, wReel1SpinRate - wReel1 add hl, bc ld [hl], $0 push bc depixel 12, 0 - ld a, SPRITE_ANIM_INDEX_07 + ld a, SPRITE_ANIM_INDEX_SLOTS_CHANSEY call _InitSpriteAnimStruct pop bc xor a ld [wcf64], a ret + ; 92da4 -Function92da4: ; 92da4 +ReelAction_WaitChansey: ; 92da4 ld a, [wcf64] and a ret z - ld hl, 0 + ld hl, wReel1ReelAction - wReel1 add hl, bc inc [hl] ld a, $2 ld [wcf64], a - -Function92db3: ; 92db3 +ReelAction_WaitEgg: ; 92db3 ld a, [wcf64] cp $4 ret c - ld hl, 0 + ld hl, wReel1ReelAction - wReel1 add hl, bc inc [hl] - ld hl, $5 + ld hl, wReel1SpinRate - wReel1 add hl, bc ld [hl], $10 - ld hl, $a + ld hl, wReel1Slot0a - wReel1 add hl, bc ld [hl], $11 - -Function92dca: ; 92dca - ld hl, $a +ReelAction_DropReel: ; 92dca + ld hl, wReel1Slot0a - wReel1 add hl, bc ld a, [hl] and a - jr z, .asm_92dd4 + jr z, .check_match dec [hl] ret -.asm_92dd4 - call Function92f1d - jr nc, .asm_92de5 +.check_match + call Slots_CheckMatchedAllThreeReels + jr nc, .EggAgain and a - jr nz, .asm_92de5 + jr nz, .EggAgain ld a, $5 ld [wcf64], a - call Function92c3a + call Slots_StopReel ret -.asm_92de5 - ld hl, $5 +.EggAgain + ld hl, wReel1SpinRate - wReel1 add hl, bc ld [hl], $0 - ld hl, 0 + ld hl, wReel1ReelAction - wReel1 add hl, bc rept 2 dec [hl] @@ -1160,331 +1211,349 @@ endr ld a, $1 ld [wcf64], a ret + ; 92df7 -Function92df7: ; 92df7 - call Function92f1d +ReelAction_BoringReelDrops: ; 92df7 + call Slots_CheckMatchedAllThreeReels ret c ld a, SFX_STOP_SLOT - call Function9331e - call Function93316 - ld hl, 0 + call Slots_PlaySFX + call Slots_WaitSFX + ld hl, wReel1ReelAction - wReel1 add hl, bc inc [hl] call Function92fc0 - ld hl, $a + ld hl, wReel1Slot0a - wReel1 add hl, bc ld [hl], a - -Function92e10: ; 92e10 - ld hl, $a +ReelAction_CheckDropReel: ; 92e10 + ld hl, wReel1Slot0a - wReel1 add hl, bc ld a, [hl] and a - jr nz, .asm_92e1f - call Function92f1d - call Function92c3a + jr nz, .spin + call Slots_CheckMatchedAllThreeReels + call Slots_StopReel ret -.asm_92e1f +.spin dec [hl] - ld hl, 0 + ld hl, wReel1ReelAction - wReel1 add hl, bc inc [hl] - ld hl, $b + ld hl, wReel1Slot0b - wReel1 add hl, bc ld [hl], $20 - ld hl, $5 + ld hl, wReel1SpinRate - wReel1 add hl, bc ld [hl], $0 - -Function92e31: ; 92e31 - ld hl, $b +ReelAction_WaitDropReel: ; 92e31 + ld hl, wReel1Slot0b - wReel1 add hl, bc ld a, [hl] and a - jr z, .asm_92e3b + jr z, .DropReel dec [hl] ret -.asm_92e3b - ld hl, 0 +.DropReel + ld hl, wReel1ReelAction - wReel1 add hl, bc dec [hl] - ld hl, $5 + ld hl, wReel1SpinRate - wReel1 add hl, bc - ld [hl], $8 + ld [hl], $8 ; 2x ret + ; 92e47 -Function92e47: ; 92e47 - call Function92f1d +ReelAction_StartSlowAdvanceReel3: ; 92e47 + call Slots_CheckMatchedAllThreeReels ret c ld a, SFX_STOP_SLOT - call Function9331e - call Function93316 - ld hl, $5 + call Slots_PlaySFX + call Slots_WaitSFX + ld hl, wReel1SpinRate - wReel1 add hl, bc ld [hl], $1 - ld hl, 0 + ld hl, wReel1ReelAction - wReel1 add hl, bc inc [hl] - ld hl, $a + ld hl, wReel1Slot0a - wReel1 add hl, bc ld [hl], $10 - -Function92e64: ; 92e64 - ld hl, $a +ReelAction_WaitSlowAdvanceReel3: ; 92e64 + ld hl, wReel1Slot0a - wReel1 add hl, bc ld a, [hl] and a - jr z, .asm_92e73 + jr z, .check1 dec [hl] -.asm_92e6d +.play_sfx ld a, SFX_GOT_SAFARI_BALLS - call Function9331e + call Slots_PlaySFX ret -.asm_92e73 - ld a, [wc709] +.check1 + ld a, [wSlotBias] and a - jr nz, .asm_92e88 - call Function92f1d - jr nc, .asm_92e6d + jr nz, .check2 + call Slots_CheckMatchedAllThreeReels + jr nc, .play_sfx and a - jr nz, .asm_92e6d - call Function92c3a + jr nz, .play_sfx + call Slots_StopReel call WaitSFX ret -.asm_92e88 - call Function92f1d - jr c, .asm_92e6d - call Function92c3a +.check2 + call Slots_CheckMatchedAllThreeReels + jr c, .play_sfx + call Slots_StopReel call WaitSFX ret + ; 92e94 -Function92e94: ; 92e94 +Slots_CheckMatchedFirstTwoReels: ; 92e94 xor a - ld [wc70b], a - ld [wc70c], a - call Function92a12 - call Function92fb4 - ld a, [wc70a] + ld [wFirstTwoReelsMatching], a + ld [wFirstTwoReelsMatchingSevens], a + call Slots_GetCurrentReelState + call Slots_CopyReelState + ld a, [wSlotBet] and 3 ld e, a ld d, 0 - ld hl, Jumptable_92ebd + ld hl, .Jumptable rept 2 add hl, de endr ld a, [hli] ld h, [hl] ld l, a - ld de, .asm_92eb6 + ld de, .return push de jp [hl] -.asm_92eb6 - ld a, [wc70b] +.return + ld a, [wFirstTwoReelsMatching] and a ret z scf ret + ; 92ebd -Jumptable_92ebd: ; 92ebd - dw Function92ed4 - dw Function92ed1 - dw Function92ecb - dw Function92ec5 +.Jumptable: ; 92ebd + jumptable_start + jumptable .zero + jumptable .one + jumptable .two + jumptable .three ; 92ec5 -Function92ec5: ; 92ec5 - call Function92ee0 - call Function92ef6 +.three: ; 92ec5 + call .CheckUpwardsDiag + call .CheckDownwardsDiag -Function92ecb: ; 92ecb - call Function92ed5 - call Function92f01 +.two: ; 92ecb + call .CheckBottomRow + call .CheckTopRow -Function92ed1: ; 92ed1 - call Function92eeb +.one: ; 92ed1 + call .CheckMiddleRow -Function92ed4: ; 92ed4 +.zero: ; 92ed4 ret + ; 92ed5 -Function92ed5: ; 92ed5 - ld hl, wc70e - ld a, [EnemyScreens] +.CheckBottomRow: ; 92ed5 + ld hl, wCurrReelStopped + ld a, [wReel1Stopped] cp [hl] - call z, Function92f0c + call z, .StoreResult ret + ; 92ee0 -Function92ee0: ; 92ee0 - ld hl, wEnemyGoesFirst - ld a, [wc700] +.CheckUpwardsDiag: ; 92ee0 + ld hl, wCurrReelStopped + 1 + ld a, [wReel1Stopped] cp [hl] - call z, Function92f0c + call z, .StoreResult ret + ; 92eeb -Function92eeb: ; 92eeb - ld hl, wEnemyGoesFirst - ld a, [wc701] +.CheckMiddleRow: ; 92eeb + ld hl, wCurrReelStopped + 1 + ld a, [wReel1Stopped + 1] cp [hl] - call z, Function92f0c + call z, .StoreResult ret + ; 92ef6 -Function92ef6: ; 92ef6 - ld hl, wEnemyGoesFirst - ld a, [wc702] +.CheckDownwardsDiag: ; 92ef6 + ld hl, wCurrReelStopped + 1 + ld a, [wReel1Stopped + 2] cp [hl] - call z, Function92f0c + call z, .StoreResult ret + ; 92f01 -Function92f01: ; 92f01 - ld hl, wc710 - ld a, [wc702] +.CheckTopRow: ; 92f01 + ld hl, wCurrReelStopped + 2 + ld a, [wReel1Stopped + 2] cp [hl] - call z, Function92f0c + call z, .StoreResult ret + ; 92f0c -Function92f0c: ; 92f0c - ld [wc717], a +.StoreResult: ; 92f0c + ld [wSlotBuildingMatch], a and a - jr nz, .asm_92f17 + jr nz, .matching_sevens ld a, $1 - ld [wc70c], a + ld [wFirstTwoReelsMatchingSevens], a -.asm_92f17 +.matching_sevens ld a, $1 - ld [wc70b], a + ld [wFirstTwoReelsMatching], a ret + ; 92f1d -Function92f1d: ; 92f1d +Slots_CheckMatchedAllThreeReels: ; 92f1d ld a, $ff - ld [EffectFailed], a - call Function92a12 - call Function92fb4 - ld a, [wc70a] + ld [wSlotMatched], a + call Slots_GetCurrentReelState + call Slots_CopyReelState + ld a, [wSlotBet] and 3 ld e, a ld d, 0 - ld hl, Jumptable_92f48 + ld hl, .Jumptable rept 2 add hl, de endr ld a, [hli] ld h, [hl] ld l, a - ld de, .asm_92f3d + ld de, .return push de jp [hl] -.asm_92f3d - ld a, [wc70d] +.return + ld a, [wSlotMatched] cp $ff - jr nz, .asm_92f46 + jr nz, .matched_nontrivial and a ret -.asm_92f46 +.matched_nontrivial scf ret + ; 92f48 -Jumptable_92f48: ; 92f48 - dw Function92f5f - dw Function92f5c - dw Function92f56 - dw Function92f50 +.Jumptable: ; 92f48 + jumptable_start + jumptable .zero + jumptable .one + jumptable .two + jumptable .three ; 92f50 -Function92f50: ; 92f50 - call Function92f70 - call Function92f90 +.three: ; 92f50 + call .CheckUpwardsDiag + call .CheckDownwardsDiag -Function92f56: ; 92f56 - call Function92f60 - call Function92fa0 +.two: ; 92f56 + call .CheckBottomRow + call .CheckTopRow -Function92f5c: ; 92f5c - call Function92f80 +.one: ; 92f5c + call .CheckMiddleRow -Function92f5f: ; 92f5f +.zero: ; 92f5f ret + ; 92f60 -Function92f60: ; 92f60 - ld hl, wc70e - ld a, [wc700] +.CheckBottomRow: ; 92f60 + ld hl, wCurrReelStopped + ld a, [wReel1Stopped] cp [hl] ret nz - ld hl, wc703 + ld hl, wReel2Stopped cp [hl] - call z, Function92fb0 + call z, .StoreResult ret + ; 92f70 -Function92f70: ; 92f70 - ld hl, wc710 - ld a, [wc700] +.CheckUpwardsDiag: ; 92f70 + ld hl, wCurrReelStopped + 2 + ld a, [wReel1Stopped] cp [hl] ret nz - ld hl, wc704 + ld hl, wReel2Stopped + 1 cp [hl] - call z, Function92fb0 + call z, .StoreResult ret + ; 92f80 -Function92f80: ; 92f80 - ld hl, wEnemyGoesFirst - ld a, [wc701] +.CheckMiddleRow: ; 92f80 + ld hl, wCurrReelStopped + 1 + ld a, [wReel1Stopped + 1] cp [hl] ret nz - ld hl, wc704 + ld hl, wReel2Stopped + 1 cp [hl] - call z, Function92fb0 + call z, .StoreResult ret + ; 92f90 -Function92f90: ; 92f90 - ld hl, wc70e - ld a, [wc702] +.CheckDownwardsDiag: ; 92f90 + ld hl, wCurrReelStopped + ld a, [wReel1Stopped + 2] cp [hl] ret nz - ld hl, wc704 + ld hl, wReel2Stopped + 1 cp [hl] - call z, Function92fb0 + call z, .StoreResult ret + ; 92fa0 -Function92fa0: ; 92fa0 - ld hl, wc710 - ld a, [wc702] +.CheckTopRow: ; 92fa0 + ld hl, wCurrReelStopped + 2 + ld a, [wReel1Stopped + 2] cp [hl] ret nz - ld hl, wc705 + ld hl, wReel2Stopped + 2 cp [hl] - call z, Function92fb0 + call z, .StoreResult ret + ; 92fb0 -Function92fb0: ; 92fb0 - ld [wc70d], a +.StoreResult: ; 92fb0 + ld [wSlotMatched], a ret + ; 92fb4 -Function92fb4: ; 92fb4 - ld de, wc70e +Slots_CopyReelState: ; 92fb4 + ld de, wCurrReelStopped ld a, [hli] ld [de], a inc de @@ -1494,211 +1563,219 @@ Function92fb4: ; 92fb4 ld a, [hl] ld [de], a ret + ; 92fc0 Function92fc0: ; 92fc0 - ld hl, $3 + ld hl, wReel1Position - wReel1 add hl, bc ld a, [hl] push af push hl - call Function92fcf + call .Check7Bias pop hl pop af ld [hl], a ld a, e ret + ; 92fcf -Function92fcf: ; 92fcf - ld a, [wc709] +.Check7Bias: ; 92fcf + ld a, [wSlotBias] and a - jr nz, .asm_92fe8 + jr nz, .not_biased_to_seven ld e, $0 -.asm_92fd7 - ld hl, $3 +.loop1 + ld hl, wReel1Position - wReel1 add hl, bc inc [hl] inc e push de - call Function92f1d + call Slots_CheckMatchedAllThreeReels pop de - jr nc, .asm_92fd7 + jr nc, .loop1 and a - jr nz, .asm_92fd7 + jr nz, .loop1 ret -.asm_92fe8 +.not_biased_to_seven call Random and $7 - cp $4 - jr c, .asm_92fe8 + cp $4 ; ((50 percent) & 7) + 1 + jr c, .not_biased_to_seven ld e, a -.asm_92ff2 +.loop2 ld a, e inc e - ld hl, $3 + ld hl, wReel1Position - wReel1 add hl, bc add [hl] ld [hl], a push de - call Function92f1d + call Slots_CheckMatchedAllThreeReels pop de - jr c, .asm_92ff2 + jr c, .loop2 ret + ; 93002 -Function93002: ; 93002 (24:7002) - ld a, [wc709] +Slots_InitBias: ; 93002 (24:7002) + ld a, [wSlotBias] and a ret z - ld hl, Unknown_93023 + ld hl, .Normal ld a, [ScriptVar] and a - jr z, .asm_93013 - ld hl, Unknown_93031 -.asm_93013 + jr z, .okay + ld hl, .Lucky +.okay call Random ld c, a -.asm_93017 +.loop ld a, [hli] cp c - jr nc, .asm_9301e + jr nc, .done inc hl - jr .asm_93017 -.asm_9301e + jr .loop + +.done ld a, [hl] - ld [wc709], a + ld [wSlotBias], a ret + ; 93023 (24:7023) -Unknown_93023: ; 93023 - db $01, $00 - db $03, $04 - db $0a, $14 - db $14, $10 - db $28, $0c - db $30, $08 - db $ff, $ff +.Normal: ; 93023 + db $01, SLOTS_SEVEN ; 1/256 + db $03, SLOTS_POKEBALL ; 1/128 + db $0a, SLOTS_STARYU ; 7/256 + db $14, SLOTS_SQUIRTLE ; 5/128 + db $28, SLOTS_PIKACHU ; 5/64 + db $30, SLOTS_CHERRY ; 1/32 + db $ff, SLOTS_NOMATCH ; everything else ; 93031 -Unknown_93031: ; 93031 - db $02, $00 - db $03, $04 - db $08, $14 - db $10, $10 - db $1e, $0c - db $50, $08 - db $ff, $ff +.Lucky: ; 93031 + db $02, SLOTS_SEVEN ; 1/128 + db $03, SLOTS_POKEBALL ; 1/256 + db $08, SLOTS_STARYU ; 5/256 + db $10, SLOTS_SQUIRTLE ; 1/32 + db $1e, SLOTS_PIKACHU ; 7/128 + db $50, SLOTS_CHERRY ; 25/128 + db $ff, SLOTS_NOMATCH ; everything else ; 9303f -Function9303f: ; 9303f (24:703f) - ld b, $14 - ld a, [wc70a] +Slots_IlluminateBetLights: ; 9303f (24:703f) + ld b, $14 ; turned on + ld a, [wSlotBet] dec a - jr z, asm_93066 + jr z, Slots_Lights1OnOff dec a - jr z, asm_9305a - jr asm_9304e + jr z, Slots_Lights2OnOff + jr Slots_Lights3OnOff -Function9304c: ; 9304c (24:704c) - ld b, $23 -asm_9304e: ; 9304e (24:704e) +Slots_DeilluminateBetLights: ; 9304c (24:704c) + ld b, $23 ; turned off +Slots_Lights3OnOff: ; 9304e (24:704e) hlcoord 3, 2 - call Function93069 + call Slots_TurnLightsOnOrOff hlcoord 3, 10 - call Function93069 -asm_9305a: ; 9305a (24:705a) + call Slots_TurnLightsOnOrOff +Slots_Lights2OnOff: ; 9305a (24:705a) hlcoord 3, 4 - call Function93069 + call Slots_TurnLightsOnOrOff hlcoord 3, 8 - call Function93069 -asm_93066: ; 93066 (24:7066) + call Slots_TurnLightsOnOrOff +Slots_Lights1OnOff: ; 93066 (24:7066) hlcoord 3, 6 -Function93069: ; 93069 (24:7069) +Slots_TurnLightsOnOrOff: ; 93069 (24:7069) ld a, b ld [hl], a - ld de, $d + ld de, SCREEN_WIDTH / 2 + 3 add hl, de ld [hl], a - ld de, $7 + ld de, SCREEN_WIDTH / 2 - 3 add hl, de inc a ld [hl], a - ld de, $d + ld de, SCREEN_WIDTH / 2 + 3 add hl, de ld [hl], a ret -Function9307c: ; 9307c (24:707c) - ld hl, UnknownText_0x930c7 +Slots_AskBet: ; 9307c (24:707c) +.loop + ld hl, .Text_BetHowManyCoins call PrintText - ld hl, MenuDataHeader_0x930d6 + ld hl, .MenuDataHeader call LoadMenuDataHeader - call InterpretMenu2 + call VerticalMenu call WriteBackup ret c - ld a, [MenuSelection2] + ld a, [wMenuCursorY] ld b, a - ld a, $4 + ld a, 4 sub b - ld [wc70a], a + ld [wSlotBet], a ld hl, Coins ld c, a ld a, [hli] and a - jr nz, .asm_930ad + jr nz, .Start ld a, [hl] cp c - jr nc, .asm_930ad - ld hl, UnknownText_0x930d1 + jr nc, .Start + ld hl, .Text_NotEnoughCoins call PrintText - jr Function9307c -.asm_930ad + jr .loop + +.Start ld hl, Coins + 1 ld a, [hl] sub c ld [hld], a - jr nc, .asm_930b6 + jr nc, .ok dec [hl] -.asm_930b6 +.ok call WaitSFX ld de, SFX_PAY_DAY call PlaySFX - ld hl, UnknownText_0x930cc + ld hl, .Text_Start call PrintText and a ret + ; 930c7 (24:70c7) -UnknownText_0x930c7: ; 0x930c7 +.Text_BetHowManyCoins: ; 0x930c7 ; Bet how many coins? text_jump UnknownText_0x1c5049 db "@" ; 0x930cc -UnknownText_0x930cc: ; 0x930cc +.Text_Start: ; 0x930cc ; Start! text_jump UnknownText_0x1c505e db "@" ; 0x930d1 -UnknownText_0x930d1: ; 0x930d1 +.Text_NotEnoughCoins: ; 0x930d1 ; Not enough coins. text_jump UnknownText_0x1c5066 db "@" ; 0x930d6 -MenuDataHeader_0x930d6: ; 0x930d6 +.MenuDataHeader: ; 0x930d6 db $40 ; flags db 10, 14 ; start coords db 17, 19 ; end coords - dw MenuData2_0x930de + dw .MenuData2 db 1 ; default option ; 0x930de -MenuData2_0x930de: ; 0x930de +.MenuData2: ; 0x930de db $80 ; flags db 3 ; items db " 3@" @@ -1706,128 +1783,125 @@ MenuData2_0x930de: ; 0x930de db " 1@" ; 0x930e9 -Function930e9: ; 930e9 (24:70e9) +Slots_AskPlayAgain: ; 930e9 (24:70e9) ld hl, Coins ld a, [hli] or [hl] - jr nz, .asm_930fd - ld hl, UnknownText_9311a + jr nz, .you_have_coins + ld hl, .Text_OutOfCoins call PrintText ld c, 60 call DelayFrames - jr .asm_93118 -.asm_930fd - ld hl, UnknownText_9311f + jr .exit_slots + +.you_have_coins + ld hl, .Text_PlayAgain call PrintText call LoadMenuTextBox lb bc, 14, 12 call PlaceYesNoBox - ld a, [MenuSelection2] + ld a, [wMenuCursorY] dec a call WriteBackup and a - jr nz, .asm_93118 + jr nz, .exit_slots and a ret -.asm_93118 + +.exit_slots scf ret + ; 9311a (24:711a) -UnknownText_9311a: ; 9311a +.Text_OutOfCoins: ; 9311a text_jump UnknownText_0x1c5079 db "@" -UnknownText_9311f: ; 9311f +.Text_PlayAgain: ; 9311f text_jump UnknownText_0x1c5092 db "@" -Function93124: ; 93124 (24:7124) - ld a, [EffectFailed] - cp $ff - jr z, .asm_93151 +SlotGetPayout: ; 93124 (24:7124) + ld a, [wSlotMatched] + cp -1 + jr z, .no_win srl a ld e, a ld d, 0 - ld hl, .data_93145 + ld hl, .PayoutTable add hl, de ld a, [hli] - ld [PlayerUsedMoves], a + ld [wPayout + 1], a ld e, a ld a, [hl] - ld [wc711], a + ld [wPayout], a ld d, a callba MobileFn_105fe3 ret -.data_93145 - db $2c, $01 - db $32, $00 - db $06, $00 - db $08, $00 - db $0a, $00 - db $0f, $00 +.PayoutTable + dw 300 + dw 50 + dw 6 + dw 8 + dw 10 + dw 15 -.asm_93151 - ld hl, wc711 +.no_win + ld hl, wPayout xor a ld [hli], a ld [hl], a ret -Function93158: ; 93158 (24:7158) - ld a, [EffectFailed] - cp $ff - jr nz, .asm_9316c - ld hl, UnknownText_0x931e0 +SlotPayoutText: ; 93158 (24:7158) + ld a, [wSlotMatched] + cp -1 + jr nz, .MatchedSomething + ld hl, .Text_Darn call PrintText callba MobileFn_105fd0 ret -.asm_9316c + +.MatchedSomething srl a ld e, a ld d, 0 - ld hl, Unknown_93195 + ld hl, .PayoutStrings rept 3 add hl, de endr ld de, StringBuffer2 - ld bc, $4 + ld bc, 4 call CopyBytes ld a, [hli] ld h, [hl] ld l, a - ld de, .asm_93188 + ld de, .return push de jp [hl] -.asm_93188 - ld hl, UnknownText_0x931b9 + +.return + ld hl, .Text_PrintPayout call PrintText callba MobileFn_105f9f ret + ; 93195 (24:7195) -Unknown_93195: ; 93195 - db "300@" - dw Function931e5 - db "50@@" - dw Function9320b - db "6@@@" - dw Function93214 - db "8@@@" - dw Function93214 - db "10@@" - dw Function93214 - db "15@@" - dw Function93214 +.PayoutStrings: ; 93195 + dbw "300@", .LinedUpSevens + dbw "50@@", .LinedUpPokeballs + dbw "6@@@", .LinedUpMonOrCherry + dbw "8@@@", .LinedUpMonOrCherry + dbw "10@@", .LinedUpMonOrCherry + dbw "15@@", .LinedUpMonOrCherry ; 931b9 -UnknownText_0x931b9: ; 0x931b9 +.Text_PrintPayout: ; 0x931b9 start_asm -; 0x931ba - -Function931ba: ; 931ba - ld a, [EffectFailed] + ld a, [wSlotMatched] add $25 ldcoord_a 2, 13 inc a @@ -1837,29 +1911,30 @@ Function931ba: ; 931ba inc a ldcoord_a 3, 14 hlcoord 18, 17 - ld [hl], $ee - ld hl, UnknownText_0x931db + ld [hl], "▼" + ld hl, .Text_LinedUpWonCoins rept 4 inc bc endr ret + ; 931db -UnknownText_0x931db: ; 0x931db +.Text_LinedUpWonCoins: ; 0x931db ; lined up! Won @ coins! text_jump UnknownText_0x1c509f db "@" ; 0x931e0 -UnknownText_0x931e0: ; 0x931e0 +.Text_Darn: ; 0x931e0 ; Darn! text_jump UnknownText_0x1c50bb db "@" ; 0x931e5 -Function931e5: ; 931e5 +.LinedUpSevens: ; 931e5 ld a, SFX_2ND_PLACE - call Function9331e + call Slots_PlaySFX call WaitSFX ld a, [wd002] and a @@ -1868,7 +1943,7 @@ Function931e5: ; 931e5 and $14 ret z ld a, $ff - ld [wc709], a + ld [wSlotBias], a ret .asm_931ff @@ -1876,30 +1951,33 @@ Function931e5: ; 931e5 and $1c ret z ld a, $ff - ld [wc709], a + ld [wSlotBias], a ret + ; 9320b -Function9320b: ; 9320b +.LinedUpPokeballs: ; 9320b ld a, SFX_3RD_PLACE - call Function9331e + call Slots_PlaySFX call WaitSFX ret + ; 93214 -Function93214: ; 93214 +.LinedUpMonOrCherry: ; 93214 ld a, SFX_PRESENT - call Function9331e + call Slots_PlaySFX call WaitSFX ret + ; 9321d -Function9321d: ; 9321d (24:721d) - ld hl, $b +SlotMachine_AnimateGolem: ; 9321d (24:721d) + ld hl, SPRITEANIMSTRUCT_0B add hl, bc ld e, [hl] ld d, 0 - ld hl, Jumptable_9322d + ld hl, .Jumptable rept 2 add hl, de endr @@ -1908,76 +1986,79 @@ endr ld l, a jp [hl] -Jumptable_9322d: ; 9322d (24:722d) - dw Function93233 - dw Function93259 - dw Function93289 +.Jumptable: ; 9322d (24:722d) + jumptable_start + jumptable .init + jumptable .fall + jumptable .roll -Function93233: ; 93233 (24:7233) - ld hl, $e +.init: ; 93233 (24:7233) + ld hl, SPRITEANIMSTRUCT_0E add hl, bc ld a, [hl] and a - jr nz, .asm_93247 + jr nz, .retain ld a, $2 ld [wcf64], a - ld hl, 0 + ld hl, SPRITEANIMSTRUCT_INDEX add hl, bc ld [hl], $0 ret -.asm_93247 + +.retain dec [hl] - ld hl, $b + ld hl, SPRITEANIMSTRUCT_0B add hl, bc inc [hl] - ld hl, $c + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld [hl], $30 - ld hl, $6 + ld hl, SPRITEANIMSTRUCT_XOFFSET add hl, bc ld [hl], $0 -Function93259: ; 93259 (24:7259) - ld hl, $c +.fall: ; 93259 (24:7259) + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] cp $20 - jr c, .asm_93273 + jr c, .play_sound dec [hl] ld e, a - ld d, $70 - callba Functionce765 + ld d, 14 * 8 + callba BattleAnim_Sine_e ld a, e - ld hl, $7 + ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld [hl], a ret -.asm_93273 - ld hl, $b + +.play_sound + ld hl, SPRITEANIMSTRUCT_0B add hl, bc inc [hl] - ld hl, $d + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld [hl], $2 ld a, $1 ld [wcf64], a ld a, SFX_PLACE_PUZZLE_PIECE_DOWN - call Function9331e + call Slots_PlaySFX ret -Function93289: ; 93289 (24:7289) - ld hl, $6 +.roll: ; 93289 (24:7289) + ld hl, SPRITEANIMSTRUCT_XOFFSET add hl, bc ld a, [hl] rept 2 inc [hl] endr - cp $48 - jr nc, .asm_932a3 + cp 9 * 8 + jr nc, .restart and $3 ret nz - ld hl, $d + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld a, [hl] xor $ff @@ -1985,20 +2066,21 @@ endr ld [hl], a ld [hSCY], a ret -.asm_932a3 - ld hl, $b + +.restart + ld hl, SPRITEANIMSTRUCT_0B add hl, bc xor a ld [hl], a ld [hSCY], a ret -Function932ac: ; 932ac (24:72ac) - ld hl, $b +Slots_AnimateChansey: ; 932ac (24:72ac) + ld hl, SPRITEANIMSTRUCT_0B add hl, bc ld e, [hl] ld d, 0 - ld hl, Jumptable_932bc + ld hl, .Jumptable rept 2 add hl, de endr @@ -2007,92 +2089,153 @@ endr ld l, a jp [hl] -Jumptable_932bc: ; 932bc (24:72bc) - dw Function932c2 - dw Function932e0 - dw Function932fc +.Jumptable: ; 932bc (24:72bc) + jumptable_start + jumptable .walk + jumptable .one + jumptable .two -Function932c2: ; 932c2 (24:72c2) - ld hl, $4 +.walk: ; 932c2 (24:72c2) + ld hl, SPRITEANIMSTRUCT_XCOORD add hl, bc ld a, [hl] inc [hl] - cp $68 - jr z, .asm_932d6 + cp 13 * 8 + jr z, .limit and $f ret nz ld de, SFX_JUMP_OVER_LEDGE call PlaySFX ret -.asm_932d6 - ld hl, $b + +.limit + ld hl, SPRITEANIMSTRUCT_0B add hl, bc inc [hl] ld a, $1 ld [wcf64], a -Function932e0: ; 932e0 (24:72e0) +.one: ; 932e0 (24:72e0) ld a, [wcf64] cp $2 - jr z, .asm_932f1 + jr z, .retain cp $5 ret nz - ld hl, 0 + ld hl, SPRITEANIMSTRUCT_INDEX add hl, bc ld [hl], $0 ret -.asm_932f1 - ld hl, $b + +.retain + ld hl, SPRITEANIMSTRUCT_0B add hl, bc inc [hl] - ld hl, $c + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld [hl], $8 - -Function932fc: ; 932fc (24:72fc) - ld hl, $c +.two: ; 932fc (24:72fc) + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] and a - jr z, .asm_93306 + jr z, .spawn_egg dec [hl] ret -.asm_93306 - ld hl, $b + +.spawn_egg + ld hl, SPRITEANIMSTRUCT_0B add hl, bc dec [hl] push bc depixel 12, 13, 0, 4 - ld a, SPRITE_ANIM_INDEX_08 + ld a, SPRITE_ANIM_INDEX_SLOTS_EGG call _InitSpriteAnimStruct pop bc ret + ; 93316 (24:7316) -Function93316: ; 93316 +Slots_WaitSFX: ; 93316 push bc ld c, 16 call DelayFrames pop bc ret + ; 9331e -Function9331e: ; 9331e (24:731e) +Slots_PlaySFX: ; 9331e (24:731e) push de ld e, a ld d, 0 call PlaySFX pop de ret + ; 93327 (24:7327) -Unknown_93327: ; 93327 - db $00, $08, $14, $0c, $10, $00, $08, $14, $0c, $10, $04, $08, $14, $0c, $10, $00, $08, $14 -Unknown_93339: ; 93339 - db $00, $0c, $08, $10, $14, $04, $0c, $08, $10, $14, $04, $0c, $08, $10, $14, $00, $0c, $08 -Unknown_9334b: ; 9334b - db $00, $0c, $08, $10, $14, $0c, $08, $10, $14, $0c, $04, $08, $10, $14, $0c, $00, $0c, $08 +; The first three positions are repeated to +; avoid needing to check indices when copying. +Reel1Tilemap: ; 93327 + db SLOTS_SEVEN ; 0 + db SLOTS_CHERRY ; 1 + db SLOTS_STARYU ; 2 + db SLOTS_PIKACHU ; 3 + db SLOTS_SQUIRTLE ; 4 + db SLOTS_SEVEN ; 5 + db SLOTS_CHERRY ; 6 + db SLOTS_STARYU ; 7 + db SLOTS_PIKACHU ; 8 + db SLOTS_SQUIRTLE ; 9 + db SLOTS_POKEBALL ; 10 + db SLOTS_CHERRY ; 11 + db SLOTS_STARYU ; 12 + db SLOTS_PIKACHU ; 13 + db SLOTS_SQUIRTLE ; 14 + db SLOTS_SEVEN ; 0 + db SLOTS_CHERRY ; 1 + db SLOTS_STARYU ; 2 + +Reel2Tilemap: ; 93339 + db SLOTS_SEVEN ; 0 + db SLOTS_PIKACHU ; 1 + db SLOTS_CHERRY ; 2 + db SLOTS_SQUIRTLE ; 3 + db SLOTS_STARYU ; 4 + db SLOTS_POKEBALL ; 5 + db SLOTS_PIKACHU ; 6 + db SLOTS_CHERRY ; 7 + db SLOTS_SQUIRTLE ; 8 + db SLOTS_STARYU ; 9 + db SLOTS_POKEBALL ; 10 + db SLOTS_PIKACHU ; 11 + db SLOTS_CHERRY ; 12 + db SLOTS_SQUIRTLE ; 13 + db SLOTS_STARYU ; 14 + db SLOTS_SEVEN ; 0 + db SLOTS_PIKACHU ; 1 + db SLOTS_CHERRY ; 2 + +Reel3Tilemap: ; 9334b + db SLOTS_SEVEN ; 0 + db SLOTS_PIKACHU ; 1 + db SLOTS_CHERRY ; 2 + db SLOTS_SQUIRTLE ; 3 + db SLOTS_STARYU ; 4 + db SLOTS_PIKACHU ; 5 + db SLOTS_CHERRY ; 6 + db SLOTS_SQUIRTLE ; 7 + db SLOTS_STARYU ; 8 + db SLOTS_PIKACHU ; 9 + db SLOTS_POKEBALL ; 10 + db SLOTS_CHERRY ; 11 + db SLOTS_SQUIRTLE ; 12 + db SLOTS_STARYU ; 13 + db SLOTS_PIKACHU ; 14 + db SLOTS_SEVEN ; 0 + db SLOTS_PIKACHU ; 1 + db SLOTS_CHERRY ; 2 ; 9335d SlotsTilemap: ; 9335d diff --git a/engine/specials.asm b/engine/specials.asm index 09edbb263..3db37eacc 100644 --- a/engine/specials.asm +++ b/engine/specials.asm @@ -26,7 +26,7 @@ SpecialsPointers:: ; c029 add_special Special_CheckBothSelectedSameRoom add_special Special_FailedLinkToPast add_special Special_CloseLink - add_special Special_AbortLink + add_special WaitForOtherPlayerToExit add_special Special_SetBitsForBattleRequest add_special Special_SetBitsForTimeCapsuleRequest add_special Special_CheckTimeCapsuleCompatibility @@ -101,7 +101,7 @@ SpecialsPointers:: ; c029 add_special SpecialCheckPokerus add_special Special_DisplayCoinCaseBalance add_special Special_DisplayMoneyAndCoinBalance - add_special PlaceMoneyTopRightOW + add_special PlaceMoneyTopRight add_special Special_CheckForLuckyNumberWinners add_special Special_CheckLuckyNumberShowFlag add_special Special_ResetLuckyNumberShowFlag @@ -126,7 +126,7 @@ SpecialsPointers:: ; c029 add_special SpecialTrainerHouse add_special PhotoStudio add_special InitRoamMons - add_special Special_RotatePalettesRightMusic + add_special Special_FadeOutMusic add_special Diploma add_special PrintDiploma @@ -175,7 +175,7 @@ SpecialsPointers:: ; c029 add_special SpecialBeastsCheck add_special SpecialMonCheck add_special Special_SetPlayerPalette - add_special Function170bd2 + add_special ret_170bd2 add_special Mobile_SelectThreeMons add_special Function1037eb add_special Function10383c @@ -256,7 +256,7 @@ Special_FindThatSpeciesYourTrainerID: ; c284 jr FoundOne FoundOne: ; c292 - ld a, $1 + ld a, TRUE ld [ScriptVar], a ret @@ -334,11 +334,11 @@ Special_GetMysteryGiftItem: ; c309 call GetSRAMBank ld a, [sMysteryGiftItem] ld [CurItem], a - ld a, $1 + ld a, 1 ld [wItemQuantityChangeBuffer], a ld hl, NumItems call ReceiveItem - jr nc, .asm_c33d + jr nc, .no_room xor a ld [sMysteryGiftItem], a call CloseSRAM @@ -347,11 +347,11 @@ Special_GetMysteryGiftItem: ; c309 call GetItemName ld hl, .ReceiveItemText call PrintText - ld a, $1 + ld a, TRUE ld [ScriptVar], a ret -.asm_c33d +.no_room call CloseSRAM xor a ld [ScriptVar], a @@ -380,8 +380,8 @@ MapRadio: ; c355 Special_UnownPuzzle: ; c360 call FadeToMenu - callba Functione1190 - ld a, [wd0ec] + callba UnownPuzzle + ld a, [wSolvedUnownPuzzle] ld [ScriptVar], a call ExitAllMenus ret @@ -433,35 +433,35 @@ Special_CheckCoins: ; c3ae ld hl, Coins ld a, [hli] or [hl] - jr z, .asm_c3c4 + jr z, .no_coins ld a, COIN_CASE ld [CurItem], a ld hl, NumItems call CheckItem - jr nc, .asm_c3c9 + jr nc, .no_coin_case and a ret -.asm_c3c4 - ld hl, UnknownText_0xc3d1 - jr .asm_c3cc +.no_coins + ld hl, .NoCoinsText + jr .print -.asm_c3c9 - ld hl, UnknownText_0xc3d6 +.no_coin_case + ld hl, .NoCoinCaseText -.asm_c3cc +.print call PrintText scf ret ; c3d1 -UnknownText_0xc3d1: ; 0xc3d1 +.NoCoinsText: ; 0xc3d1 ; You have no coins. text_jump UnknownText_0x1bd3d7 db "@" ; 0xc3d6 -UnknownText_0xc3d6: ; 0xc3d6 +.NoCoinCaseText: ; 0xc3d6 ; You don't have a COIN CASE. text_jump UnknownText_0x1bd3eb db "@" @@ -498,22 +498,22 @@ Special_ActivateFishingSwarm: ; c3fc ; c403 -LoadWildData:: ; c403 +StoreSwarmMapIndices:: ; c403 ld a, c and a - jr nz, .swarm_route35 + jr nz, .yanma ; swarm dark cave violet entrance ld a, d - ld [wdfcc], a + ld [wDunsparceMapGroup], a ld a, e - ld [wdfcd], a + ld [wDunsparceMapNumber], a ret -.swarm_route35 +.yanma ld a, d - ld [wdc5a], a + ld [wYanmaMapGroup], a ld a, e - ld [wdc5b], a + ld [wYanmaMapNumber], a ret ; c419 @@ -557,7 +557,7 @@ SpecialSnorlaxAwake: ; 0xc43d ld hl, .ProximityCoords .loop ld a, [hli] - cp $ff + cp -1 jr z, .nope cp b jr nz, .nextcoord @@ -565,7 +565,7 @@ SpecialSnorlaxAwake: ; 0xc43d cp c jr nz, .loop - ld a, $1 + ld a, TRUE jr .done .nextcoord @@ -585,7 +585,7 @@ SpecialSnorlaxAwake: ; 0xc43d db 35, 10 ; below db 36, 8 ; right db 36, 9 ; right - db $ff + db -1 PlayCurMonCry: ; c472 @@ -616,7 +616,7 @@ SpecialGameboyCheck: ; c478 ret -Special_RotatePalettesRightMusic: ; c48f +Special_FadeOutMusic: ; c48f ld a, MUSIC_NONE % $100 ld [MusicFadeIDLo], a ld a, MUSIC_NONE / $100 diff --git a/engine/sprite_anims.asm b/engine/sprite_anims.asm new file mode 100755 index 000000000..89340f610 --- /dev/null +++ b/engine/sprite_anims.asm @@ -0,0 +1,897 @@ +DoAnimFrame: ; 8d24b + ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID + add hl, bc + ld e, [hl] + ld d, 0 + ld hl, .Jumptable +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; 8d25b + + +.Jumptable: ; 8d25b (23:525b) + jumptable_start + jumptable .Null ; null + jumptable .one ; bouncing mon icon + jumptable .two ; bouncing mon icon, selected + jumptable .three ; bouncing mon icon, menu open + jumptable .four + jumptable .five + jumptable .GameFreakLogo ; Game Freak logo + jumptable .seven + jumptable .eight + jumptable .SlotsGolem ; Something to do with slots + jumptable .SlotsChansey ; Something to do with slots + jumptable .SlotsChanseyEgg ; Something to do with slots + jumptable .twelve ; blinking cursor + jumptable .thirteen + jumptable .fourteen + jumptable .fifteen + jumptable .sixteen + jumptable .seventeen + jumptable .eighteen + jumptable .EggShell ; finish egg hatching animation + jumptable .RadioTuningKnob ; radio tuning knob + jumptable .twentyone ; cut grass leaves + jumptable .FlyFrom ; flying sprite + jumptable .FlyLeaf ; flying leaves + jumptable .FlyTo ; fly to + jumptable .twentyfive + jumptable .twentysix + jumptable .twentyseven + jumptable .twentyeight + jumptable .twentynine ; intro suicune + jumptable .thirty ; intro pichu wooper + jumptable .thirtyone ; celebi + jumptable .thirtytwo ; intro unown + jumptable .thirtythree ; intro unown F with suicune leaping up + jumptable .thirtyfour ; intro suicune facing away from us + + +.Null: ; 8d2a1 (23:52a1) + ret + +.one: ; 8d2a2 (23:52a2) + ld a, [wMenuCursorY] + + ld hl, SPRITEANIMSTRUCT_INDEX + add hl, bc + cp [hl] + jr z, .two + + ld hl, SPRITEANIMSTRUCT_XCOORD + add hl, bc + ld [hl], 8 * 2 + + ld hl, SPRITEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], $0 + ret + +.two: ; 8d2b9 (23:52b9) + ld hl, SPRITEANIMSTRUCT_XCOORD + add hl, bc + ld [hl], 8 * 3 + + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld a, [hl] + ld d, a + inc [hl] + and $f + ret nz + + ld hl, SPRITEANIMSTRUCT_0D + add hl, bc + ld e, [hl] + + ld hl, SPRITEANIMSTRUCT_YOFFSET + add hl, bc + ld a, d + and $10 ; bit 4 + jr z, .load_Null + ld a, e + and a + jr z, .load_minus_two + cp $1 + jr z, .load_minus_one +.load_Null + xor a + ld [hl], a + ret + +.load_minus_one + ld a, -1 + ld [hl], a + ret + +.load_minus_two + ld a, -2 + ld [hl], a + ret + +.three: ; 8d2ea (23:52ea) + ld a, [wMenuCursorY] + + ld hl, SPRITEANIMSTRUCT_INDEX + add hl, bc + cp [hl] + jr z, .three_offset_right + + ld hl, SPRITEANIMSTRUCT_XCOORD + add hl, bc + ld [hl], 8 * 2 + ret + +.three_offset_right + ld hl, SPRITEANIMSTRUCT_XCOORD + add hl, bc + ld [hl], 8 * 3 + ret + +.four: ; 8d302 (23:5302) + call .anonymous_jumptable + jp [hl] +; 8d306 (23:5306) + +; Anonymous jumptable (see .anonymous_jumptable) + dw .four_Null + dw .four_one +; 8d30a + +.four_Null: ; 8d30a + call .IncrementSpriteAnimStruct0B + + ld hl, SPRITEANIMSTRUCT_INDEX + add hl, bc + ld a, [hl] + + ld hl, SPRITEANIMSTRUCT_0D + add hl, bc + and $3 + ld [hl], a + inc [hl] + swap a + + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld [hl], a + +.four_one: ; 8d321 + ld hl, SPRITEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $a4 + jr nc, .asm_8d356 + + ld hl, SPRITEANIMSTRUCT_0D + add hl, bc + add $4 + + ld hl, SPRITEANIMSTRUCT_XCOORD + add hl, bc + ld [hl], a + + ld hl, SPRITEANIMSTRUCT_YCOORD + add hl, bc + inc [hl] + + ld hl, SPRITEANIMSTRUCT_0D + add hl, bc + ld a, [hl] + sla a + sla a + ld d, $2 + + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld a, [hl] + add $3 + ld [hl], a + call .Sprites_Sine + + ld hl, SPRITEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + ret + +.asm_8d356 + call DeinitializeSprite + ret +; 8d35a + +.twentyfive: ; 8d35a (23:535a) + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld a, [hl] + inc a + ld [hl], a + ld d, $2 + call .Sprites_Sine + + ld hl, SPRITEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + ret + +.five: ; 8d36c (23:536c) + callab Function11a3b + ret + +.twelve: ; 8d373 (23:5373) + callab Function120c1 + ret + +.GameFreakLogo: ; 8d37a (23:537a) + callab GameFreakLogoJumper + ret + +.seven: ; 8d381 (23:5381) + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld a, [hl] + and a + jr z, .asm_8d3ba +rept 2 + dec [hl] +endr + ld d, a + and $1f + jr nz, .asm_8d395 + + ld hl, SPRITEANIMSTRUCT_0D + add hl, bc + dec [hl] +.asm_8d395 + ld hl, SPRITEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + push af + push de + call .Sprites_Sine + + ld hl, SPRITEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + pop de + pop af + call .Sprites_Cosine + + ld hl, SPRITEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a + + ld hl, SPRITEANIMSTRUCT_0D + add hl, bc + ld a, [hl] + + ld hl, SPRITEANIMSTRUCT_0B + add hl, bc + add [hl] + ld [hl], a + ret + +.asm_8d3ba + ld a, $1 + ld [wcf64], a + call DeinitializeSprite + ret + +.eight: ; 8d3c3 (23:53c3) + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld a, [hli] + or [hl] + jr z, .asm_8d41e + + ld hl, SPRITEANIMSTRUCT_0F + add hl, bc + ld d, [hl] + + ld hl, SPRITEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + push af + push de + call .Sprites_Sine + + ld hl, SPRITEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + pop de + pop af + call .Sprites_Cosine + + ld hl, SPRITEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a + + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld e, [hl] + inc hl + ld d, [hl] + + ld hl, SPRITEANIMSTRUCT_0E + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + add hl, de + ld e, l + ld d, h + + ld hl, SPRITEANIMSTRUCT_0E + add hl, bc + ld [hl], e + inc hl + ld [hl], d + + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + ld de, -$10 + add hl, de + ld e, l + ld d, h + + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld [hl], e + inc hl + ld [hl], d + + ld hl, SPRITEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + xor $20 + ld [hl], a + ret + +.asm_8d41e + call DeinitializeSprite + ret + +.SlotsGolem: ; 8d422 (23:5422) + callab SlotMachine_AnimateGolem + ret + +.SlotsChansey: ; 8d429 (23:5429) + callab Slots_AnimateChansey + ld hl, wcf64 + ld a, [hl] + cp $2 + ret nz + ld [hl], $3 + ld a, $f + call _ReinitSpriteAnimFrame + ret + +.SlotsChanseyEgg: ; 8d43e (23:543e) + ld hl, SPRITEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + dec [hl] + ld e, a + and $1 + jr z, .move_vertical + + ld hl, SPRITEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp 15 * 8 + jr c, .move_right + call DeinitializeSprite + ld a, $4 + ld [wcf64], a + ld de, SFX_PLACE_PUZZLE_PIECE_DOWN + call PlaySFX + ret + +.move_right + inc [hl] +.move_vertical + ld a, e + ld d, $20 + call .Sprites_Sine + + ld hl, SPRITEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + ret + +.thirteen: ; 8d46e (23:546e) + callab ret_e00ed + ret + +.fifteen: ; 8d475 (23:5475) + callab Function90d41 + ret + +.fourteen: ; 8d47c (23:547c) + callab Functione21a1 + ret + +.sixteen: ; 8d483 (23:5483) + call .anonymous_jumptable + jp [hl] +; 8d487 (23:5487) + +; Anonymous jumptable (see .anonymous_jumptable) + dw .sixteen_Null + dw .sixteen_one + dw .sixteen_two + dw .sixteen_three + dw .sixteen_four + dw .sixteen_five +; 8d493 + +.sixteen_Null: ; 8d493 + ld a, $14 + call _ReinitSpriteAnimFrame + + ld hl, SPRITEANIMSTRUCT_0B + add hl, bc + ld [hl], $2 + + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld [hl], $20 + ret +; 8d4a5 + +.sixteen_two: ; 8d4a5 + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld a, [hl] + and a + jr z, .asm_8d4af + dec [hl] + ret + +.asm_8d4af + call .IncrementSpriteAnimStruct0B + + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld [hl], $40 + +.sixteen_three: ; 8d4b8 + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld a, [hl] + cp $30 + jr c, .asm_8d4cd + dec [hl] + ld d, $28 + call .Sprites_Sine + + ld hl, SPRITEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + ret + +.asm_8d4cd + ld de, SFX_GOT_SAFARI_BALLS + call PlaySFX + jr .sixteen_five +; 8d4d5 + +.sixteen_one: ; 8d4d5 + ld hl, SPRITEANIMSTRUCT_0B + add hl, bc + ld [hl], $4 + + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld [hl], $30 + + ld hl, SPRITEANIMSTRUCT_0D + add hl, bc + ld [hl], $24 + ret +; 8d4e8 + +.sixteen_four: ; 8d4e8 + ld hl, SPRITEANIMSTRUCT_0D + add hl, bc + ld a, [hl] + and a + jr z, .asm_8d51c + ld d, a + + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld a, [hl] + call Sprites_Sine + + ld hl, SPRITEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + inc [hl] + ld a, [hl] + and $3f + ret nz + + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld [hl], $20 + + ld hl, SPRITEANIMSTRUCT_0D + add hl, bc + ld a, [hl] + sub $c + ld [hl], a + ld de, SFX_SWITCH_POKEMON + call PlaySFX + ret + +.asm_8d51c + xor a + + ld hl, SPRITEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + call .IncrementSpriteAnimStruct0B + ret + +.sixteen_five: ; 8d526 + call DeinitializeSprite + ret +; 8d52a + +.seventeen: ; 8d52a (23:552a) + ld hl, SPRITEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] +rept 2 + inc [hl] +endr + cp $b0 + jr nc, .asm_8d53f + and $3 + ret nz + ld de, SFX_POKEBALLS_PLACED_ON_TABLE + call PlaySFX + ret + +.asm_8d53f + call DeinitializeSprite + ret + +.eighteen: ; 8d543 (23:5543) + callab Function29676 + ret + +.EggShell: ; 8d54a (23:554a) + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld a, [hl] + cp $80 + jr nc, .finish_EggShell + ld d, a + add $8 + ld [hl], a + + ld hl, SPRITEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + xor $20 + ld [hl], a + + push af + push de + call .Sprites_Sine + + ld hl, SPRITEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + + pop de + pop af + call .Sprites_Cosine + + ld hl, SPRITEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a + ret + +.finish_EggShell + call DeinitializeSprite + ret + +.RadioTuningKnob: ; 8d578 (23:5578) + callab AnimateTuningKnob + ret + +.twentyone: ; 8d57f (23:557f) + ld hl, SPRITEANIMSTRUCT_0D + add hl, bc + ld e, [hl] + inc hl + ld d, [hl] + ld hl, $80 + add hl, de + ld e, l + ld d, h + + ld hl, SPRITEANIMSTRUCT_0D + add hl, bc + ld [hl], e + inc hl + ld [hl], d + + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld a, [hl] +rept 3 + inc [hl] +endr + push af + push de + call .Sprites_Sine + + ld hl, SPRITEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + pop de + pop af + call .Sprites_Cosine + + ld hl, SPRITEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a + ret + +.FlyFrom: ; 8d5b0 (23:55b0) + ld hl, SPRITEANIMSTRUCT_YCOORD + add hl, bc + ld a, [hl] + and a + ret z + + ld hl, SPRITEANIMSTRUCT_0D + add hl, bc + ld a, [hl] + inc [hl] + cp $40 + ret c + + ld hl, SPRITEANIMSTRUCT_YCOORD + add hl, bc +rept 2 + dec [hl] +endr + + ld hl, SPRITEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + ld d, a + cp $40 + jr nc, .skip + add $8 + ld [hl], a +.skip + ld hl, SPRITEANIMSTRUCT_0E + add hl, bc + ld a, [hl] + inc [hl] + call .Sprites_Cosine + + ld hl, SPRITEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a + ret + +.FlyLeaf: ; 8d5e2 (23:55e2) + ld hl, SPRITEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp -9 * 8 + jr nc, .delete_leaf +rept 2 + inc [hl] +endr + + ld hl, SPRITEANIMSTRUCT_YCOORD + add hl, bc + dec [hl] + + ld d, $40 + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld a, [hl] + inc [hl] + call .Sprites_Cosine + + ld hl, SPRITEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a + ret + +.delete_leaf + call DeinitializeSprite + ret + +.FlyTo: ; 8d607 (23:5607) + ld hl, SPRITEANIMSTRUCT_YCOORD + add hl, bc + ld a, [hl] + cp 10 * 8 + 4 + ret z + + ld hl, SPRITEANIMSTRUCT_YCOORD + add hl, bc +rept 2 + inc [hl] +endr + + ld hl, SPRITEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + ld d, a + and a + jr z, .asm_8d621 + sub $2 + ld [hl], a +.asm_8d621 + ld hl, SPRITEANIMSTRUCT_0E + add hl, bc + ld a, [hl] + inc [hl] + call .Sprites_Cosine + + ld hl, SPRITEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a + ret + +.twentyseven: ; 8d630 (23:5630) + callba Function108bc7 + ret + +.twentyeight: ; 8d637 (23:5637) + callba Function108be0 + ret + +.twentynine: ; 8d63e (23:563e) + ld a, [wcf65] + and a + jr nz, .asm_8d645 + ret +.asm_8d645 + ld hl, SPRITEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], $0 + + ld hl, SPRITEANIMSTRUCT_0D + add hl, bc + ld a, [hl] + add $2 + ld [hl], a + xor $ff + inc a + ld d, $20 + call .Sprites_Sine + + ld hl, SPRITEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + ld a, $36 + call _ReinitSpriteAnimFrame + ret + +.thirty: ; 8d666 (23:5666) + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld a, [hl] + cp $14 + jr nc, .asm_8d67f + add $2 + ld [hl], a + xor $ff + inc a + ld d, $20 + call .Sprites_Sine + + ld hl, SPRITEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a +.asm_8d67f + ret + +.thirtytwo: ; 8d680 (23:5680) + ld hl, SPRITEANIMSTRUCT_0B + add hl, bc + ld d, [hl] +rept 3 + inc [hl] +endr + + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld a, [hl] + push af + push de + call .Sprites_Sine + + ld hl, SPRITEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + pop de + pop af + call .Sprites_Cosine + + ld hl, SPRITEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a + ret + +.thirtythree: ; 8d6a2 (23:56a2) + ld a, [wcf64] + cp $40 + ret nz + ld a, $3d + call _ReinitSpriteAnimFrame + ret + +.thirtyfour: ; 8d6ae (23:56ae) + ld hl, SPRITEANIMSTRUCT_YCOORD + add hl, bc + ld a, [hl] + add $10 + ld [hl], a + ret + +.twentysix: ; 8d6b7 (23:56b7) + callba Function11d0b6 + ret + +.thirtyone: ; 8d6be (23:56be) + callba UpdateCelebiPosition + ret + +.anonymous_jumptable: ; 8d6c5 (23:56c5) + ld hl, [sp+$0] + ld e, [hl] + inc hl + ld d, [hl] + inc de + + ld hl, SPRITEANIMSTRUCT_0B + add hl, bc + ld l, [hl] + ld h, $0 + add hl, hl + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + ret +; 8d6d8 (23:56d8) + +.IncrementSpriteAnimStruct0B: ; 8d6d8 + ld hl, SPRITEANIMSTRUCT_0B + add hl, bc + inc [hl] + ret +; 8d6de + +.Sprites_Sine: ; 8d6de (23:56de) + call Sprites_Sine + ret + +.Sprites_Cosine: ; 8d6e2 (23:56e2) + call Sprites_Cosine + ret +; 8d6e6 (23:56e6) diff --git a/engine/sprites.asm b/engine/sprites.asm index f12ed1de8..744ef8f6f 100755 --- a/engine/sprites.asm +++ b/engine/sprites.asm @@ -1,6 +1,6 @@ -Function8cf53: ; 8cf53 - ld hl, wc300 - ld bc, wc3c1 - wc300 +ClearSpriteAnims: ; 8cf53 + ld hl, wSpriteAnimDict + ld bc, wSpriteAnimsEnd - wSpriteAnimDict .loop ld [hl], $0 inc hl @@ -11,21 +11,21 @@ Function8cf53: ; 8cf53 ret ; 8cf62 -Function8cf62: ; 8cf62 - call Function8cf69 +PlaySpriteAnimationsAndDelayFrame: ; 8cf62 + call PlaySpriteAnimations call DelayFrame ret ; 8cf69 -Function8cf69: ; 8cf69 +PlaySpriteAnimations: ; 8cf69 push hl push de push bc push af - ld a, $0 - ld [wc3b5], a - call Function8cf7a + ld a, Sprites % $100 + ld [wCurrSpriteOAMAddr], a + call DoNextFrameForAllSprites pop af pop bc @@ -34,8 +34,8 @@ Function8cf69: ; 8cf69 ret ; 8cf7a -Function8cf7a: ; 8cf7a - ld hl, wc314 +DoNextFrameForAllSprites: ; 8cf7a + ld hl, wSpriteAnimationStructs ld e, 10 ; There are 10 structs here. .loop @@ -46,8 +46,8 @@ Function8cf7a: ; 8cf7a ld b, h push hl push de - call Function8d24b ; Uses a massive jumptable - call Function8d04c + call DoAnimFrame ; Uses a massive jumptable + call UpdateAnimFrame pop de pop hl jr c, .done @@ -58,11 +58,11 @@ Function8cf7a: ; 8cf7a dec e jr nz, .loop - ld a, [wc3b5] + ld a, [wCurrSpriteOAMAddr] ld l, a - ld h, Sprites / $0100 + ld h, Sprites / $100 -.loop2 ; Clear (Sprites + [wc3b5] --> SpritesEnd) +.loop2 ; Clear (Sprites + [wCurrSpriteOAMAddr] --> SpritesEnd) ld a, l cp SpritesEnd % $100 jr nc, .done @@ -74,7 +74,7 @@ Function8cf7a: ; 8cf7a ret ; 8cfa8 -Function8cfa8: ; 8cfa8 (23:4fa8) +DoNextFrameForFirst16Sprites: ; 8cfa8 (23:4fa8) ld hl, wSpriteAnimationStructs ld e, 10 @@ -86,8 +86,8 @@ Function8cfa8: ; 8cfa8 (23:4fa8) ld b, h push hl push de - call Function8d24b ; Uses a massive jumptable - call Function8d04c + call DoAnimFrame ; Uses a massive jumptable + call UpdateAnimFrame pop de pop hl jr c, .done @@ -98,13 +98,13 @@ Function8cfa8: ; 8cfa8 (23:4fa8) dec e jr nz, .loop - ld a, [wc3b5] + ld a, [wCurrSpriteOAMAddr] ld l, a ld h, (Sprites + $40) / $100 -.loop2 ; Clear (Sprites + [wc3b5] --> Sprites + $40) +.loop2 ; Clear (Sprites + [wCurrSpriteOAMAddr] --> Sprites + $40) ld a, l - cp (Sprites + $40) % $100 + cp (Sprites + 16 * 4) % $100 jr nc, .done xor a ld [hli], a @@ -114,10 +114,11 @@ Function8cfa8: ; 8cfa8 (23:4fa8) ret InitSpriteAnimStruct:: ; 8cfd6 -; Find if there's any room in the wc314 array, which is 10x16 +; Initialize animation a at pixel x=e, y=d +; Find if there's any room in the wSpriteAnimationStructs array, which is 10x16 push de push af - ld hl, wc314 + ld hl, wSpriteAnimationStructs ld e, 10 .loop ld a, [hl] @@ -138,9 +139,9 @@ InitSpriteAnimStruct:: ; 8cfd6 ; Back up the structure address to bc. ld c, l ld b, h -; Value [wc3b4] is initially set to -1. Set it to +; Value [wSpriteAnimCount] is initially set to -1. Set it to ; the number of objects loaded into this array. - ld hl, wc3b4 + ld hl, wSpriteAnimCount inc [hl] ld a, [hl] and a @@ -148,21 +149,21 @@ InitSpriteAnimStruct:: ; 8cfd6 inc [hl] .initialized -; Get row a of Unknown_8d1c4, copy the pointer into de +; Get row a of SpriteAnimSeqData, copy the pointer into de pop af ld e, a ld d, 0 - ld hl, Unknown_8d1c4 + ld hl, SpriteAnimSeqData rept 3 add hl, de endr ld e, l ld d, h ; Set hl to the first field (field 0) in the current structure. - ld hl, 0 + ld hl, SPRITEANIMSTRUCT_INDEX add hl, bc ; Load the index. - ld a, [wc3b4] + ld a, [wSpriteAnimCount] ld [hli], a ; Copy the table entry to the next two fields. ld a, [de] @@ -171,14 +172,14 @@ endr ld a, [de] ld [hli], a inc de -; Look up the third field from the table in the wc300 array (10x2). +; Look up the third field from the table in the wSpriteAnimDict array (10x2). ; Take the value and load it in ld a, [de] - call LookUpInwSpriteAnimDict + call GetSpriteAnimVTile ld [hli], a pop de -; Set hl to field 4. Kinda pointless, because we're presumably already here. - ld hl, $4 +; Set hl to field 4 (X coordinate). Kinda pointless, because we're presumably already here. + ld hl, SPRITEANIMSTRUCT_XCOORD add hl, bc ; Load the original value of de into here. ld a, e @@ -203,26 +204,26 @@ rept 4 ld [hli], a endr ld [hl], a -; back up the address of the first field to wc3b8 +; back up the address of the first field to wSpriteAnimAddrBackup ld a, c - ld [wc3b8], a + ld [wSpriteAnimAddrBackup], a ld a, b - ld [wc3b8 + 1], a + ld [wSpriteAnimAddrBackup + 1], a ret ; 8d036 -Function8d036: ; 8d036 +DeinitializeSprite: ; 8d036 ; Clear the index field of the struct in bc. - ld hl, 0 + ld hl, SPRITEANIMSTRUCT_INDEX add hl, bc ld [hl], $0 ret ; 8d03d -Function8d03d: ; 8d03d (23:503d) -; Clear the index field of every struct in the wc314 array. - ld hl, wc314 +DeinitializeAllSprites: ; 8d03d (23:503d) +; Clear the index field of every struct in the wSpriteAnimationStructs array. + ld hl, wSpriteAnimationStructs ld bc, $10 ld e, 10 xor a @@ -234,91 +235,101 @@ Function8d03d: ; 8d03d (23:503d) ret -Function8d04c: ; 8d04c - call Function8d0ec ; init WRAM - call Function8d132 ; read from a memory array +UpdateAnimFrame: ; 8d04c + call InitSpriteAnimBuffer ; init WRAM + call GetSpriteAnimFrame ; read from a memory array cp -3 jr z, .done cp -4 - jr z, .almost - call Function8d1a2 ; read from a pointer table - ld a, [wc3ba] + jr z, .delete + call GetFrameOAMPointer + ; add byte to [wCurrAnimVTile] + ld a, [wCurrAnimVTile] add [hl] - ld [wc3ba], a + ld [wCurrAnimVTile], a inc hl + ; load pointer into hl ld a, [hli] ld h, [hl] ld l, a push bc - ld a, [wc3b5] + ld a, [wCurrSpriteOAMAddr] ld e, a ld d, Sprites / $100 ld a, [hli] - ld c, a + ld c, a ; number of objects .loop - ld a, [wc3bc] + ; first byte: y (px) + ; [de] = [wCurrAnimYCoord] + [wCurrAnimYOffset] + [wGlobalAnimYOffset] + AddOrSubtractY([hl]) + ld a, [wCurrAnimYCoord] ld b, a - ld a, [wc3be] + ld a, [wCurrAnimYOffset] add b ld b, a - ld a, [wc3bf] + ld a, [wGlobalAnimYOffset] add b ld b, a - call Function8d0be + call AddOrSubtractY add b ld [de], a inc hl inc de - ld a, [wc3bb] + ; second byte: x (px) + ; [de] = [wCurrAnimXCoord] + [wCurrAnimXOffset] + [wGlobalAnimXOffset] + AddOrSubtractX([hl]) + ld a, [wCurrAnimXCoord] ld b, a - ld a, [wc3bd] + ld a, [wCurrAnimXOffset] add b ld b, a - ld a, [wc3c0] + ld a, [wGlobalAnimXOffset] add b ld b, a - call Function8d0ce + call AddOrSubtractX add b ld [de], a inc hl inc de - ld a, [wc3ba] + ; third byte: vtile + ; [de] = [wCurrAnimVTile] + [hl] + ld a, [wCurrAnimVTile] add [hl] ld [de], a inc hl inc de - call Function8d0de + ; fourth byte: attributes + ; [de] = GetSpriteOAMAttr([hl]) + call GetSpriteOAMAttr ld [de], a inc hl inc de ld a, e - ld [wc3b5], a + ld [wCurrSpriteOAMAddr], a cp SpritesEnd % $100 - jr nc, .outofroom + jr nc, .reached_the_end dec c jr nz, .loop pop bc jr .done -.almost - call Function8d036 - +.delete + call DeinitializeSprite .done and a ret -.outofroom +.reached_the_end pop bc scf ret ; 8d0be -Function8d0be: ; 8d0be +AddOrSubtractY: ; 8d0be push hl ld a, [hl] - ld hl, wc3b8 + ld hl, wCurrSpriteAddSubFlags bit 6, [hl] jr z, .ok + ; 8 - a add $8 xor $ff inc a @@ -328,12 +339,13 @@ Function8d0be: ; 8d0be ret ; 8d0ce -Function8d0ce: ; 8d0ce +AddOrSubtractX: ; 8d0ce push hl ld a, [hl] - ld hl, wc3b8 + ld hl, wCurrSpriteAddSubFlags bit 5, [hl] jr z, .ok + ; 8 - a add $8 xor $ff inc a @@ -343,8 +355,8 @@ Function8d0ce: ; 8d0ce ret ; 8d0de -Function8d0de: ; 8d0de - ld a, [wc3b8] +GetSpriteOAMAttr: ; 8d0de + ld a, [wCurrSpriteAddSubFlags] ld b, a ld a, [hl] xor b @@ -356,26 +368,27 @@ Function8d0de: ; 8d0de ret ; 8d0ec -Function8d0ec: ; 8d0ec +InitSpriteAnimBuffer: ; 8d0ec xor a - ld [wc3b8], a - ld hl, $3 + ld [wCurrSpriteAddSubFlags], a + ld hl, SPRITEANIMSTRUCT_TILE_ID add hl, bc ld a, [hli] - ld [wc3ba], a + ld [wCurrAnimVTile], a ld a, [hli] - ld [wc3bb], a + ld [wCurrAnimXCoord], a ld a, [hli] - ld [wc3bc], a + ld [wCurrAnimYCoord], a ld a, [hli] - ld [wc3bd], a + ld [wCurrAnimXOffset], a ld a, [hli] - ld [wc3be], a + ld [wCurrAnimYOffset], a ret ; 8d109 -LookUpInwSpriteAnimDict: ; 8d109 +GetSpriteAnimVTile: ; 8d109 ; a = wSpriteAnimDict[a] if a in wSpriteAnimDict else 0 +; VTiles offset push hl push bc ld hl, wSpriteAnimDict @@ -400,102 +413,105 @@ LookUpInwSpriteAnimDict: ; 8d109 ret ; 8d120 -Function8d120:: ; 8d120 - ld hl, $1 +_ReinitSpriteAnimFrame:: ; 8d120 + ld hl, SPRITEANIMSTRUCT_FRAMESET_ID add hl, bc ld [hl], a - ld hl, $8 + ld hl, SPRITEANIMSTRUCT_DURATION add hl, bc - ld [hl], $0 - ld hl, $a + ld [hl], 0 + ld hl, SPRITEANIMSTRUCT_FRAME add hl, bc - ld [hl], $ff + ld [hl], -1 ret ; 8d132 -Function8d132: ; 8d132 +GetSpriteAnimFrame: ; 8d132 .loop - ld hl, $8 + ld hl, SPRITEANIMSTRUCT_DURATION add hl, bc ld a, [hl] and a - jr z, .ok + jr z, .next_frame ; finished the current sequence dec [hl] - call Function8d189 + call .GetPointer ; load pointer from SpriteAnimFrameData ld a, [hli] push af - jr .skip + jr .okay -.ok - ld hl, $a +.next_frame + ld hl, SPRITEANIMSTRUCT_FRAME add hl, bc inc [hl] - call Function8d189 + call .GetPointer ; load pointer from SpriteAnimFrameData ld a, [hli] - cp $fe - jr z, .minus_2 - cp $ff - jr z, .minus_1 + cp -2 + jr z, .restart + cp -1 + jr z, .repeat_last + push af ld a, [hl] push hl and $3f - ld hl, $9 + ld hl, SPRITEANIMSTRUCT_DURATIONOFFSET add hl, bc add [hl] - ld hl, $8 + ld hl, SPRITEANIMSTRUCT_DURATION add hl, bc ld [hl], a pop hl - -.skip +.okay ld a, [hl] and $c0 srl a - ld [wc3b8], a + ld [wCurrSpriteAddSubFlags], a pop af ret -.minus_1 +.repeat_last xor a - ld hl, $8 + ld hl, SPRITEANIMSTRUCT_DURATION add hl, bc ld [hl], a - ld hl, $a + + ld hl, SPRITEANIMSTRUCT_FRAME add hl, bc rept 2 dec [hl] endr jr .loop -.minus_2 +.restart xor a - ld hl, $8 + ld hl, SPRITEANIMSTRUCT_DURATION add hl, bc ld [hl], a + dec a - ld hl, $a + ld hl, SPRITEANIMSTRUCT_FRAME add hl, bc ld [hl], a jr .loop ; 8d189 -Function8d189: ; 8d189 - ; Get the [bc+10]th entry in the data table - ; indexed at [bc+1] in Unknown_8d6e6 - ld hl, $1 +.GetPointer: ; 8d189 + ; Get the data for the current frame for the current animation sequence + + ; SpriteAnimFrameData[SpriteAnim[SPRITEANIMSTRUCT_FRAMESET_ID]][SpriteAnim[SPRITEANIMSTRUCT_FRAME]] + ld hl, SPRITEANIMSTRUCT_FRAMESET_ID add hl, bc ld e, [hl] ld d, 0 - ld hl, Unknown_8d6e6 + ld hl, SpriteAnimFrameData rept 2 add hl, de endr ld e, [hl] inc hl ld d, [hl] - ld hl, $a + ld hl, SPRITEANIMSTRUCT_FRAME add hl, bc ld l, [hl] ld h, 0 @@ -504,24 +520,26 @@ endr ret ; 8d1a2 -Function8d1a2: ; 8d1a2 +GetFrameOAMPointer: ; 8d1a2 +; Load OAM data pointer ld e, a ld d, 0 - ld hl, Unknown_8d94d + ld hl, SpriteAnimOAMData rept 3 add hl, de endr ret ; 8d1ac -Function8d1ac: ; unreferenced +BrokenGetStdGraphics: ; 8d1ac +; dummied out push hl ld l, a ld h, 0 rept 2 add hl, hl endr - ld de, Unknown_8e706 ; broken 2bpp pointers + ld de, BrokenStdGFXPointers ; broken 2bpp pointers add hl, de ld c, [hl] inc hl @@ -537,2332 +555,86 @@ endr ret ; 8d1c4 -Unknown_8d1c4: ; 8d1c4 - db $01, SPRITE_ANIM_SEQ_01, $00 ; 00 - db $07, SPRITE_ANIM_SEQ_04, $00 ; 01 - db $08, SPRITE_ANIM_SEQ_05, $05 ; 02 - db $0a, SPRITE_ANIM_SEQ_06, $00 ; 03 - db $0b, SPRITE_ANIM_SEQ_07, $06 ; 04 - db $0c, SPRITE_ANIM_SEQ_08, $06 ; 05 - db $0d, SPRITE_ANIM_SEQ_09, $07 ; 06 - db $0e, SPRITE_ANIM_SEQ_0A, $07 ; 07 - db $10, SPRITE_ANIM_SEQ_0B, $07 ; 08 - db $08, SPRITE_ANIM_SEQ_0C, $05 ; 09 - db $11, SPRITE_ANIM_SEQ_00, $00 ; 0a - db $12, SPRITE_ANIM_SEQ_0D, $08 ; 0b - db $12, SPRITE_ANIM_SEQ_0E, $08 ; 0c - db $12, SPRITE_ANIM_SEQ_0F, $08 ; 0d - db $13, SPRITE_ANIM_SEQ_10, $00 ; 0e - db $15, SPRITE_ANIM_SEQ_00, $00 ; 0f - db $16, SPRITE_ANIM_SEQ_11, $00 ; 10 - db $17, SPRITE_ANIM_SEQ_12, $00 ; 11 - db $18, SPRITE_ANIM_SEQ_12, $00 ; 12 - db $19, SPRITE_ANIM_SEQ_13, $00 ; 13 - db $1a, SPRITE_ANIM_SEQ_14, $00 ; 14 - db $1b, SPRITE_ANIM_SEQ_00, $00 ; 15 - db $1d, SPRITE_ANIM_SEQ_15, $00 ; 16 - db $1e, SPRITE_ANIM_SEQ_00, $00 ; 17 - db $1d, SPRITE_ANIM_SEQ_17, $00 ; 18 - db $1f, SPRITE_ANIM_SEQ_00, $00 ; 19 - db $24, SPRITE_ANIM_SEQ_19, $00 ; 1a - db $25, SPRITE_ANIM_SEQ_00, $00 ; 1b - db $20, SPRITE_ANIM_SEQ_13, $00 ; 1c - db $26, SPRITE_ANIM_SEQ_1A, $00 ; 1d - db $2d, SPRITE_ANIM_SEQ_00, $00 ; 1e - db $2e, SPRITE_ANIM_SEQ_00, $00 ; 1f - db $2f, SPRITE_ANIM_SEQ_00, $00 ; 20 - db $30, SPRITE_ANIM_SEQ_00, $00 ; 21 - db $31, SPRITE_ANIM_SEQ_00, $00 ; 22 - db $32, SPRITE_ANIM_SEQ_1B, $00 ; 23 - db $33, SPRITE_ANIM_SEQ_1C, $00 ; 24 - db $34, SPRITE_ANIM_SEQ_00, $00 ; 25 - db $35, SPRITE_ANIM_SEQ_1D, $00 ; 26 - db $37, SPRITE_ANIM_SEQ_1E, $00 ; 27 - db $38, SPRITE_ANIM_SEQ_1E, $00 ; 28 - db $39, SPRITE_ANIM_SEQ_20, $00 ; 29 - db $3f, SPRITE_ANIM_SEQ_21, $00 ; 2a - db $3e, SPRITE_ANIM_SEQ_22, $00 ; 2b - db $40, SPRITE_ANIM_SEQ_00, $00 ; 2c +SpriteAnimSeqData: ; 8d1c4 + ; frameset sequence, tile + db SPRITE_ANIM_FRAMESET_01, SPRITE_ANIM_SEQ_01, $00 ; 00 + db SPRITE_ANIM_FRAMESET_07, SPRITE_ANIM_SEQ_04, $00 ; 01 + db SPRITE_ANIM_FRAMESET_08, SPRITE_ANIM_SEQ_05, $05 ; 02 + db SPRITE_ANIM_FRAMESET_GAMEFREAK_LOGO, SPRITE_ANIM_SEQ_GAMEFREAK_LOGO, $00 ; 03 + db SPRITE_ANIM_FRAMESET_0B, SPRITE_ANIM_SEQ_07, $06 ; 04 + db SPRITE_ANIM_FRAMESET_0C, SPRITE_ANIM_SEQ_08, $06 ; 05 + db SPRITE_ANIM_FRAMESET_SLOT_GOLEM, SPRITE_ANIM_SEQ_SLOT_GOLEM, $07 ; 06 slots golem + db SPRITE_ANIM_FRAMESET_SLOTS_CHANSEY, SPRITE_ANIM_SEQ_SLOTS_CHANSEY, $07 ; 07 slots chansey + db SPRITE_ANIM_FRAMESET_SLOTS_EGG, SPRITE_ANIM_SEQ_SLOTS_EGG, $07 ; 08 slots egg + db SPRITE_ANIM_FRAMESET_08, SPRITE_ANIM_SEQ_0C, $05 ; 09 + db SPRITE_ANIM_FRAMESET_WALK_CYCLE, SPRITE_ANIM_SEQ_NULL, $00 ; 0a walk cycle + db SPRITE_ANIM_FRAMESET_12, SPRITE_ANIM_SEQ_0D, $08 ; 0b + db SPRITE_ANIM_FRAMESET_12, SPRITE_ANIM_SEQ_0E, $08 ; 0c + db SPRITE_ANIM_FRAMESET_12, SPRITE_ANIM_SEQ_0F, $08 ; 0d + db SPRITE_ANIM_FRAMESET_13, SPRITE_ANIM_SEQ_10, $00 ; 0e + db SPRITE_ANIM_FRAMESET_15, SPRITE_ANIM_SEQ_NULL, $00 ; 0f + db SPRITE_ANIM_FRAMESET_16, SPRITE_ANIM_SEQ_11, $00 ; 10 + db SPRITE_ANIM_FRAMESET_17, SPRITE_ANIM_SEQ_12, $00 ; 11 + db SPRITE_ANIM_FRAMESET_18, SPRITE_ANIM_SEQ_12, $00 ; 12 + db SPRITE_ANIM_FRAMESET_19, SPRITE_ANIM_SEQ_13, $00 ; 13 + db SPRITE_ANIM_FRAMESET_1A, SPRITE_ANIM_SEQ_14, $00 ; 14 radio tuning knob + db SPRITE_ANIM_FRAMESET_1B, SPRITE_ANIM_SEQ_NULL, $00 ; 15 + db SPRITE_ANIM_FRAMESET_LEAF, SPRITE_ANIM_SEQ_15, $00 ; 16 leaves when cutting down a tree + db SPRITE_ANIM_FRAMESET_1E, SPRITE_ANIM_SEQ_NULL, $00 ; 17 + db SPRITE_ANIM_FRAMESET_LEAF, SPRITE_ANIM_SEQ_FLY_LEAF, $00 ; 18 flying leaves + db SPRITE_ANIM_FRAMESET_1F, SPRITE_ANIM_SEQ_NULL, $00 ; 19 + db SPRITE_ANIM_FRAMESET_24, SPRITE_ANIM_SEQ_19, $00 ; 1a + db SPRITE_ANIM_FRAMESET_25, SPRITE_ANIM_SEQ_NULL, $00 ; 1b headbutt + db SPRITE_ANIM_FRAMESET_20, SPRITE_ANIM_SEQ_13, $00 ; 1c + db SPRITE_ANIM_FRAMESET_26, SPRITE_ANIM_SEQ_1A, $00 ; 1d + db SPRITE_ANIM_FRAMESET_2D, SPRITE_ANIM_SEQ_NULL, $00 ; 1e + db SPRITE_ANIM_FRAMESET_2E, SPRITE_ANIM_SEQ_NULL, $00 ; 1f + db SPRITE_ANIM_FRAMESET_2F, SPRITE_ANIM_SEQ_NULL, $00 ; 20 + db SPRITE_ANIM_FRAMESET_30, SPRITE_ANIM_SEQ_NULL, $00 ; 21 + db SPRITE_ANIM_FRAMESET_31, SPRITE_ANIM_SEQ_NULL, $00 ; 22 + db SPRITE_ANIM_FRAMESET_32, SPRITE_ANIM_SEQ_1B, $00 ; 23 + db SPRITE_ANIM_FRAMESET_33, SPRITE_ANIM_SEQ_1C, $00 ; 24 + db SPRITE_ANIM_FRAMESET_34, SPRITE_ANIM_SEQ_NULL, $00 ; 25 + db SPRITE_ANIM_FRAMESET_35, SPRITE_ANIM_SEQ_1D, $00 ; 26 + db SPRITE_ANIM_FRAMESET_37, SPRITE_ANIM_SEQ_1E, $00 ; 27 + db SPRITE_ANIM_FRAMESET_38, SPRITE_ANIM_SEQ_1E, $00 ; 28 + db SPRITE_ANIM_FRAMESET_39, SPRITE_ANIM_SEQ_20, $00 ; 29 intro unown + db SPRITE_ANIM_FRAMESET_3F, SPRITE_ANIM_SEQ_21, $00 ; 2a + db SPRITE_ANIM_FRAMESET_3E, SPRITE_ANIM_SEQ_22, $00 ; 2b + db SPRITE_ANIM_FRAMESET_40, SPRITE_ANIM_SEQ_NULL, $00 ; 2c ; 8d24b +INCLUDE "engine/sprite_anims.asm" ; DoAnimFrame -Function8d24b: ; 8d24b - ld hl, $2 ; field 2, see the second column in the above table - add hl, bc - ld e, [hl] - ld d, 0 - ld hl, .Jumptable -rept 2 - add hl, de -endr - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] -; 8d25b - - -.Jumptable: ; 8d25b (23:525b) - dw .zero ; town map - dw .one ; bouncing mon icons - dw .two - dw .three - dw .four - dw .five - dw .six ; Game Freak logo - dw .seven - dw .eight - dw .nine - dw .ten - dw .eleven - dw .twelve ; blinking cursor - dw .thirteen - dw .fourteen - dw .fifteen - dw .sixteen - dw .seventeen - dw .eighteen - dw .nineteen - dw .twenty - dw .twentyone - dw .twentytwo ; flying sprite - dw .twentythree ; flying leaves - dw .twentyfour - dw .twentyfive - dw .twentysix - dw .twentyseven - dw .twentyeight - dw .twentynine ; intro suicune - dw .thirty ; intro pichu wooper - dw .thirtyone - dw .thirtytwo ; intro unown - dw .thirtythree ; intro unown F with suicune leaping up - dw .thirtyfour ; intro suicune facing away from us - - -.zero: ; 8d2a1 (23:52a1) - ret - -.one: ; 8d2a2 (23:52a2) - ld a, [MenuSelection2] - ld hl, 0 - add hl, bc - cp [hl] - jr z, .two - ld hl, $4 - add hl, bc - ld [hl], $10 - ld hl, $7 - add hl, bc - ld [hl], $0 - ret +INCLUDE "data/sprite_engine.asm" +; SpriteAnimFrameData +; SpriteAnimOAMData -.two: ; 8d2b9 (23:52b9) - ld hl, $4 - add hl, bc - ld [hl], $18 - ld hl, $c - add hl, bc - ld a, [hl] - ld d, a - inc [hl] - and $f - ret nz - ld hl, $d - add hl, bc - ld e, [hl] - ld hl, $7 - add hl, bc - ld a, d - and $10 ; bit 4 - jr z, .asm_8d2df - ld a, e - and a - jr z, .asm_8d2e6 - cp $1 - jr z, .asm_8d2e2 -.asm_8d2df - xor a - ld [hl], a - ret -.asm_8d2e2 - ld a, $ff - ld [hl], a - ret -.asm_8d2e6 - ld a, $fe - ld [hl], a - ret - -.three: ; 8d2ea (23:52ea) - ld a, [MenuSelection2] - ld hl, 0 - add hl, bc - cp [hl] - jr z, .asm_8d2fb - ld hl, $4 - add hl, bc - ld [hl], $10 - ret -.asm_8d2fb - ld hl, $4 - add hl, bc - ld [hl], $18 - ret - -.four: ; 8d302 (23:5302) - call .anonymous_jumptable - jp [hl] -; 8d306 (23:5306) - -; Anonymous jumptable (see .anonymous_jumptable) - dw .four_zero - dw .four_one -; 8d30a - -.four_zero: ; 8d30a - call .asm_8d6d8 - ld hl, 0 - add hl, bc - ld a, [hl] - ld hl, $d - add hl, bc - and $3 - ld [hl], a - inc [hl] - swap a - ld hl, $c - add hl, bc - ld [hl], a - -.four_one: ; 8d321 - ld hl, $4 - add hl, bc - ld a, [hl] - cp $a4 - jr nc, .asm_8d356 - ld hl, $d - add hl, bc - add $4 - ld hl, $4 - add hl, bc - ld [hl], a - ld hl, $5 - add hl, bc - inc [hl] - ld hl, $d - add hl, bc - ld a, [hl] - sla a - sla a - ld d, $2 - ld hl, $c - add hl, bc - ld a, [hl] - add $3 - ld [hl], a - call .asm_8d6de - ld hl, $7 - add hl, bc - ld [hl], a - ret - -.asm_8d356 - call Function8d036 - ret -; 8d35a - -.twentyfive: ; 8d35a (23:535a) - ld hl, $c - add hl, bc - ld a, [hl] - inc a - ld [hl], a - ld d, $2 - call .asm_8d6de - ld hl, $7 - add hl, bc - ld [hl], a - ret - -.five: ; 8d36c (23:536c) - callab Function11a3b - ret - -.twelve: ; 8d373 (23:5373) - callab Function120c1 - ret - -.six: ; 8d37a (23:537a) - callab GameFreakLogoJumper - ret - -.seven: ; 8d381 (23:5381) - ld hl, $c - add hl, bc - ld a, [hl] - and a - jr z, .asm_8d3ba -rept 2 - dec [hl] -endr - ld d, a - and $1f - jr nz, .asm_8d395 - ld hl, $d - add hl, bc - dec [hl] -.asm_8d395 - ld hl, $b - add hl, bc - ld a, [hl] - push af - push de - call .asm_8d6de - ld hl, $7 - add hl, bc - ld [hl], a - pop de - pop af - call .asm_8d6e2 - ld hl, $6 - add hl, bc - ld [hl], a - ld hl, $d - add hl, bc - ld a, [hl] - ld hl, $b - add hl, bc - add [hl] - ld [hl], a - ret -.asm_8d3ba - ld a, $1 - ld [wcf64], a - call Function8d036 - ret - -.eight: ; 8d3c3 (23:53c3) - ld hl, $c - add hl, bc - ld a, [hli] - or [hl] - jr z, .asm_8d41e - ld hl, $f - add hl, bc - ld d, [hl] - ld hl, $b - add hl, bc - ld a, [hl] - push af - push de - call .asm_8d6de - ld hl, $7 - add hl, bc - ld [hl], a - pop de - pop af - call .asm_8d6e2 - ld hl, $6 - add hl, bc - ld [hl], a - ld hl, $c - add hl, bc - ld e, [hl] - inc hl - ld d, [hl] - ld hl, $e - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - add hl, de - ld e, l - ld d, h - ld hl, $e - add hl, bc - ld [hl], e - inc hl - ld [hl], d - ld hl, $c - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - ld de, -$10 - add hl, de - ld e, l - ld d, h - ld hl, $c - add hl, bc - ld [hl], e - inc hl - ld [hl], d - ld hl, $b - add hl, bc - ld a, [hl] - xor $20 - ld [hl], a - ret -.asm_8d41e - call Function8d036 - ret - -.nine: ; 8d422 (23:5422) - callab Function9321d - ret - -.ten: ; 8d429 (23:5429) - callab Function932ac - ld hl, wcf64 - ld a, [hl] - cp $2 - ret nz - ld [hl], $3 - ld a, $f - call Function8d120 - ret - -.eleven: ; 8d43e (23:543e) - ld hl, $b - add hl, bc - ld a, [hl] - dec [hl] - ld e, a - and $1 - jr z, .asm_8d462 - ld hl, $4 - add hl, bc - ld a, [hl] - cp $78 - jr c, .asm_8d461 - call Function8d036 - ld a, $4 - ld [wcf64], a - ld de, SFX_PLACE_PUZZLE_PIECE_DOWN - call PlaySFX - ret -.asm_8d461 - inc [hl] -.asm_8d462 - ld a, e - ld d, $20 - call .asm_8d6de - ld hl, $7 - add hl, bc - ld [hl], a - ret - -.thirteen: ; 8d46e (23:546e) - callab Functione00ed - ret - -.fifteen: ; 8d475 (23:5475) - callab Function90d41 - ret - -.fourteen: ; 8d47c (23:547c) - callab Functione21a1 - ret - -.sixteen: ; 8d483 (23:5483) - call .anonymous_jumptable - jp [hl] -; 8d487 (23:5487) - -; Anonymous jumptable (see .anonymous_jumptable) - dw .sixteen_zero - dw .sixteen_one - dw .sixteen_two - dw .sixteen_three - dw .sixteen_four - dw .sixteen_five -; 8d493 - -.sixteen_zero: ; 8d493 - ld a, $14 - call Function8d120 - ld hl, $b - add hl, bc - ld [hl], $2 - ld hl, $c - add hl, bc - ld [hl], $20 - ret -; 8d4a5 - -.sixteen_two: ; 8d4a5 - ld hl, $c - add hl, bc - ld a, [hl] - and a - jr z, .asm_8d4af - dec [hl] - ret - -.asm_8d4af - call .asm_8d6d8 - ld hl, $c - add hl, bc - ld [hl], $40 - -.sixteen_three: ; 8d4b8 - ld hl, $c - add hl, bc - ld a, [hl] - cp $30 - jr c, .asm_8d4cd - dec [hl] - ld d, $28 - call .asm_8d6de - ld hl, $7 - add hl, bc - ld [hl], a - ret - -.asm_8d4cd - ld de, SFX_GOT_SAFARI_BALLS - call PlaySFX - jr .sixteen_five -; 8d4d5 - -.sixteen_one: ; 8d4d5 - ld hl, $b - add hl, bc - ld [hl], $4 - ld hl, $c - add hl, bc - ld [hl], $30 - ld hl, $d - add hl, bc - ld [hl], $24 - ret -; 8d4e8 - -.sixteen_four: ; 8d4e8 - ld hl, $d - add hl, bc - ld a, [hl] - and a - jr z, .asm_8d51c - ld d, a - ld hl, $c - add hl, bc - ld a, [hl] - call Function8e72c - ld hl, $7 - add hl, bc - ld [hl], a - ld hl, $c - add hl, bc - inc [hl] - ld a, [hl] - and $3f - ret nz - ld hl, $c - add hl, bc - ld [hl], $20 - ld hl, $d - add hl, bc - ld a, [hl] - sub $c - ld [hl], a - ld de, SFX_SWITCH_POKEMON - call PlaySFX - ret - -.asm_8d51c - xor a - ld hl, $7 - add hl, bc - ld [hl], a - call .asm_8d6d8 - ret - -.sixteen_five: ; 8d526 - call Function8d036 - ret -; 8d52a - -.seventeen: ; 8d52a (23:552a) - ld hl, $4 - add hl, bc - ld a, [hl] -rept 2 - inc [hl] -endr - cp $b0 - jr nc, .asm_8d53f - and $3 - ret nz - ld de, SFX_POKEBALLS_PLACED_ON_TABLE - call PlaySFX - ret - -.asm_8d53f - call Function8d036 - ret - -.eighteen: ; 8d543 (23:5543) - callab Function29676 - ret - -.nineteen: ; 8d54a (23:554a) - ld hl, $c - add hl, bc - ld a, [hl] - cp $80 - jr nc, .asm_8d574 - ld d, a - add $8 - ld [hl], a - ld hl, $b - add hl, bc - ld a, [hl] - xor $20 - ld [hl], a - push af - push de - call .asm_8d6de - ld hl, $7 - add hl, bc - ld [hl], a - pop de - pop af - call .asm_8d6e2 - ld hl, $6 - add hl, bc - ld [hl], a - ret -.asm_8d574 - call Function8d036 - ret - -.twenty: ; 8d578 (23:5578) - callab Function91640 - ret - -.twentyone: ; 8d57f (23:557f) - ld hl, $d - add hl, bc - ld e, [hl] - inc hl - ld d, [hl] - ld hl, $80 - add hl, de - ld e, l - ld d, h - ld hl, $d - add hl, bc - ld [hl], e - inc hl - ld [hl], d - ld hl, $c - add hl, bc - ld a, [hl] -rept 3 - inc [hl] -endr - push af - push de - call .asm_8d6de - ld hl, $7 - add hl, bc - ld [hl], a - pop de - pop af - call .asm_8d6e2 - ld hl, $6 - add hl, bc - ld [hl], a - ret - -.twentytwo: ; 8d5b0 (23:55b0) - ld hl, $5 - add hl, bc - ld a, [hl] - and a - ret z - ld hl, $d - add hl, bc - ld a, [hl] - inc [hl] - cp $40 - ret c - ld hl, $5 - add hl, bc -rept 2 - dec [hl] -endr - ld hl, $f - add hl, bc - ld a, [hl] - ld d, a - cp $40 - jr nc, .asm_8d5d3 - add $8 - ld [hl], a -.asm_8d5d3 - ld hl, $e - add hl, bc - ld a, [hl] - inc [hl] - call .asm_8d6e2 - ld hl, $6 - add hl, bc - ld [hl], a - ret - -.twentythree: ; 8d5e2 (23:55e2) - ld hl, $4 - add hl, bc - ld a, [hl] - cp $b8 - jr nc, .asm_8d603 -rept 2 - inc [hl] -endr - ld hl, $5 - add hl, bc - dec [hl] - ld d, $40 - ld hl, $c - add hl, bc - ld a, [hl] - inc [hl] - call .asm_8d6e2 - ld hl, $6 - add hl, bc - ld [hl], a - ret -.asm_8d603 - call Function8d036 - ret - -.twentyfour: ; 8d607 (23:5607) - ld hl, $5 - add hl, bc - ld a, [hl] - cp $54 - ret z - ld hl, $5 - add hl, bc -rept 2 - inc [hl] -endr - ld hl, $f - add hl, bc - ld a, [hl] - ld d, a - and a - jr z, .asm_8d621 - sub $2 - ld [hl], a -.asm_8d621 - ld hl, $e - add hl, bc - ld a, [hl] - inc [hl] - call .asm_8d6e2 - ld hl, $6 - add hl, bc - ld [hl], a - ret - -.twentyseven: ; 8d630 (23:5630) - callba Function108bc7 - ret - -.twentyeight: ; 8d637 (23:5637) - callba Function108be0 - ret - -.twentynine: ; 8d63e (23:563e) - ld a, [wcf65] - and a - jr nz, .asm_8d645 - ret -.asm_8d645 - ld hl, $7 - add hl, bc - ld [hl], $0 - ld hl, $d - add hl, bc - ld a, [hl] - add $2 - ld [hl], a - xor $ff - inc a - ld d, $20 - call .asm_8d6de - ld hl, $7 - add hl, bc - ld [hl], a - ld a, $36 - call Function8d120 - ret - -.thirty: ; 8d666 (23:5666) - ld hl, $c - add hl, bc - ld a, [hl] - cp $14 - jr nc, .asm_8d67f - add $2 - ld [hl], a - xor $ff - inc a - ld d, $20 - call .asm_8d6de - ld hl, $7 - add hl, bc - ld [hl], a -.asm_8d67f - ret - -.thirtytwo: ; 8d680 (23:5680) - ld hl, $b - add hl, bc - ld d, [hl] -rept 3 - inc [hl] -endr - ld hl, $c - add hl, bc - ld a, [hl] - push af - push de - call .asm_8d6de - ld hl, $7 - add hl, bc - ld [hl], a - pop de - pop af - call .asm_8d6e2 - ld hl, $6 - add hl, bc - ld [hl], a - ret - -.thirtythree: ; 8d6a2 (23:56a2) - ld a, [wcf64] - cp $40 - ret nz - ld a, $3d - call Function8d120 - ret - -.thirtyfour: ; 8d6ae (23:56ae) - ld hl, $5 - add hl, bc - ld a, [hl] - add $10 - ld [hl], a - ret - -.twentysix: ; 8d6b7 (23:56b7) - callba Function11d0b6 - ret - -.thirtyone: ; 8d6be (23:56be) - callba Function49aa2 - ret - -.anonymous_jumptable: ; 8d6c5 (23:56c5) - ld hl, [sp+$0] - ld e, [hl] - inc hl - ld d, [hl] - inc de - ld hl, $b - add hl, bc - ld l, [hl] - ld h, $0 - add hl, hl - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - ret -; 8d6d8 (23:56d8) - -.asm_8d6d8: ; 8d6d8 - ld hl, $b - add hl, bc - inc [hl] - ret -; 8d6de - -.asm_8d6de: ; 8d6de (23:56de) - call Function8e72c - ret - -.asm_8d6e2: ; 8d6e2 (23:56e2) - call Function8e72a - ret -; 8d6e6 (23:56e6) - -Unknown_8d6e6: ; 8d6e6 - dw Unknown_8d76a - dw Unknown_8d76d - dw Unknown_8d772 - dw Unknown_8d777 - dw Unknown_8d77c - dw Unknown_8d781 - dw Unknown_8d786 - dw Unknown_8d7a6 - dw Unknown_8d7ab - dw Unknown_8d7b0 - dw Unknown_8d7b5 - dw Unknown_8d7d4 - dw Unknown_8d7d9 - dw Unknown_8d7e2 - dw Unknown_8d7eb - dw Unknown_8d7f4 - dw Unknown_8d7ff - dw Unknown_8d78b - dw Unknown_8d802 - dw Unknown_8d805 - dw Unknown_8d808 - dw Unknown_8d811 - dw Unknown_8d818 - dw Unknown_8d81d - dw Unknown_8d822 - dw Unknown_8d825 - dw Unknown_8d82c - dw Unknown_8d82f - dw Unknown_8d861 - dw Unknown_8d864 - dw Unknown_8d867 - dw Unknown_8d874 - dw Unknown_8d877 - dw Unknown_8d87a - dw Unknown_8d87d - dw Unknown_8d880 - dw Unknown_8d883 - dw Unknown_8d890 - dw Unknown_8d899 - dw Unknown_8d89c - dw Unknown_8d89f - dw Unknown_8d8a2 - dw Unknown_8d8a5 - dw Unknown_8d8a8 - dw Unknown_8d8ab - dw Unknown_8d794 - dw Unknown_8d79d - dw Unknown_8d8ae - dw Unknown_8d8cd - dw Unknown_8d8ec - dw Unknown_8d8f1 - dw Unknown_8d8f4 - dw Unknown_8d8f7 - dw Unknown_8d8fe - dw Unknown_8d907 - dw Unknown_8d90c - dw Unknown_8d913 - dw Unknown_8d916 - dw Unknown_8d91d - dw Unknown_8d924 - dw Unknown_8d92b - dw Unknown_8d932 - dw Unknown_8d93d - dw Unknown_8d940 - dw Unknown_8d943 - dw Unknown_8d948 -; 8d76a - -Unknown_8d76a: dw $2000 - db -1 -Unknown_8d76d: dw $0800, $0801 - db -2 -Unknown_8d772: dw $083d, $083e - db -2 -Unknown_8d777: dw $083f, $0840 - db -2 -Unknown_8d77c: dw $0400, $0401 - db -2 -Unknown_8d781: dw $043d, $043e - db -2 -Unknown_8d786: dw $043f, $0440 - db -2 -Unknown_8d78b: dw $0800, $0801, $0800, $4801 - db -2 -Unknown_8d794: dw $0863, $0864, $0863, $4864 - db -2 -Unknown_8d79d: dw $0865, $0866, $0865, $4866 - db -2 -Unknown_8d7a6: dw $011e, $011f - db -2 -Unknown_8d7ab: dw $0120, $01fd - db -2 -Unknown_8d7b0: dw $0121, $01fd - db -2 -Unknown_8d7b5: dw $0c81, $0182, $0183, $0482, $0c81, $0c82, $0483, $2084, $0385, $0386, $0487, $0488, $0489, $0a8a, $078b - db -1 -Unknown_8d7d4: dw $0323, $8323 - db -2 -Unknown_8d7d9: dw $0224, $0225, $0226, $0225 - db -2 -Unknown_8d7e2: dw $0727, $0728, $8727, $4728 - db -2 -Unknown_8d7eb: dw $0729, $072a, $0729, $072b - db -2 -Unknown_8d7f4: dw $0729, $072c, $072d, $072c, $0729 - db -1 -Unknown_8d7ff: dw $142e - db -1 -Unknown_8d802: dw $202f - db -1 -Unknown_8d805: dw $2030 - db -1 -Unknown_8d808: dw $0330, $0331, $0330, $4331 - db -2 -Unknown_8d811: dw $0432, $0433, $0434 - db -4 -Unknown_8d818: dw $0335, $0336 - db -2 -Unknown_8d81d: dw $0737, $0738 - db -2 -Unknown_8d822: dw $2039 - db -1 -Unknown_8d825: dw $023b, $023a, $023b - db -1 -Unknown_8d82c: dw $203c - db -1 -Unknown_8d82f: dw $0841, $0842, $0841, $4842 - db -2 - dw $0843, $0844 - db -2 - dw $0845, $0846 - db -2 - dw $0847, $0848 - db -2 - dw $0149, $4149, $c149, $8149 - db -2 - dw $204a - db -1 - dw $204b - db -1 - dw $204c - db -1 - dw $204d - db -1 - dw $034e, $03fd - db -2 -Unknown_8d861: dw $20fd - db -1 -Unknown_8d864: dw $204f - db -1 -Unknown_8d867: dw $0250, $1051, $01fd, $0152, $01fd, $0153 - db -4 -Unknown_8d874: dw $2054 - db -1 -Unknown_8d877: dw $2055 - db -1 -Unknown_8d87a: dw $6055 - db -1 -Unknown_8d87d: dw $a055 - db -1 -Unknown_8d880: dw $e055 - db -1 -Unknown_8d883: dw $0a56, $0957, $0a58, $0a59, $0958, $0a5a - db -2 -Unknown_8d890: dw $0250, $025b, $0250, $425b - db -2 -Unknown_8d899: dw $025c - db -1 -Unknown_8d89c: dw $025d - db -1 -Unknown_8d89f: dw $025e - db -1 -Unknown_8d8a2: dw $025f - db -1 -Unknown_8d8a5: dw $0260 - db -1 -Unknown_8d8a8: dw $0261 - db -1 -Unknown_8d8ab: dw $0262 - db -1 -Unknown_8d8ae: dw $0332, $0333, $0334, $0330, $0331, $0330, $4331, $0330, $0331, $0330, $4331, $0330, $0331, $0330, $4331 - db -1 -Unknown_8d8cd: dw $0330, $0331, $0330, $4331, $0330, $0331, $0330, $4331, $0330, $0331, $0330, $4331, $0332, $0333, $0334 - db -4 -Unknown_8d8ec: dw $0367, $0368 - db -2 -Unknown_8d8f1: dw $036c - db -1 -Unknown_8d8f4: dw $036d - db -1 -Unknown_8d8f7: dw $0269, $026a, $026b - db -4 -Unknown_8d8fe: dw $036e, $036f, $0370, $0371 - db -2 -Unknown_8d907: dw $0371, $076e - db -1 -Unknown_8d90c: dw $2072, $0773, $0774 - db -1 -Unknown_8d913: dw $0375 - db -1 -Unknown_8d916: dw $0376, $0377, $0778 - db -4 -Unknown_8d91d: dw $4376, $4377, $4778 - db -4 -Unknown_8d924: dw $8376, $8377, $8778 - db -4 -Unknown_8d92b: dw $c376, $c377, $c778 - db -4 -Unknown_8d932: dw $0379, $037a, $037b, $077c, $077d - db -1 -Unknown_8d93d: dw $037e - db -1 -Unknown_8d940: dw $00fd - db -1 -Unknown_8d943: dw $087f, $0880 - db -1 -Unknown_8d948: dw $487f, $4880 - db -1 -; 8d94d - -Unknown_8d94d: ; 8d94d - dbw $00, Unknown_8dd8a ; 00 - dbw $04, Unknown_8dd8a ; 01 - dbw $4c, Unknown_8daf1 ; 02 - dbw $5c, Unknown_8daf1 ; 03 - dbw $6c, Unknown_8daf6 ; 04 - dbw $6e, Unknown_8daf6 ; 05 - dbw $2d, Unknown_8ddf0 ; 06 - dbw $4d, Unknown_8ddf0 ; 07 - dbw $60, Unknown_8de09 ; 08 - dbw $00, Unknown_8de09 ; 09 - dbw $00, Unknown_8de09 ; 0a - dbw $06, Unknown_8de09 ; 0b - dbw $0c, Unknown_8de7e ; 0c - dbw $0d, Unknown_8daf1 ; 0d - dbw $00, Unknown_8dc53 ; 0e - dbw $04, Unknown_8dc53 ; 0f - dbw $08, Unknown_8dc53 ; 10 - dbw $40, Unknown_8dc53 ; 11 - dbw $44, Unknown_8dc53 ; 12 - dbw $48, Unknown_8dc53 ; 13 - dbw $4c, Unknown_8dc53 ; 14 - dbw $80, Unknown_8de87 ; 15 - dbw $85, Unknown_8de87 ; 16 - dbw $8a, Unknown_8de87 ; 17 - dbw $00, Unknown_8db29 ; 18 - dbw $01, Unknown_8db5c ; 19 - dbw $09, Unknown_8db9d ; 1a - dbw $10, Unknown_8dc94 ; 1b - dbw $29, Unknown_8dc94 ; 1c - dbw $42, Unknown_8dc94 ; 1d - dbw $f8, Unknown_8e17e ; 1e - dbw $fa, Unknown_8e17e ; 1f - dbw $00, Unknown_8deb2 ; 20 - dbw $00, Unknown_8dec3 ; 21 - dbw $00, Unknown_8deec ; 22 - dbw $0f, Unknown_8db07 ; 23 - dbw $11, Unknown_8daf1 ; 24 - dbw $12, Unknown_8daf1 ; 25 - dbw $13, Unknown_8daf1 ; 26 - dbw $00, Unknown_8df29 ; 27 - dbw $08, Unknown_8df29 ; 28 - dbw $10, Unknown_8df42 ; 29 - dbw $10, Unknown_8df5b ; 2a - dbw $10, Unknown_8df74 ; 2b - dbw $10, Unknown_8df8d ; 2c - dbw $10, Unknown_8dfa6 ; 2d - dbw $3a, Unknown_8daf1 ; 2e - dbw $00, Unknown_8dd8a ; 2f - dbw $00, Unknown_8db18 ; 30 - dbw $02, Unknown_8dd9b ; 31 - dbw $06, Unknown_8db5c ; 32 - dbw $0a, Unknown_8db5c ; 33 - dbw $0e, Unknown_8db5c ; 34 - dbw $12, Unknown_8db3a ; 35 - dbw $13, Unknown_8db3a ; 36 - dbw $00, Unknown_8dd8a ; 37 - dbw $04, Unknown_8dd8a ; 38 - dbw $10, Unknown_8db5c ; 39 - dbw $00, Unknown_8dd9b ; 3a - dbw $04, Unknown_8daf1 ; 3b - dbw $00, Unknown_8dfbf ; 3c - dbw $00, Unknown_8ddac ; 3d - dbw $00, Unknown_8ddbd ; 3e - dbw $00, Unknown_8ddce ; 3f - dbw $00, Unknown_8dddf ; 40 - dbw $00, Unknown_8dd9b ; 41 - dbw $04, Unknown_8dd9b ; 42 - dbw $00, Unknown_8dc2e ; 43 - dbw $30, Unknown_8dc2e ; 44 - dbw $03, Unknown_8dc2e ; 45 - dbw $33, Unknown_8dc2e ; 46 - dbw $06, Unknown_8dc2e ; 47 - dbw $36, Unknown_8dc2e ; 48 - dbw $09, Unknown_8dc2e ; 49 - dbw $39, Unknown_8dc2e ; 4a - dbw $0c, Unknown_8dfcc ; 4b - dbw $0c, Unknown_8dfe5 ; 4c - dbw $3c, Unknown_8daf1 ; 4d - dbw $3e, Unknown_8daf1 ; 4e - dbw $00, Unknown_8de9c ; 4f - dbw $00, Unknown_8dea1 ; 50 - dbw $00, Unknown_8dff6 ; 51 - dbw $00, Unknown_8e007 ; 52 - dbw $00, Unknown_8e018 ; 53 - dbw $00, Unknown_8daf1 ; 54 - dbw $01, Unknown_8daf1 ; 55 - dbw $00, Unknown_8e029 ; 56 - dbw $00, Unknown_8e076 ; 57 - dbw $00, Unknown_8e0b7 ; 58 - dbw $00, Unknown_8e0f4 ; 59 - dbw $00, Unknown_8e139 ; 5a - dbw $04, Unknown_8dea1 ; 5b - dbw $00, Unknown_8e183 ; 5c - dbw $00, Unknown_8e1b4 ; 5d - dbw $00, Unknown_8e1b9 ; 5e - dbw $00, Unknown_8e1ca ; 5f - dbw $00, Unknown_8e1eb ; 60 - dbw $00, Unknown_8e1f0 ; 61 - dbw $00, Unknown_8e1f9 ; 62 - dbw $00, Unknown_8e202 ; 63 - dbw $04, Unknown_8e202 ; 64 - dbw $00, Unknown_8e213 ; 65 - dbw $04, Unknown_8e213 ; 66 - dbw $20, Unknown_8e224 ; 67 - dbw $21, Unknown_8e224 ; 68 - dbw $22, Unknown_8e24b ; 69 - dbw $23, Unknown_8e25c ; 6a - dbw $27, Unknown_8e27d ; 6b - dbw $2a, Unknown_8e229 ; 6c - dbw $2a, Unknown_8e23a ; 6d - dbw $00, Unknown_8e2ae ; 6e - dbw $08, Unknown_8e33f ; 6f - dbw $60, Unknown_8e3b0 ; 70 - dbw $68, Unknown_8e429 ; 71 - dbw $00, Unknown_8e4a6 ; 72 - dbw $05, Unknown_8e4a6 ; 73 - dbw $0a, Unknown_8e4a6 ; 74 - dbw $50, Unknown_8e50b ; 75 - dbw $00, Unknown_8e54c ; 76 - dbw $01, Unknown_8e551 ; 77 - dbw $04, Unknown_8e55e ; 78 - dbw $00, Unknown_8db29 ; 79 - dbw $01, Unknown_8e57b ; 7a - dbw $03, Unknown_8e59c ; 7b - dbw $08, Unknown_8e5cd ; 7c - dbw $1c, Unknown_8e5cd ; 7d - dbw $80, Unknown_8e61e ; 7e - dbw $00, Unknown_8e66f ; 7f - dbw $04, Unknown_8e66f ; 80 - dbw $d0, Unknown_8e680 ; 81 - dbw $d3, Unknown_8e680 ; 82 - dbw $d6, Unknown_8e680 ; 83 - dbw $6c, Unknown_8e6a5 ; 84 - dbw $68, Unknown_8e6a5 ; 85 - dbw $64, Unknown_8e6a5 ; 86 - dbw $60, Unknown_8e6a5 ; 87 - dbw $0c, Unknown_8e6a5 ; 88 - dbw $08, Unknown_8e6a5 ; 89 - dbw $04, Unknown_8e6a5 ; 8a - dbw $00, Unknown_8e6a5 ; 8b -; 8daf1 - - -Unknown_8daf1: ; 8daf1 - db 1 - db $fc, $fc, $00, $00 -; 8daf6 - -Unknown_8daf6: ; 8daf6 - db 4 - db $f8, $f8, $00, $00 - db $f8, $00, $01, $00 - db $00, $f8, $10, $00 - db $00, $00, $11, $00 -; 8db07 - -Unknown_8db07: ; 8db07 - db 4 - db $f8, $f8, $00, $00 - db $f8, $00, $00, $20 - db $00, $f8, $01, $00 - db $00, $00, $01, $20 -; 8db18 - -Unknown_8db18: ; 8db18 - db 4 - db $f8, $f8, $00, $80 - db $f8, $00, $00, $a0 - db $00, $f8, $01, $80 - db $00, $00, $01, $a0 -; 8db29 - -Unknown_8db29: ; 8db29 - db 4 - db $f8, $f8, $00, $00 - db $f8, $00, $00, $20 - db $00, $f8, $00, $40 - db $00, $00, $00, $60 -; 8db3a - -Unknown_8db3a: ; 8db3a - db 4 - db $f8, $f8, $00, $07 - db $f8, $00, $00, $27 - db $00, $f8, $00, $47 - db $00, $00, $00, $67 -; 8db4b - -; 8db4b - db 4 - db $f8, $f8, $00, $80 - db $f8, $00, $00, $a0 - db $00, $f8, $00, $c0 - db $00, $00, $00, $e0 -; 8db5c - -Unknown_8db5c: ; 8db5c - db 16 - db $f0, $f0, $00, $00 - db $f0, $f8, $01, $00 - db $f8, $f0, $02, $00 - db $f8, $f8, $03, $00 - db $f0, $00, $01, $20 - db $f0, $08, $00, $20 - db $f8, $00, $03, $20 - db $f8, $08, $02, $20 - db $00, $f0, $02, $40 - db $00, $f8, $03, $40 - db $08, $f0, $00, $40 - db $08, $f8, $01, $40 - db $00, $00, $03, $60 - db $00, $08, $02, $60 - db $08, $00, $01, $60 - db $08, $08, $00, $60 -; 8db9d - -Unknown_8db9d: ; 8db9d - db 36 - db $e8, $e8, $00, $00 - db $e8, $f0, $01, $00 - db $e8, $f8, $02, $00 - db $f0, $e8, $03, $00 - db $f0, $f0, $04, $00 - db $f0, $f8, $05, $00 - db $f8, $e8, $06, $00 - db $f8, $f0, $05, $00 - db $f8, $f8, $05, $00 - db $e8, $00, $02, $20 - db $e8, $08, $01, $20 - db $e8, $10, $00, $20 - db $f0, $00, $05, $20 - db $f0, $08, $04, $20 - db $f0, $10, $03, $20 - db $f8, $00, $05, $20 - db $f8, $08, $05, $20 - db $f8, $10, $06, $20 - db $00, $e8, $06, $40 - db $00, $f0, $05, $40 - db $00, $f8, $05, $40 - db $08, $e8, $03, $40 - db $08, $f0, $04, $40 - db $08, $f8, $05, $40 - db $10, $e8, $00, $40 - db $10, $f0, $01, $40 - db $10, $f8, $02, $40 - db $00, $00, $05, $60 - db $00, $08, $05, $60 - db $00, $10, $06, $60 - db $08, $00, $05, $60 - db $08, $08, $04, $60 - db $08, $10, $03, $60 - db $10, $00, $02, $60 - db $10, $08, $01, $60 - db $10, $10, $00, $60 -; 8dc2e - -Unknown_8dc2e: ; 8dc2e - db 9 - db $f4, $f4, $00, $00 - db $f4, $fc, $01, $00 - db $f4, $04, $02, $00 - db $fc, $f4, $10, $00 - db $fc, $fc, $11, $00 - db $fc, $04, $12, $00 - db $04, $f4, $20, $00 - db $04, $fc, $21, $00 - db $04, $04, $22, $00 -; 8dc53 - -Unknown_8dc53: ; 8dc53 - db 16 - db $f0, $f0, $00, $00 - db $f0, $f8, $01, $00 - db $f0, $00, $02, $00 - db $f0, $08, $03, $00 - db $f8, $f0, $10, $00 - db $f8, $f8, $11, $00 - db $f8, $00, $12, $00 - db $f8, $08, $13, $00 - db $00, $f0, $20, $00 - db $00, $f8, $21, $00 - db $00, $00, $22, $00 - db $00, $08, $23, $00 - db $08, $f0, $30, $00 - db $08, $f8, $31, $00 - db $08, $00, $32, $00 - db $08, $08, $33, $00 -; 8dc94 - -Unknown_8dc94: ; 8dc94 - db 25 - db $ec, $ec, $00, $00 - db $f4, $ec, $01, $00 - db $fc, $ec, $02, $00 - db $04, $ec, $03, $00 - db $0c, $ec, $04, $00 - db $ec, $f4, $05, $00 - db $f4, $f4, $06, $00 - db $fc, $f4, $07, $00 - db $04, $f4, $08, $00 - db $0c, $f4, $09, $00 - db $ec, $fc, $0a, $00 - db $f4, $fc, $0b, $00 - db $fc, $fc, $0c, $00 - db $04, $fc, $0d, $00 - db $0c, $fc, $0e, $00 - db $ec, $04, $0f, $00 - db $f4, $04, $10, $00 - db $fc, $04, $11, $00 - db $04, $04, $12, $00 - db $0c, $04, $13, $00 - db $ec, $0c, $14, $00 - db $f4, $0c, $15, $00 - db $fc, $0c, $16, $00 - db $04, $0c, $17, $00 - db $0c, $0c, $18, $00 -; 8dcf9 - -; 8dcf9 - db 36 - db $e8, $e8, $00, $00 - db $e8, $f0, $01, $00 - db $e8, $f8, $02, $00 - db $e8, $00, $03, $00 - db $e8, $08, $04, $00 - db $e8, $10, $05, $00 - db $f0, $e8, $06, $00 - db $f0, $f0, $07, $00 - db $f0, $f8, $08, $00 - db $f0, $00, $09, $00 - db $f0, $08, $0a, $00 - db $f0, $10, $0b, $00 - db $f8, $e8, $0c, $00 - db $f8, $f0, $0d, $00 - db $f8, $f8, $0e, $00 - db $f8, $00, $0f, $00 - db $f8, $08, $10, $00 - db $f8, $10, $11, $00 - db $00, $e8, $12, $00 - db $00, $f0, $13, $00 - db $00, $f8, $14, $00 - db $00, $00, $15, $00 - db $00, $08, $16, $00 - db $00, $10, $17, $00 - db $08, $e8, $18, $00 - db $08, $f0, $19, $00 - db $08, $f8, $1a, $00 - db $08, $00, $1b, $00 - db $08, $08, $1c, $00 - db $08, $10, $1d, $00 - db $10, $e8, $1e, $00 - db $10, $f0, $1f, $00 - db $10, $f8, $20, $00 - db $10, $00, $21, $00 - db $10, $08, $22, $00 - db $10, $10, $23, $00 -; 8dd8a - -Unknown_8dd8a: ; 8dd8a - db 4 - db $f8, $f8, $00, $00 - db $f8, $00, $01, $00 - db $00, $f8, $02, $00 - db $00, $00, $03, $00 -; 8dd9b - -Unknown_8dd9b: ; 8dd9b - db 4 - db $f8, $f8, $00, $80 - db $f8, $00, $01, $80 - db $00, $f8, $02, $80 - db $00, $00, $03, $80 -; 8ddac - -Unknown_8ddac: ; 8ddac - db 4 - db $f8, $f8, $00, $00 - db $f8, $00, $01, $00 - db $00, $f8, $08, $00 - db $00, $00, $03, $00 -; 8ddbd - -Unknown_8ddbd: ; 8ddbd - db 4 - db $f8, $f8, $04, $00 - db $f8, $00, $05, $00 - db $00, $f8, $08, $00 - db $00, $00, $07, $00 -; 8ddce - -Unknown_8ddce: ; 8ddce - db 4 - db $f8, $f8, $00, $00 - db $f8, $00, $01, $00 - db $00, $f8, $09, $00 - db $00, $00, $03, $00 -; 8dddf - -Unknown_8dddf: ; 8dddf - db 4 - db $f8, $f8, $04, $00 - db $f8, $00, $05, $00 - db $00, $f8, $09, $00 - db $00, $00, $07, $00 -; 8ddf0 - -Unknown_8ddf0: ; 8ddf0 - db 6 - db $f8, $f4, $00, $01 - db $f8, $fc, $01, $01 - db $f8, $04, $02, $01 - db $00, $f4, $10, $01 - db $00, $fc, $11, $01 - db $00, $04, $12, $01 -; 8de09 - -Unknown_8de09: ; 8de09 - db 29 - db $e8, $e8, $00, $00 - db $e8, $f0, $01, $00 - db $e8, $f8, $02, $00 - db $e8, $00, $03, $00 - db $f0, $e8, $10, $00 - db $f0, $f0, $11, $00 - db $f0, $f8, $12, $00 - db $f0, $00, $13, $00 - db $f8, $e8, $20, $00 - db $f8, $f0, $21, $00 - db $f8, $f8, $22, $00 - db $f8, $00, $23, $00 - db $f8, $08, $24, $00 - db $00, $e8, $30, $80 - db $00, $f0, $31, $80 - db $00, $f8, $32, $80 - db $00, $00, $33, $80 - db $00, $08, $34, $80 - db $08, $e8, $40, $80 - db $08, $f0, $41, $80 - db $08, $f8, $42, $80 - db $08, $00, $43, $80 - db $08, $08, $44, $80 - db $08, $10, $45, $80 - db $10, $f0, $51, $80 - db $10, $f8, $52, $80 - db $10, $00, $53, $80 - db $10, $08, $54, $80 - db $10, $10, $55, $80 -; 8de7e - -Unknown_8de7e: ; 8de7e - db 2 - db $f8, $fc, $00, $00 - db $00, $fc, $10, $00 -; 8de87 - -Unknown_8de87: ; 8de87 - db 5 - db $f0, $18, $00, $00 - db $f0, $20, $01, $00 - db $f8, $10, $02, $00 - db $f8, $18, $03, $00 - db $00, $10, $04, $00 -; 8de9c - -Unknown_8de9c: ; 8de9c - db 1 - db $fc, $fc, $00, $06 -; 8dea1 - -Unknown_8dea1: ; 8dea1 - db 4 - db $f8, $f8, $00, $06 - db $f8, $00, $01, $06 - db $00, $f8, $02, $06 - db $00, $00, $03, $06 -; 8deb2 - -Unknown_8deb2: ; 8deb2 - db 4 - db $ff, $ff, $00, $00 - db $ff, $00, $00, $20 - db $00, $ff, $00, $40 - db $00, $00, $00, $60 -; 8dec3 - -Unknown_8dec3: ; 8dec3 - db 10 - db $ff, $00, $00, $00 - db $ff, $08, $01, $00 - db $ff, $10, $01, $00 - db $ff, $18, $01, $00 - db $ff, $20, $00, $20 - db $00, $00, $00, $40 - db $00, $08, $01, $40 - db $00, $10, $01, $40 - db $00, $18, $01, $40 - db $00, $20, $00, $60 -; 8deec - -Unknown_8deec: ; 8deec - db 15 - db $ec, $f4, $00, $11 - db $ec, $fc, $01, $11 - db $ec, $04, $02, $11 - db $f4, $f4, $03, $11 - db $f4, $fc, $04, $11 - db $f4, $04, $05, $11 - db $fc, $f4, $06, $11 - db $fc, $fc, $07, $11 - db $fc, $04, $08, $11 - db $04, $f4, $09, $11 - db $04, $fc, $0a, $11 - db $04, $04, $0b, $11 - db $0c, $f4, $0c, $11 - db $0c, $fc, $0d, $11 - db $0c, $04, $0e, $11 -; 8df29 - -Unknown_8df29: ; 8df29 - db 6 - db $f4, $f4, $00, $15 - db $f4, $fc, $02, $15 - db $f4, $04, $00, $35 - db $04, $f4, $04, $15 - db $04, $fc, $06, $15 - db $04, $04, $04, $35 -; 8df42 - -Unknown_8df42: ; 8df42 - db 6 - db $f4, $f4, $00, $16 - db $f4, $fc, $02, $16 - db $f4, $04, $04, $16 - db $04, $f4, $06, $16 - db $04, $fc, $08, $16 - db $04, $04, $0a, $16 -; 8df5b - -Unknown_8df5b: ; 8df5b - db 6 - db $f4, $f4, $00, $16 - db $f4, $fc, $02, $16 - db $f4, $04, $04, $16 - db $04, $f4, $0c, $16 - db $04, $fc, $0e, $16 - db $04, $04, $10, $16 -; 8df74 - -Unknown_8df74: ; 8df74 - db 6 - db $f4, $f4, $00, $16 - db $f4, $fc, $02, $16 - db $f4, $04, $04, $16 - db $04, $f4, $12, $16 - db $04, $fc, $14, $16 - db $04, $04, $16, $16 -; 8df8d - -Unknown_8df8d: ; 8df8d - db 6 - db $f4, $f4, $00, $16 - db $f4, $fc, $02, $16 - db $f4, $04, $04, $16 - db $04, $f4, $18, $16 - db $04, $fc, $1a, $16 - db $04, $04, $1c, $16 -; 8dfa6 - -Unknown_8dfa6: ; 8dfa6 - db 6 - db $f4, $f4, $1e, $16 - db $f4, $fc, $20, $16 - db $f4, $04, $22, $16 - db $04, $f4, $24, $16 - db $04, $fc, $26, $16 - db $04, $04, $28, $16 -; 8dfbf - -Unknown_8dfbf: ; 8dfbf - db 3 - db $f4, $fc, $00, $10 - db $fc, $fc, $00, $10 - db $04, $fc, $00, $10 -; 8dfcc - -Unknown_8dfcc: ; 8dfcc - db 6 - db $00, $00, $00, $00 - db $00, $08, $01, $00 - db $00, $10, $01, $00 - db $00, $18, $01, $00 - db $00, $20, $02, $00 - db $00, $28, $03, $00 -; 8dfe5 - -Unknown_8dfe5: ; 8dfe5 - db 4 - db $00, $00, $00, $00 - db $00, $08, $01, $00 - db $00, $10, $02, $00 - db $00, $18, $03, $00 -; 8dff6 - -Unknown_8dff6: ; 8dff6 - db 4 - db $f8, $f6, $00, $06 - db $f8, $02, $01, $06 - db $00, $f6, $02, $06 - db $00, $02, $03, $06 -; 8e007 - -Unknown_8e007: ; 8e007 - db 4 - db $f8, $f4, $00, $06 - db $f8, $04, $01, $06 - db $00, $f4, $02, $06 - db $00, $04, $03, $06 -; 8e018 - -Unknown_8e018: ; 8e018 - db 4 - db $f8, $f0, $00, $06 - db $f8, $08, $01, $06 - db $00, $f0, $02, $06 - db $00, $08, $03, $06 -; 8e029 - -Unknown_8e029: ; 8e029 - db 19 - db $f8, $e0, $00, $00 - db $f0, $e8, $02, $00 - db $00, $e8, $04, $00 - db $e8, $f0, $06, $00 - db $f8, $f0, $08, $00 - db $08, $f0, $0a, $00 - db $e8, $f8, $0c, $00 - db $f8, $f8, $0e, $00 - db $08, $f8, $10, $00 - db $e8, $00, $12, $00 - db $f8, $00, $14, $00 - db $08, $00, $16, $00 - db $e8, $08, $18, $00 - db $f8, $08, $1a, $00 - db $08, $08, $1c, $00 - db $f8, $10, $1e, $00 - db $08, $10, $20, $00 - db $f0, $18, $22, $00 - db $00, $18, $24, $00 -; 8e076 - -Unknown_8e076: ; 8e076 - db 16 - db $f8, $e0, $00, $00 - db $f0, $e8, $02, $00 - db $00, $e8, $04, $00 - db $f8, $f0, $26, $00 - db $08, $f0, $0a, $00 - db $e8, $f8, $28, $00 - db $f8, $f8, $2a, $00 - db $08, $f8, $10, $00 - db $f8, $00, $2c, $00 - db $08, $00, $16, $00 - db $f8, $08, $30, $00 - db $08, $08, $1c, $00 - db $f8, $10, $1e, $00 - db $08, $10, $20, $00 - db $f0, $18, $22, $00 - db $00, $18, $24, $00 -; 8e0b7 - -Unknown_8e0b7: ; 8e0b7 - db 15 - db $f8, $e0, $00, $00 - db $f0, $e8, $02, $00 - db $00, $e8, $32, $00 - db $f8, $f0, $34, $00 - db $08, $f0, $36, $00 - db $f8, $f8, $38, $00 - db $08, $f8, $3a, $00 - db $f8, $00, $3c, $00 - db $08, $00, $3e, $00 - db $f8, $08, $30, $00 - db $08, $08, $1c, $00 - db $f8, $10, $1e, $00 - db $08, $10, $20, $00 - db $f0, $18, $22, $00 - db $00, $18, $24, $00 -; 8e0f4 - -Unknown_8e0f4: ; 8e0f4 - db 17 - db $f8, $e0, $00, $00 - db $f0, $e8, $02, $00 - db $00, $e8, $04, $00 - db $f8, $f0, $40, $00 - db $08, $f0, $42, $00 - db $18, $f0, $44, $00 - db $f8, $f8, $46, $00 - db $08, $f8, $48, $00 - db $18, $f8, $4a, $00 - db $f8, $00, $4c, $00 - db $08, $00, $4e, $00 - db $f8, $08, $30, $00 - db $08, $08, $1c, $00 - db $f8, $10, $1e, $00 - db $08, $10, $20, $00 - db $f0, $18, $22, $00 - db $00, $18, $24, $00 -; 8e139 - -Unknown_8e139: ; 8e139 - db 17 - db $f8, $e0, $00, $00 - db $f0, $e8, $02, $00 - db $00, $e8, $04, $00 - db $f8, $f0, $50, $00 - db $08, $f0, $0a, $00 - db $e8, $f8, $52, $00 - db $f8, $f8, $54, $00 - db $08, $f8, $10, $00 - db $e8, $00, $56, $00 - db $f8, $00, $2e, $00 - db $08, $00, $16, $00 - db $f8, $08, $30, $00 - db $08, $08, $1c, $00 - db $f8, $10, $1e, $00 - db $08, $10, $20, $00 - db $f0, $18, $22, $00 - db $00, $18, $24, $00 -; 8e17e - -Unknown_8e17e: ; 8e17e - db 1 - db $fc, $fc, $00, $11 -; 8e183 - -Unknown_8e183: ; 8e183 - db 12 - db $00, $00, $30, $00 - db $00, $08, $31, $00 - db $00, $10, $31, $00 - db $00, $18, $31, $00 - db $00, $20, $31, $00 - db $00, $28, $32, $00 - db $08, $00, $33, $00 - db $08, $08, $34, $00 - db $08, $10, $34, $00 - db $08, $18, $34, $00 - db $08, $20, $34, $00 - db $08, $28, $35, $00 -; 8e1b4 - -Unknown_8e1b4: ; 8e1b4 - db 1 - db $00, $00, $ed, $00 -; 8e1b9 - -Unknown_8e1b9: ; 8e1b9 - db 4 - db $ff, $ff, $30, $00 - db $ff, $01, $32, $00 - db $01, $ff, $33, $00 - db $01, $01, $35, $00 -; 8e1ca - -Unknown_8e1ca: ; 8e1ca - db 8 - db $ff, $ff, $30, $00 - db $ff, $04, $31, $00 - db $ff, $0c, $31, $00 - db $ff, $11, $32, $00 - db $01, $ff, $33, $00 - db $01, $04, $34, $00 - db $01, $0c, $34, $00 - db $01, $11, $35, $00 -; 8e1eb - -Unknown_8e1eb: ; 8e1eb - db 1 - db $00, $00, $34, $00 -; 8e1f0 - -Unknown_8e1f0: ; 8e1f0 - db 2 - db $00, $00, $30, $00 - db $08, $00, $33, $00 -; 8e1f9 - -Unknown_8e1f9: ; 8e1f9 - db 2 - db $00, $00, $32, $00 - db $08, $00, $35, $00 -; 8e202 - -Unknown_8e202: ; 8e202 - db 4 - db $f8, $f8, $00, $01 - db $f8, $00, $01, $01 - db $00, $f8, $02, $01 - db $00, $00, $03, $01 -; 8e213 - -Unknown_8e213: ; 8e213 - db 4 - db $f8, $f8, $00, $81 - db $f8, $00, $01, $81 - db $00, $f8, $02, $81 - db $00, $00, $03, $81 -; 8e224 - -Unknown_8e224: ; 8e224 - db 1 - db $fc, $fc, $00, $02 -; 8e229 - -Unknown_8e229: ; 8e229 - db 4 - db $f0, $fc, $00, $03 - db $f8, $fc, $01, $03 - db $00, $fc, $02, $03 - db $08, $fc, $03, $03 -; 8e23a - -Unknown_8e23a: ; 8e23a - db 4 - db $f0, $fc, $03, $44 - db $f8, $fc, $02, $44 - db $00, $fc, $01, $44 - db $08, $fc, $00, $44 -; 8e24b - -Unknown_8e24b: ; 8e24b - db 4 - db $f8, $f8, $00, $01 - db $f8, $00, $00, $21 - db $00, $f8, $00, $41 - db $00, $00, $00, $61 -; 8e25c - -Unknown_8e25c: ; 8e25c - db 8 - db $f4, $f4, $00, $01 - db $f4, $fc, $01, $01 - db $f4, $04, $00, $21 - db $fc, $f4, $02, $01 - db $fc, $04, $02, $21 - db $04, $f4, $00, $41 - db $04, $fc, $01, $41 - db $04, $04, $00, $61 -; 8e27d - -Unknown_8e27d: ; 8e27d - db 12 - db $f0, $f0, $00, $01 - db $f0, $f8, $01, $01 - db $f8, $f0, $02, $01 - db $f0, $00, $01, $21 - db $f0, $08, $00, $21 - db $f8, $08, $02, $21 - db $00, $f0, $02, $41 - db $08, $f0, $00, $41 - db $08, $f8, $01, $41 - db $00, $08, $02, $61 - db $08, $00, $01, $61 - db $08, $08, $00, $61 -; 8e2ae - -Unknown_8e2ae: ; 8e2ae - db 36 - db $e8, $08, $05, $00 - db $e8, $10, $06, $00 - db $e8, $18, $07, $00 - db $f0, $e8, $11, $00 - db $f0, $f0, $12, $00 - db $f0, $f8, $13, $00 - db $f0, $00, $14, $00 - db $f0, $08, $15, $00 - db $f0, $10, $16, $00 - db $f0, $18, $17, $00 - db $f8, $e0, $20, $00 - db $f8, $e8, $21, $00 - db $f8, $f0, $22, $00 - db $f8, $f8, $23, $00 - db $f8, $00, $24, $00 - db $f8, $08, $25, $00 - db $f8, $10, $26, $00 - db $f8, $18, $27, $00 - db $00, $e0, $30, $00 - db $00, $e8, $31, $00 - db $00, $f0, $32, $00 - db $00, $f8, $33, $00 - db $00, $00, $34, $00 - db $00, $08, $35, $00 - db $00, $10, $36, $00 - db $08, $e0, $40, $00 - db $08, $e8, $41, $00 - db $08, $f0, $42, $00 - db $08, $f8, $43, $00 - db $08, $00, $44, $00 - db $08, $08, $45, $00 - db $08, $10, $46, $00 - db $08, $18, $47, $00 - db $10, $e0, $50, $00 - db $10, $e8, $51, $00 - db $10, $18, $57, $00 -; 8e33f - -Unknown_8e33f: ; 8e33f - db 28 - db $e8, $00, $04, $00 - db $e8, $08, $05, $00 - db $e8, $10, $06, $00 - db $f0, $e8, $11, $00 - db $f0, $f0, $12, $00 - db $f0, $f8, $13, $00 - db $f0, $00, $14, $00 - db $f0, $08, $15, $00 - db $f0, $10, $16, $00 - db $f8, $e8, $21, $00 - db $f8, $f0, $22, $00 - db $f8, $f8, $23, $00 - db $f8, $00, $24, $00 - db $f8, $08, $25, $00 - db $f8, $10, $26, $00 - db $00, $e0, $30, $00 - db $00, $e8, $31, $00 - db $00, $f0, $32, $00 - db $00, $f8, $33, $00 - db $00, $00, $34, $00 - db $00, $08, $35, $00 - db $08, $f0, $42, $00 - db $08, $f8, $43, $00 - db $08, $00, $44, $00 - db $08, $08, $45, $00 - db $10, $f8, $53, $00 - db $10, $00, $54, $00 - db $10, $08, $55, $00 -; 8e3b0 - -Unknown_8e3b0: ; 8e3b0 - db 30 - db $e8, $00, $04, $00 - db $e8, $08, $05, $00 - db $f0, $e8, $11, $00 - db $f0, $f0, $12, $00 - db $f0, $f8, $13, $00 - db $f0, $00, $14, $00 - db $f0, $08, $15, $00 - db $f0, $10, $16, $00 - db $f0, $18, $17, $00 - db $f8, $e0, $20, $00 - db $f8, $e8, $21, $00 - db $f8, $f0, $22, $00 - db $f8, $f8, $23, $00 - db $f8, $00, $24, $00 - db $f8, $08, $25, $00 - db $f8, $10, $26, $00 - db $00, $e0, $30, $00 - db $00, $e8, $31, $00 - db $00, $f0, $32, $00 - db $00, $f8, $33, $00 - db $00, $00, $34, $00 - db $00, $08, $35, $00 - db $08, $f0, $42, $00 - db $08, $f8, $43, $00 - db $08, $00, $44, $00 - db $08, $08, $45, $00 - db $10, $f0, $52, $00 - db $10, $f8, $53, $00 - db $10, $00, $54, $00 - db $10, $08, $55, $00 -; 8e429 - -Unknown_8e429: ; 8e429 - db 31 - db $f0, $e8, $11, $00 - db $f0, $f0, $12, $00 - db $f0, $f8, $13, $00 - db $f0, $00, $14, $00 - db $f0, $08, $15, $00 - db $f0, $10, $16, $00 - db $f0, $18, $17, $00 - db $f8, $e0, $20, $00 - db $f8, $e8, $21, $00 - db $f8, $f0, $22, $00 - db $f8, $f8, $23, $00 - db $f8, $00, $24, $00 - db $f8, $08, $25, $00 - db $f8, $10, $26, $00 - db $f8, $18, $27, $00 - db $00, $e0, $30, $00 - db $00, $e8, $31, $00 - db $00, $f0, $32, $00 - db $00, $f8, $33, $00 - db $00, $00, $34, $00 - db $00, $08, $35, $00 - db $00, $10, $36, $00 - db $08, $e8, $41, $00 - db $08, $f0, $42, $00 - db $08, $f8, $43, $00 - db $08, $00, $44, $00 - db $08, $08, $45, $00 - db $10, $e8, $51, $00 - db $10, $f0, $52, $00 - db $10, $00, $54, $00 - db $10, $08, $55, $00 -; 8e4a6 - -Unknown_8e4a6: ; 8e4a6 - db 25 - db $ec, $ec, $00, $09 - db $ec, $f4, $01, $09 - db $ec, $fc, $02, $09 - db $ec, $04, $03, $09 - db $ec, $0c, $04, $09 - db $f4, $ec, $10, $09 - db $f4, $f4, $11, $09 - db $f4, $fc, $12, $09 - db $f4, $04, $13, $09 - db $f4, $0c, $14, $09 - db $fc, $ec, $20, $09 - db $fc, $f4, $21, $09 - db $fc, $fc, $22, $09 - db $fc, $04, $23, $09 - db $fc, $0c, $24, $09 - db $04, $ec, $30, $09 - db $04, $f4, $31, $09 - db $04, $fc, $32, $09 - db $04, $04, $33, $09 - db $04, $0c, $34, $09 - db $0c, $ec, $40, $09 - db $0c, $f4, $41, $09 - db $0c, $fc, $42, $09 - db $0c, $04, $43, $09 - db $0c, $0c, $44, $09 -; 8e50b - -Unknown_8e50b: ; 8e50b - db 16 - db $f0, $ec, $00, $0a - db $f0, $f4, $01, $0a - db $f0, $fc, $02, $0a - db $f0, $04, $03, $0a - db $f8, $ec, $04, $0a - db $f8, $f4, $05, $0a - db $f8, $fc, $06, $0a - db $f8, $04, $07, $0a - db $00, $ec, $08, $0a - db $00, $f4, $09, $0a - db $00, $fc, $0a, $0a - db $00, $04, $0b, $0a - db $08, $ec, $0c, $0a - db $08, $f4, $0d, $0a - db $08, $fc, $0e, $0a - db $08, $04, $0f, $0a -; 8e54c - -Unknown_8e54c: ; 8e54c - db 1 - db $fc, $fc, $00, $00 -; 8e551 - -Unknown_8e551: ; 8e551 - db 3 - db $00, $f8, $00, $00 - db $f8, $f8, $01, $00 - db $f8, $00, $02, $00 -; 8e55e - -Unknown_8e55e: ; 8e55e - db 7 - db $08, $f0, $00, $00 - db $00, $f0, $01, $00 - db $f8, $f0, $02, $00 - db $f8, $f8, $03, $00 - db $f0, $f8, $04, $00 - db $f0, $00, $05, $00 - db $f0, $08, $06, $00 -; 8e57b - -Unknown_8e57b: ; 8e57b - db 8 - db $f8, $f0, $00, $00 - db $f8, $f8, $01, $00 - db $f8, $00, $01, $20 - db $f8, $08, $00, $20 - db $00, $f0, $00, $40 - db $00, $f8, $01, $40 - db $00, $00, $01, $60 - db $00, $08, $00, $60 -; 8e59c - -Unknown_8e59c: ; 8e59c - db 12 - db $e8, $f8, $00, $00 - db $f0, $f8, $01, $00 - db $f8, $f8, $02, $00 - db $e8, $00, $00, $20 - db $f0, $00, $01, $20 - db $f8, $00, $02, $20 - db $00, $f8, $02, $40 - db $08, $f8, $01, $40 - db $10, $f8, $00, $40 - db $00, $00, $02, $60 - db $08, $00, $01, $60 - db $10, $00, $00, $60 -; 8e5cd - -Unknown_8e5cd: ; 8e5cd - db 20 - db $ec, $f0, $00, $00 - db $ec, $f8, $01, $00 - db $ec, $00, $02, $00 - db $ec, $08, $03, $00 - db $f4, $f0, $04, $00 - db $f4, $f8, $05, $00 - db $f4, $00, $06, $00 - db $f4, $08, $07, $00 - db $fc, $f0, $08, $00 - db $fc, $f8, $09, $00 - db $fc, $00, $0a, $00 - db $fc, $08, $0b, $00 - db $04, $f0, $0c, $00 - db $04, $f8, $0d, $00 - db $04, $00, $0e, $00 - db $04, $08, $0f, $00 - db $0c, $f0, $10, $00 - db $0c, $f8, $11, $00 - db $0c, $00, $12, $00 - db $0c, $08, $13, $00 -; 8e61e - -Unknown_8e61e: ; 8e61e - db 20 - db $00, $08, $00, $81 - db $08, $10, $00, $81 - db $10, $18, $00, $81 - db $18, $20, $00, $81 - db $20, $28, $00, $81 - db $18, $30, $00, $81 - db $10, $38, $00, $81 - db $08, $40, $00, $81 - db $00, $48, $00, $81 - db $08, $50, $00, $81 - db $10, $58, $00, $81 - db $18, $60, $00, $81 - db $20, $68, $00, $81 - db $18, $70, $00, $81 - db $10, $78, $00, $81 - db $08, $80, $00, $81 - db $00, $88, $00, $81 - db $08, $90, $00, $81 - db $10, $98, $00, $81 - db $18, $a0, $00, $81 -; 8e66f - -Unknown_8e66f: ; 8e66f - db 4 - db $f8, $f8, $00, $02 - db $f8, $00, $01, $02 - db $00, $f8, $02, $02 - db $00, $00, $03, $02 -; 8e680 - -Unknown_8e680: ; 8e680 - db 9 - db $f0, $f4, $00, $01 - db $f0, $fc, $01, $01 - db $f0, $04, $02, $01 - db $f8, $f4, $10, $01 - db $f8, $fc, $11, $01 - db $f8, $04, $12, $01 - db $00, $f4, $20, $01 - db $00, $fc, $21, $01 - db $00, $04, $22, $01 -; 8e6a5 - -Unknown_8e6a5: ; 8e6a5 - db 24 - db $d8, $f4, $00, $01 - db $d8, $fc, $01, $01 - db $d8, $04, $02, $01 - db $d8, $0c, $03, $01 - db $e0, $f4, $10, $01 - db $e0, $fc, $11, $01 - db $e0, $04, $12, $01 - db $e0, $0c, $13, $01 - db $e8, $f4, $20, $01 - db $e8, $fc, $21, $01 - db $e8, $04, $22, $01 - db $e8, $0c, $23, $01 - db $f0, $f4, $30, $01 - db $f0, $fc, $31, $01 - db $f0, $04, $32, $01 - db $f0, $0c, $33, $01 - db $f8, $f4, $40, $01 - db $f8, $fc, $41, $01 - db $f8, $04, $42, $01 - db $f8, $0c, $43, $01 - db $00, $f4, $50, $01 - db $00, $fc, $51, $01 - db $00, $04, $52, $01 - db $00, $0c, $53, $01 -; 8e706 -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 +Sprites_Cosine: ; 8e72a add $10 -Function8e72c: ; 8e72c +Sprites_Sine: ; 8e72c +; floor(d * sin(a * pi/32)) and $3f cp $20 - jr nc, .asm_8e737 - call Function8e741 + jr nc, .negative + call .ApplySineWave ld a, h ret -.asm_8e737 +.negative and $1f - call Function8e741 + call .ApplySineWave ld a, h xor $ff ; cpl inc a ret ; 8e741 -Function8e741: ; 8e741 +.ApplySineWave: ; 8e741 ld e, a ld a, d ld d, 0 - ld hl, Unknown_8e75d + ld hl, .sinewave rept 2 add hl, de endr @@ -2870,91 +642,95 @@ endr inc hl ld d, [hl] ld hl, 0 -.asm_8e750 +.multiply srl a - jr nc, .asm_8e755 + jr nc, .even add hl, de -.asm_8e755 +.even sla e rl d and a - jr nz, .asm_8e750 + jr nz, .multiply ret ; 8e75d -Unknown_8e75d: ; 8e75d +.sinewave: ; 8e75d sine_wave $100 -Function8e79d: ; 8e79d +AnimateEndOfExpBar: ; 8e79d ld a, [hSGB] - ld de, GFX_8e7f4 + ld de, EndOfExpBarGFX and a - jr z, .asm_8e7a8 - ld de, GFX_8e804 + jr z, .load + ld de, SGBEndOfExpBarGFX -.asm_8e7a8 - ld hl, VTiles0 - lb bc, BANK(GFX_8e7f4), 1 +.load + ld hl, VTiles0 tile $00 + lb bc, BANK(EndOfExpBarGFX), 1 call Request2bpp - ld c, $8 - ld d, $0 -.asm_8e7b5 + ld c, 8 + ld d, 0 +.loop push bc - call Function8e7c6 + call .AnimateFrame call DelayFrame pop bc rept 2 inc d endr dec c - jr nz, .asm_8e7b5 + jr nz, .loop call ClearSprites ret ; 8e7c6 -Function8e7c6: ; 8e7c6 +.AnimateFrame: ; 8e7c6 ld hl, Sprites ld c, $8 -.asm_8e7cb +.anim_loop ld a, c and a ret z dec c ld a, c +; multiply by 8 sla a sla a sla a push af + push de push hl - call Function8e72c + call Sprites_Sine pop hl pop de - add $68 + add 13 * 8 ld [hli], a + pop af push de push hl - call Function8e72a + call Sprites_Cosine pop hl pop de - add $54 + add 10 * 8 + 4 ld [hli], a + ld a, $0 ld [hli], a - ld a, $6 + ld a, $6 ; OBJ 6 ld [hli], a - jr .asm_8e7cb + jr .anim_loop ; 8e7f4 -GFX_8e7f4: ; 8e7f4 -INCBIN "gfx/unknown/08e7f4.2bpp" -GFX_8e804: ; 8e804 -INCBIN "gfx/unknown/08e804.2bpp" +EndOfExpBarGFX: ; 8e7f4 +INCBIN "gfx/battle/expbarend.2bpp" +SGBEndOfExpBarGFX: ; 8e804 +INCBIN "gfx/battle/expbarend_sgb.2bpp" -ClearSpriteAnims: ; 8e814 +ClearSpriteAnims2: ; 8e814 push hl push de push bc @@ -2974,451 +750,3 @@ ClearSpriteAnims: ; 8e814 pop hl ret ; 8e82b - -Function8e82b: ; 8e82b - ld a, e - call ReadMonMenuIcon - ld l, a - ld h, 0 - add hl, hl - ld de, IconPointers - add hl, de - ld a, [hli] - ld e, a - ld d, [hl] - ld b, BANK(Icons) - ld c, 8 - ret -; 8e83f - -Function8e83f: ; 8e83f - push hl - push de - push bc - call Function8e849 - pop bc - pop de - pop hl - ret -; 8e849 - -Function8e849: ; 8e849 - ld d, 0 - ld hl, Jumptable_8e854 -rept 2 - add hl, de -endr - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] -; 8e854 - - -Jumptable_8e854: ; 8e854 (23:6854) - dw Function8e8d5 - dw Function8e961 - dw Function8e97d - dw Function8e99a - dw Function8e898 - dw Function8e8b1 - dw Function8e862 - - -Function8e862: ; 8e862 (23:6862) - call Function8e908 - call Function8e86c - call Function8e936 - ret - -Function8e86c: ; 8e86c (23:686c) - push bc - ld a, [hObjectStructIndexBuffer] - ld hl, PartyMon1Item - ld bc, PARTYMON_STRUCT_LENGTH - call AddNTimes - pop bc - ld a, [hl] - and a - jr z, .asm_8e890 - push hl - push bc - ld d, a - callab ItemIsMail - pop bc - pop hl - jr c, .asm_8e88e - ld a, $6 - jr .asm_8e892 -.asm_8e88e - ld a, $5 -.asm_8e890 - ld a, $4 -.asm_8e892 - ld hl, $1 - add hl, bc - ld [hl], a - ret - -Function8e898: ; 8e898 (23:6898) - call Function8e8d5 - ld hl, $2 - add hl, bc - ld a, $0 - ld [hl], a - ld hl, $4 - add hl, bc - ld a, $48 - ld [hl], a - ld hl, $5 - add hl, bc - ld a, $48 - ld [hl], a - ret - -Function8e8b1: ; 8e8b1 (23:68b1) - call Function8e908 - call Function8e936 - ld hl, $2 - add hl, bc - ld a, $0 - ld [hl], a - ld hl, $4 - add hl, bc - ld a, $18 - ld [hl], a - ld hl, $5 - add hl, bc - ld a, $60 - ld [hl], a - ld a, c - ld [wc608], a - ld a, b - ld [wc608 + 1], a - ret - -Function8e8d5: ; 8e8d5 (23:68d5) - call Function8e908 - call Function8e8df - call Function8e936 - ret - -Function8e8df: ; 8e8df (23:68df) - push bc - ld a, [hObjectStructIndexBuffer] - ld hl, PartyMon1Item - ld bc, $30 - call AddNTimes - pop bc - ld a, [hl] - and a - ret z - push hl - push bc - ld d, a - callab ItemIsMail - pop bc - pop hl - jr c, .asm_8e900 - ld a, $3 - jr .asm_8e902 -.asm_8e900 - ld a, $2 -.asm_8e902 - ld hl, $1 - add hl, bc - ld [hl], a - ret - -Function8e908: ; 8e908 (23:6908) - ld a, [wc3b7] - push af - ld a, [hObjectStructIndexBuffer] - ld hl, PartySpecies - ld e, a - ld d, $0 - add hl, de - ld a, [hl] - call ReadMonMenuIcon - ld [CurIcon], a - call Function8e9db - ld a, [hObjectStructIndexBuffer] -; y coord -rept 4 - add a -endr - add $1c - ld d, a -; x coord - ld e, $10 -; type is partymon icon - ld a, SPRITE_ANIM_INDEX_00 - call InitSpriteAnimStruct - pop af - ld hl, $3 - add hl, bc - ld [hl], a - ret - -Function8e936: ; 8e936 (23:6936) - push bc - ld a, [hObjectStructIndexBuffer] - ld b, a - call Function8e94c - ld a, b - pop bc - ld hl, $9 - add hl, bc - ld [hl], a - rlca - rlca - ld hl, $d - add hl, bc - ld [hl], a - ret - -Function8e94c: ; 8e94c (23:694c) - callba PlacePartymonHPBar - call GetHPPal - ld e, d - ld d, 0 - ld hl, Unknown_8e95e - add hl, de - ld b, [hl] - ret -; 8e95e (23:695e) - -Unknown_8e95e: ; 8e95e - db $00, $40, $80 -; 8e961 - -Function8e961: ; 8e961 (23:6961) - ld a, [wd265] - call ReadMonMenuIcon - ld [CurIcon], a - xor a - call GetIconGFX - lb de, $24, $20 - ld a, SPRITE_ANIM_INDEX_00 - call InitSpriteAnimStruct - ld hl, $2 - add hl, bc - ld [hl], $0 - ret - -Function8e97d: ; 8e97d (23:697d) - ld a, [wd265] - call ReadMonMenuIcon - ld [CurIcon], a - xor a - call GetIconGFX - ld d, $1a - ld e, $24 - ld a, SPRITE_ANIM_INDEX_00 - call InitSpriteAnimStruct - ld hl, $2 - add hl, bc - ld [hl], $0 - ret - -Function8e99a: ; 8e99a (23:699a) - ld a, [wd265] - call ReadMonMenuIcon - ld [CurIcon], a - ld a, $62 - ld [wc3b7], a - call Function8e9db - ret - -GetSpeciesIcon: ; 8e9ac -; Load species icon into VRAM at tile a - push de - ld a, [wd265] - call ReadMonMenuIcon - ld [CurIcon], a - pop de - ld a, e - call GetIconGFX - ret -; 8e9bc - - -Function8e9bc: ; 8e9bc (23:69bc) - push de - ld a, [wd265] - call ReadMonMenuIcon - ld [CurIcon], a - pop de - ld a, e - call GetIcon_a - ret -; 8e9cc (23:69cc) - -Function8e9cc: ; 8e9cc - push de - ld a, [wd265] - call ReadMonMenuIcon - ld [CurIcon], a - pop de - call GetIcon_de - ret -; 8e9db - -Function8e9db: ; 8e9db (23:69db) - ld a, [wc3b7] - -GetIconGFX: ; 8e9de - call GetIcon_a - ld de, $80 ; 8 tiles - add hl, de - ld de, HeldItemIcons - lb bc, BANK(HeldItemIcons), 2 - call GetGFXUnlessMobile - ld a, [wc3b7] - add 10 - ld [wc3b7], a - ret - -HeldItemIcons: -INCBIN "gfx/icon/mail.2bpp" -INCBIN "gfx/icon/item.2bpp" -; 8ea17 - -GetIcon_de: ; 8ea17 -; Load icon graphics into VRAM starting from tile de. - ld l, e - ld h, d - jr GetIcon - -GetIcon_a: ; 8ea1b -; Load icon graphics into VRAM starting from tile a. - ld l, a - ld h, 0 - -GetIcon: ; 8ea1e -; Load icon graphics into VRAM starting from tile hl. - -; One tile is 16 bytes long. -rept 4 - add hl, hl -endr - - ld de, VTiles0 - add hl, de - push hl - -; The icons are contiguous, in order and of the same -; size, so the pointer table is somewhat redundant. - ld a, [CurIcon] - push hl - ld l, a - ld h, 0 - add hl, hl - ld de, IconPointers - add hl, de - ld a, [hli] - ld e, a - ld d, [hl] - pop hl - - lb bc, BANK(Icons), 8 - call GetGFXUnlessMobile - - pop hl - ret -; 8ea3f - -GetGFXUnlessMobile: ; 8ea3f - ld a, [wLinkMode] - cp LINK_MOBILE - jp nz, Request2bpp - jp Get2bpp_2 -; 8ea4a - -Function8ea4a: ; 8ea4a - ld hl, wSpriteAnimationStructs - ld e, $6 - ld a, [MenuSelection2] - ld d, a -.loop - ld a, [hl] - and a - jr z, .next - cp d - jr z, .loadwithtwo - ld a, $0 - jr .ok - -.loadwithtwo - ld a, $2 - -.ok - push hl - ld c, l - ld b, h - ld hl, $2 - add hl, bc - ld [hl], a - pop hl - -.next - ld bc, $10 - add hl, bc - dec e - jr nz, .loop - ret -; 8ea71 - -Function8ea71: ; 8ea71 - ld hl, wSpriteAnimationStructs - ld e, $6 -.loop - ld a, [hl] - and a - jr z, .zero - push hl - ld c, l - ld b, h - ld hl, $2 - add hl, bc - ld [hl], $1 - pop hl -.zero - ld bc, $10 - add hl, bc - dec e - jr nz, .loop - ret -; 8ea8c (23:6a8c) - -Function8ea8c: ; 8ea8c - ld hl, wSpriteAnimationStructs - ld e, $6 - ld a, [wd0e3] - ld d, a -.asm_8ea95 - ld a, [hl] - and a - jr z, .asm_8eaab - cp d - jr z, .asm_8eaa0 - ld a, $3 - jr .asm_8eaa2 -.asm_8eaa0 - ld a, $2 -.asm_8eaa2 - push hl - ld c, l - ld b, h - ld hl, $2 - add hl, bc - ld [hl], a - pop hl -.asm_8eaab - ld bc, $10 - add hl, bc - dec e - jr nz, .asm_8ea95 - ret - -INCLUDE "menu/mon_icons.asm" diff --git a/engine/startmenu.asm b/engine/startmenu.asm index a40aa734e..9127611ff 100755 --- a/engine/startmenu.asm +++ b/engine/startmenu.asm @@ -1,6 +1,6 @@ StartMenu:: ; 125cd - call ResetTextRelatedRAM + call ClearWindowData ld de, SFX_MENU call PlaySFX @@ -42,7 +42,7 @@ StartMenu:: ; 125cd ld a, [wMenuCursorBuffer] ld [wd0d2], a call PlayClickSFX - call Function1bee + call PlaceHollowCursor call .OpenMenu ; Menu items have different return functions. @@ -61,8 +61,8 @@ endr .MenuReturns dw .Reopen dw .Exit - dw .ExitMenuCallFuncLoadMoveSprites - dw .ExitMenuRunScriptLoadMoveSprites + dw .ExitMenuCallFuncCloseText + dw .ExitMenuRunScriptCloseText dw .ExitMenuRunScript dw .ReturnEnd dw .ReturnRedraw @@ -78,7 +78,7 @@ endr .ReturnEnd call ExitMenu .ReturnEnd2 - call LoadMoveSprites + call CloseText call UpdateTimePals ret @@ -93,7 +93,7 @@ endr .loop call .PrintMenuAccount call Function1f1a - ld a, [wcf73] + ld a, [wMenuJoypad] cp B_BUTTON jr z, .b cp A_BUTTON @@ -115,14 +115,14 @@ endr ret ; 12699 -.ExitMenuRunScriptLoadMoveSprites ; 12699 +.ExitMenuRunScriptCloseText ; 12699 call ExitMenu ld a, HMENURETURN_SCRIPT ld [hMenuReturn], a jr .ReturnEnd2 ; 126a2 -.ExitMenuCallFuncLoadMoveSprites ; 126a2 +.ExitMenuCallFuncCloseText ; 126a2 call ExitMenu ld hl, wQueuedScriptAddr ld a, [hli] @@ -141,12 +141,12 @@ endr .Clear ; 126b7 call ClearBGPalettes call Call_ExitMenu - call Function2bae + call ReloadTilesetAndPalettes call .DrawMenuAccount_ call MenuFunc_1e7f call .DrawBugContestStatus call UpdateSprites - call Functiond90 + call ret_d90 call Function2b5c ret ; 126d3 @@ -270,7 +270,7 @@ endr .GetMenuAccountTextPointer ; 12819 ld e, a ld d, 0 - ld hl, wcf97 + ld hl, wMenuData2PointerTableAddr ld a, [hli] ld h, [hl] ld l, a @@ -283,7 +283,7 @@ endr .SetUpMenuItems ; 12829 xor a - ld [wcf76], a + ld [wWhichIndexSet], a call .FillMenuList ld hl, StatusFlags @@ -469,7 +469,7 @@ StartMenu_Status: ; 12928 call FadeToMenu callba TrainerCard - call ReturnToCallingMenu + call CloseSubmenu ld a, 0 ret ; 12937 @@ -483,7 +483,7 @@ StartMenu_Pokedex: ; 12937 call FadeToMenu callba Pokedex - call ReturnToCallingMenu + call CloseSubmenu .asm_12949 ld a, 0 @@ -495,7 +495,7 @@ StartMenu_Pokegear: ; 1294c call FadeToMenu callba PokeGear - call ReturnToCallingMenu + call CloseSubmenu ld a, 0 ret ; 1295b @@ -508,7 +508,7 @@ StartMenu_Pack: ; 1295b ld a, [wcf66] and a jr nz, .used_item - call ReturnToCallingMenu + call CloseSubmenu ld a, 0 ret @@ -557,7 +557,7 @@ StartMenu_Pokemon: ; 12976 jr z, .quit .return - call ReturnToCallingMenu + call CloseSubmenu ld a, 0 ret @@ -602,7 +602,7 @@ Function129f4: ; 129f4 jr nz, .asm_12a3f ld hl, UnknownText_0x12a45 call MenuTextBox - callba Function24fbf + callba SelectQuantityToToss push af call WriteBackup call ExitMenu @@ -685,7 +685,7 @@ PartyMonItemName: ; 12a6c CancelPokemonAction: ; 12a79 callba InitPartyMenuWithCancel - callba Function8ea71 + callba UnfreezeMonIcons ld a, 1 ret ; 12a88 @@ -748,7 +748,7 @@ SwitchPartyMons: ; 12aec inc a ld [wSwitchMon], a - callba Function8ea8c + callba HoldSwitchmonIcon callba InitPartyMenuNoCancel ld a, 4 @@ -795,49 +795,49 @@ GiveTakePartyMonItem: ; 12b60 ; Eggs can't hold items! ld a, [CurPartySpecies] cp EGG - jr z, .asm_12ba6 + jr z, .cancel ld hl, GiveTakeItemMenuData call LoadMenuDataHeader - call InterpretMenu2 + call VerticalMenu call ExitMenu - jr c, .asm_12ba6 + jr c, .cancel call GetCurNick ld hl, StringBuffer1 - ld de, wd050 - ld bc, $b + ld de, wMonOrItemNameBuffer + ld bc, PKMN_NAME_LENGTH call CopyBytes - ld a, [MenuSelection2] + ld a, [wMenuCursorY] cp 1 - jr nz, .asm_12ba0 + jr nz, .take call LoadStandardMenuDataHeader call ClearPalettes - call Function12ba9 + call .GiveItem call ClearPalettes call LoadFontsBattleExtra call ExitMenu ld a, 0 ret -.asm_12ba0 +.take call TakePartyItem ld a, 3 ret -.asm_12ba6 +.cancel ld a, 3 ret ; 12ba9 -Function12ba9: ; 12ba9 +.GiveItem: ; 12ba9 - callba Function106a5 + callba DepositSellInitPackBuffers .loop - callba Function106be + callba DepositSellPack ld a, [wcf66] and a @@ -852,7 +852,7 @@ Function12ba9: ; 12ba9 and a jr nz, .next - call Function12bd9 + call TryGiveItemToPartymon jr .quit .next @@ -865,41 +865,41 @@ Function12ba9: ; 12ba9 ; 12bd9 -Function12bd9: ; 12bd9 +TryGiveItemToPartymon: ; 12bd9 call SpeechTextBox call PartyMonItemName call GetPartyItemLocation ld a, [hl] and a - jr z, .asm_12bf4 + jr z, .give_item_to_mon push hl ld d, a callba ItemIsMail pop hl - jr c, .asm_12c01 + jr c, .please_remove_mail ld a, [hl] - jr .asm_12c08 + jr .already_holding_item -.asm_12bf4 +.give_item_to_mon call GiveItemToPokemon ld hl, MadeHoldText call MenuTextBoxBackup call GivePartyItem ret -.asm_12c01 +.please_remove_mail ld hl, PleaseRemoveMailText call MenuTextBoxBackup ret -.asm_12c08 +.already_holding_item ld [wd265], a call GetItemName ld hl, SwitchAlreadyHoldingText call StartMenuYesNo - jr c, .asm_12c4b + jr c, .abort call GiveItemToPokemon ld a, [wd265] @@ -909,7 +909,7 @@ Function12bd9: ; 12bd9 pop af ld [CurItem], a call ReceiveItemFromPokemon - jr nc, .asm_12c3c + jr nc, .bag_full ld hl, TookAndMadeHoldText call MenuTextBoxBackup @@ -918,14 +918,14 @@ Function12bd9: ; 12bd9 call GivePartyItem ret -.asm_12c3c +.bag_full ld a, [wd265] ld [CurItem], a call ReceiveItemFromPokemon ld hl, ItemStorageIsFullText call MenuTextBoxBackup -.asm_12c4b +.abort ret ; 12c4c @@ -1109,12 +1109,12 @@ MonMailAction: ; 12d45 ; Show the READ/TAKE/QUIT menu. ld hl, .MenuDataHeader call LoadMenuDataHeader - call InterpretMenu2 + call VerticalMenu call ExitMenu ; Interpret the menu. jp c, .done - ld a, [MenuSelection2] + ld a, [wMenuCursorY] cp $1 jr z, .read cp $2 @@ -1280,7 +1280,7 @@ MonMenu_Fly: ; 12e30 ; 12e55 MonMenu_Flash: ; 12e55 - callba Functionc8ac + callba OWFlash ld a, [wFieldMoveSucceeded] cp $1 jr nz, .Fail @@ -1457,13 +1457,13 @@ MonMenu_SweetScent: ; 12f50 ret ; 12f5b -Function12f5b: ; 12f5b +ChooseMoveToDelete: ; 12f5b ld hl, Options ld a, [hl] push af set NO_TEXT_SCROLL, [hl] call LoadFontsBattleExtra - call Function12f73 + call .asm_12f73 pop bc ld a, b ld [Options], a @@ -1473,40 +1473,40 @@ Function12f5b: ; 12f5b ret ; 12f73 -Function12f73: ; 12f73 +.asm_12f73: ; 12f73 call SetUpMoveScreenBG - ld de, Unknown_12fb2 - call InitMenu3 - call Function131ef - ld hl, wcfa5 + ld de, DeleteMoveScreenAttrs + call SetMenuAttributes + call SetUpMoveList + ld hl, w2DMenuFlags1 set 6, [hl] - jr Function12f93 + jr .asm_12f93 -Function12f86: ; 12f86 - call Function1bd3 +.asm_12f86: ; 12f86 + call ScrollingMenuJoypad bit 1, a - jp nz, Function12f9f + jp nz, .asm_12f9f bit 0, a - jp nz, Function12f9c + jp nz, .asm_12f9c -Function12f93: ; 12f93 +.asm_12f93: ; 12f93 call PrepareToPlaceMoveData call PlaceMoveData - jp Function12f86 + jp .asm_12f86 ; 12f9c -Function12f9c: ; 12f9c +.asm_12f9c: ; 12f9c and a - jr Function12fa0 + jr .asm_12fa0 -Function12f9f: ; 12f9f +.asm_12f9f: ; 12f9f scf -Function12fa0: ; 12fa0 +.asm_12fa0: ; 12fa0 push af xor a ld [wSwitchMon], a - ld hl, wcfa5 + ld hl, w2DMenuFlags1 res 6, [hl] call ClearSprites call ClearTileMap @@ -1514,8 +1514,12 @@ Function12fa0: ; 12fa0 ret ; 12fb2 -Unknown_12fb2: ; 12fb2 - db $03, $01, $03, $01, $40, $00, $20, $c3 +DeleteMoveScreenAttrs: ; 12fb2 + db 3, 1 + db 3, 1 + db $40, $00 + dn 2, 0 + db D_UP | D_DOWN | A_BUTTON | B_BUTTON ; 12fba ManagePokemonMoves: ; 12fba @@ -1539,19 +1543,19 @@ ManagePokemonMoves: ; 12fba MoveScreenLoop: ; 12fd5 ld a, [CurPartyMon] inc a - ld [wd0d8], a + ld [wPartyMenuCursor], a call SetUpMoveScreenBG call Function132d3 - ld de, Unknown_13163 - call InitMenu3 + ld de, MoveScreenAttributes + call SetMenuAttributes .loop - call Function131ef - ld hl, wcfa5 + call SetUpMoveList + ld hl, w2DMenuFlags1 set 6, [hl] jr .skip_joy .joy_loop - call Function1bd3 + call ScrollingMenuJoypad bit 1, a jp nz, .b_button bit 0, a @@ -1589,7 +1593,7 @@ MoveScreenLoop: ; 12fd5 jp z, .exit ld a, [wMoveSwapBuffer] - ld [MenuSelection2], a + ld [wMenuCursorY], a xor a ld [wMoveSwapBuffer], a hlcoord 1, 2 @@ -1669,9 +1673,9 @@ MoveScreenLoop: ; 12fd5 ld a, [wMoveSwapBuffer] and a jr nz, .place_move - ld a, [MenuSelection2] + ld a, [wMenuCursorY] ld [wMoveSwapBuffer], a - call Function1bee + call PlaceHollowCursor jp .moving_move .place_move @@ -1716,7 +1720,7 @@ MoveScreenLoop: ; 12fd5 .copy_move: ; 1313a push hl - ld a, [MenuSelection2] + ld a, [wMenuCursorY] dec a ld c, a ld b, $0 @@ -1740,14 +1744,18 @@ MoveScreenLoop: ; 12fd5 .exit: ; 13154 xor a ld [wMoveSwapBuffer], a - ld hl, wcfa5 + ld hl, w2DMenuFlags1 res 6, [hl] call ClearSprites jp ClearTileMap ; 13163 -Unknown_13163: ; 13163 - db $03, $01, $03, $01, $40, $00, $20, $f3 +MoveScreenAttributes: ; 13163 + db 3, 1 + db 3, 1 + db $40, $00 + dn 2, 0 + db D_UP | D_DOWN | D_LEFT | D_RIGHT | A_BUTTON | B_BUTTON ; 1316b String_1316b: ; 1316b @@ -1761,7 +1769,7 @@ SetUpMoveScreenBG: ; 13172 xor a ld [hBGMapMode], a callba Functionfb571 - callba ClearSpriteAnims + callba ClearSpriteAnims2 ld a, [CurPartyMon] ld e, a ld d, $0 @@ -1802,7 +1810,7 @@ SetUpMoveScreenBG: ; 13172 jp ClearBox ; 131ef -Function131ef: ; 131ef +SetUpMoveList: ; 131ef xor a ld [hBGMapMode], a ld [wMoveSwapBuffer], a @@ -1817,12 +1825,12 @@ Function131ef: ; 131ef hlcoord 2, 3 predef ListMoves hlcoord 10, 4 - predef Function50c50 + predef ListMovePP call WaitBGMap call SetPalettes - ld a, [wd0eb] + ld a, [wNumMoves] inc a - ld [wcfa3], a + ld [w2DMenuNumRows], a hlcoord 0, 11 ld b, 5 ld c, 18 @@ -1834,7 +1842,7 @@ PrepareToPlaceMoveData: ; 13235 ld bc, PARTYMON_STRUCT_LENGTH ld a, [CurPartyMon] call AddNTimes - ld a, [MenuSelection2] + ld a, [wMenuCursorY] dec a ld c, a ld b, $0 diff --git a/engine/stats_screen.asm b/engine/stats_screen.asm index 766e05fe7..302f29ba4 100755 --- a/engine/stats_screen.asm +++ b/engine/stats_screen.asm @@ -1,4 +1,4 @@ -Function4dc7b: ; 4dc7b (13:5c7b) +BattleStatsScreenInit: ; 4dc7b (13:5c7b) ld a, [wLinkMode] cp LINK_MOBILE jr nz, StatsScreenInit @@ -6,13 +6,13 @@ Function4dc7b: ; 4dc7b (13:5c7b) ld a, [wBattleMode] ; wd22d (aliases: EnemyMonEnd) and a jr z, StatsScreenInit - jr Function4dc8f + jr _BattleStatsScreenInit StatsScreenInit: ; 4dc8a ld hl, StatsScreenMain jr StatsScreenInit_gotaddress -Function4dc8f: ; 4dc8f +_BattleStatsScreenInit: ; 4dc8f ld hl, StatsScreenBattle jr StatsScreenInit_gotaddress @@ -21,7 +21,7 @@ StatsScreenInit_gotaddress: ; 4dc94 push af xor a ld [hMapAnims], a ; disable overworld tile animations - ld a, [wc2c6] ; whether sprite is to be mirrorred + ld a, [wBoxAlignment] ; whether sprite is to be mirrorred push af ld a, [wJumptableIndex] ld b, a @@ -46,7 +46,7 @@ StatsScreenInit_gotaddress: ; 4dc94 ld a, c ld [wcf64], a pop af - ld [wc2c6], a + ld [wBoxAlignment], a pop af ld [hMapAnims], a ret @@ -66,7 +66,7 @@ StatsScreenMain: ; 0x4dcd2 and $7f ld hl, StatsScreenPointerTable rst JumpTable - call Function4dd3a ; check for keys? + call StatsScreen_WaitAnim ; check for keys? ld a, [wJumptableIndex] bit 7, a jr z, .loop @@ -88,7 +88,7 @@ StatsScreenBattle: ; 4dcf7 and $7f ld hl, StatsScreenPointerTable rst JumpTable - call Function4dd3a + call StatsScreen_WaitAnim callba Function100dfd jr c, .exit ld a, [wJumptableIndex] @@ -100,44 +100,46 @@ StatsScreenBattle: ; 4dcf7 ; 4dd2a StatsScreenPointerTable: ; 4dd2a - dw MonStatsInit ; regular pokémon - dw EggStatsInit ; egg - dw StatsScreenWaitCry - dw Function4ddac - dw Function4ddc6 - dw StatsScreenWaitCry - dw Function4ddd6 - dw Function4dd6c + jumptable_start + jumptable MonStatsInit ; regular pokémon + jumptable EggStatsInit ; egg + jumptable StatsScreenWaitCry + jumptable EggStatsJoypad + jumptable StatsScreen_LoadPage + jumptable StatsScreenWaitCry + jumptable MonStatsJoypad + jumptable StatsScreen_Exit ; 4dd3a -Function4dd3a: ; 4dd3a (13:5d3a) +StatsScreen_WaitAnim: ; 4dd3a (13:5d3a) ld hl, wcf64 bit 6, [hl] - jr nz, .asm_4dd49 + jr nz, .try_anim bit 5, [hl] - jr nz, .asm_4dd56 + jr nz, .finish call DelayFrame ret -.asm_4dd49 - callba Functiond00b4 - jr nc, .asm_4dd56 + +.try_anim + callba SetUpPokeAnim + jr nc, .finish ld hl, wcf64 res 6, [hl] -.asm_4dd56 +.finish ld hl, wcf64 res 5, [hl] callba Function10402d ret -Function4dd62: ; 4dd62 (13:5d62) +StatsScreen_SetJumptableIndex: ; 4dd62 (13:5d62) ld a, [wJumptableIndex] and $80 or h ld [wJumptableIndex], a ret -Function4dd6c: ; 4dd6c (13:5d6c) +StatsScreen_Exit: ; 4dd6c (13:5d6c) ld hl, wJumptableIndex set 7, [hl] ret @@ -148,19 +150,20 @@ MonStatsInit: ; 4dd72 (13:5d72) call ClearBGPalettes call ClearTileMap callba Function10402d - call Function4ddf2 + call StatsScreen_CopyToTempMon ld a, [CurPartySpecies] cp EGG - jr z, .asm_4dd9b - call Function4deea + jr z, .egg + call StatsScreen_InitUpperHalf ld hl, wcf64 set 4, [hl] - ld h, $4 - call Function4dd62 + ld h, StatsScreen_LoadPageTableIndex + call StatsScreen_SetJumptableIndex ret -.asm_4dd9b - ld h, $1 - call Function4dd62 + +.egg + ld h, EggStatsInitTableIndex + call StatsScreen_SetJumptableIndex ret EggStatsInit: ; 4dda1 @@ -172,24 +175,26 @@ EggStatsInit: ; 4dda1 ; 0x4ddac -Function4ddac: ; 4ddac (13:5dac) - call Function4de2c - jr nc, .asm_4ddb7 - ld h, $0 - call Function4dd62 +EggStatsJoypad: ; 4ddac (13:5dac) + call StatsScreen_GetJoypad + jr nc, .check + ld h, MonStatsInitTableIndex + call StatsScreen_SetJumptableIndex ret -.asm_4ddb7 - bit 0, a - jr nz, .asm_4ddc0 - and $c3 - jp Function4de54 -.asm_4ddc0 - ld h, $7 - call Function4dd62 + +.check + bit A_BUTTON_F, a + jr nz, .quit + and D_DOWN | D_UP | A_BUTTON | B_BUTTON + jp StatsScreen_JoypadAction + +.quit + ld h, StatsScreen_ExitTableIndex + call StatsScreen_SetJumptableIndex ret -Function4ddc6: ; 4ddc6 (13:5dc6) - call Function4dfb6 +StatsScreen_LoadPage: ; 4ddc6 (13:5dc6) + call StatsScreen_LoadGFX ld hl, wcf64 res 4, [hl] ld a, [wJumptableIndex] @@ -197,16 +202,16 @@ Function4ddc6: ; 4ddc6 (13:5dc6) ld [wJumptableIndex], a ret -Function4ddd6: ; 4ddd6 (13:5dd6) - call Function4de2c - jr nc, .asm_4dde1 - ld h, $0 - call Function4dd62 +MonStatsJoypad: ; 4ddd6 (13:5dd6) + call StatsScreen_GetJoypad + jr nc, .next + ld h, MonStatsInitTableIndex + call StatsScreen_SetJumptableIndex ret -.asm_4dde1 - and $f3 - jp Function4de54 +.next + and D_DOWN | D_UP | D_LEFT | D_RIGHT | A_BUTTON | B_BUTTON + jp StatsScreen_JoypadAction StatsScreenWaitCry: ; 4dde6 (13:5de6) call IsSFXPlaying @@ -216,32 +221,33 @@ StatsScreenWaitCry: ; 4dde6 (13:5de6) ld [wJumptableIndex], a ret -Function4ddf2: ; 4ddf2 (13:5df2) +StatsScreen_CopyToTempMon: ; 4ddf2 (13:5df2) ld a, [MonType] cp BREEDMON - jr nz, .asm_4de10 - ld a, [wd018_Mon] + jr nz, .breedmon + ld a, [wBufferMon] ld [CurSpecies], a call GetBaseData - ld hl, wd018_Mon + ld hl, wBufferMon ld de, TempMon ld bc, PARTYMON_STRUCT_LENGTH call CopyBytes - jr .asm_4de2a -.asm_4de10 + jr .done + +.breedmon callba CopyPkmnToTempMon ld a, [CurPartySpecies] cp EGG - jr z, .asm_4de2a + jr z, .done ld a, [MonType] cp BOXMON - jr c, .asm_4de2a - callba Function50890 -.asm_4de2a + jr c, .done + callba CalcTempmonStats +.done and a ret -Function4de2c: ; 4de2c (13:5e2c) +StatsScreen_GetJoypad: ; 4de2c (13:5e2c) call GetJoypad ld a, [MonType] cp BREEDMON @@ -249,14 +255,14 @@ Function4de2c: ; 4de2c (13:5e2c) push hl push de push bc - callba Functione2f95 + callba StatsScreenDPad pop bc pop de pop hl - ld a, [wcf73] - and $c0 + ld a, [wMenuJoypad] + and D_DOWN | D_UP jr nz, .set_carry - ld a, [wcf73] + ld a, [wMenuJoypad] jr .clear_flags .notbreedmon @@ -269,100 +275,107 @@ Function4de2c: ; 4de2c (13:5e2c) scf ret -Function4de54: ; 4de54 (13:5e54) +StatsScreen_JoypadAction: ; 4de54 (13:5e54) push af ld a, [wcf64] and $3 ld c, a pop af - bit 1, a - jp nz, Function4dee4 - bit 5, a - jr nz, .asm_4dec7 - bit 4, a - jr nz, .asm_4debd - bit 0, a - jr nz, .asm_4deb8 - bit 6, a - jr nz, .asm_4dea0 - bit 7, a - jr nz, .asm_4de77 - jr .asm_4dece -.asm_4de77 + bit B_BUTTON_F, a + jp nz, .b_button + bit D_LEFT_F, a + jr nz, .d_left + bit D_RIGHT_F, a + jr nz, .d_right + bit A_BUTTON_F, a + jr nz, .a_button + bit D_UP_F, a + jr nz, .d_up + bit D_DOWN_F, a + jr nz, .d_down + jr .done + +.d_down ld a, [MonType] cp BOXMON - jr nc, .asm_4dece + jr nc, .done and a ld a, [PartyCount] - jr z, .asm_4de87 + jr z, .next_mon ld a, [OTPartyCount] -.asm_4de87 +.next_mon ld b, a ld a, [CurPartyMon] inc a cp b - jr z, .asm_4dece + jr z, .done ld [CurPartyMon], a ld b, a ld a, [MonType] and a - jr nz, .asm_4dede + jr nz, .load_mon ld a, b inc a - ld [wd0d8], a - jr .asm_4dede -.asm_4dea0 + ld [wPartyMenuCursor], a + jr .load_mon + +.d_up ld a, [CurPartyMon] and a - jr z, .asm_4dece + jr z, .done dec a ld [CurPartyMon], a ld b, a ld a, [MonType] and a - jr nz, .asm_4dede + jr nz, .load_mon ld a, b inc a - ld [wd0d8], a - jr .asm_4dede -.asm_4deb8 + ld [wPartyMenuCursor], a + jr .load_mon + +.a_button ld a, c cp $3 - jr z, Function4dee4 -.asm_4debd + jr z, .b_button +.d_right inc c ld a, $3 cp c - jr nc, .asm_4decf + jr nc, .set_page ld c, $1 - jr .asm_4decf -.asm_4dec7 + jr .set_page + +.d_left dec c - jr nz, .asm_4decf + jr nz, .set_page ld c, $3 - jr .asm_4decf -.asm_4dece + jr .set_page + +.done ret -.asm_4decf + +.set_page ld a, [wcf64] - and $fc + and %11111100 or c ld [wcf64], a - ld h, $4 - call Function4dd62 + ld h, StatsScreen_LoadPageTableIndex + call StatsScreen_SetJumptableIndex ret -.asm_4dede - ld h, $0 - call Function4dd62 + +.load_mon + ld h, MonStatsInitTableIndex + call StatsScreen_SetJumptableIndex ret -Function4dee4: ; 4dee4 (13:5ee4) - ld h, $7 - call Function4dd62 +.b_button: ; 4dee4 (13:5ee4) + ld h, StatsScreen_ExitTableIndex + call StatsScreen_SetJumptableIndex ret -Function4deea: ; 4deea (13:5eea) - call Function4df45 +StatsScreen_InitUpperHalf: ; 4deea (13:5eea) + call .PlaceHPBar xor a ld [hBGMapMode], a ld a, [CurBaseData] ; wd236 (aliases: BaseDexNo) @@ -379,13 +392,13 @@ Function4deea: ; 4deea (13:5eea) call PrintNum hlcoord 14, 0 call PrintLevel - ld hl, Unknown_4df77 - call Function4e528 - call Function4e505 + ld hl, .NicknamePointers + call GetNicknamePointer + call CopyNickname hlcoord 8, 2 call PlaceString hlcoord 18, 0 - call Function4df66 + call .PlaceGenderChar hlcoord 9, 4 ld a, "/" ld [hli], a @@ -393,12 +406,12 @@ Function4deea: ; 4deea (13:5eea) ld [wd265], a call GetPokemonName call PlaceString - call Function4df8f - call Function4df9b - call Function4dfa6 + call StatsScreen_PlaceHorizontalDivider + call StatsScreen_PlacePageSwitchArrows + call StatsScreen_PlaceShinyIcon ret -Function4df45: ; 4df45 (13:5f45) +.PlaceHPBar: ; 4df45 (13:5f45) ld hl, TempMonHP ld a, [hli] ld b, a @@ -407,15 +420,15 @@ Function4df45: ; 4df45 (13:5f45) ld a, [hli] ld d, a ld e, [hl] - callba DrawPartyMenuHPBar + callba ComputeHPBarPixels ld hl, wcda1 call SetHPPal - ld b, SCGB_03 + ld b, SCGB_STATS_SCREEN_HP_PALS call GetSGBLayout call DelayFrame ret -Function4df66: ; 4df66 (13:5f66) +.PlaceGenderChar: ; 4df66 (13:5f66) push hl callba GetGender pop hl @@ -428,14 +441,15 @@ Function4df66: ; 4df66 (13:5f66) ret ; 4df77 (13:5f77) -Unknown_4df77: ; 4df77 +.NicknamePointers: ; 4df77 dw PartyMonNicknames dw OTPartyMonNicknames dw sBoxMonNicknames - dw wd002 + dw wBufferMonNick ; 4df7f Function4df7f: ; 4df7f +; unreferenced hlcoord 7, 0 ld bc, SCREEN_WIDTH ld d, SCREEN_HEIGHT @@ -448,7 +462,7 @@ Function4df7f: ; 4df7f ret ; 4df8f -Function4df8f: ; 4df8f (13:5f8f) +StatsScreen_PlaceHorizontalDivider: ; 4df8f (13:5f8f) hlcoord 0, 7 ld b, SCREEN_WIDTH ld a, "_" @@ -458,14 +472,14 @@ Function4df8f: ; 4df8f (13:5f8f) jr nz, .loop ret -Function4df9b: ; 4df9b (13:5f9b) +StatsScreen_PlacePageSwitchArrows: ; 4df9b (13:5f9b) hlcoord 12, 6 ld [hl], "◀" hlcoord 19, 6 ld [hl], "▶" ret -Function4dfa6: ; 4dfa6 (13:5fa6) +StatsScreen_PlaceShinyIcon: ; 4dfa6 (13:5fa6) ld bc, TempMonDVs callba CheckShininess ret nc @@ -473,126 +487,127 @@ Function4dfa6: ; 4dfa6 (13:5fa6) ld [hl], "<SHINY>" ret -Function4dfb6: ; 4dfb6 (13:5fb6) - ld a, [CurBaseData] ; wd236 (aliases: BaseDexNo) +StatsScreen_LoadGFX: ; 4dfb6 (13:5fb6) + ld a, [BaseDexNo] ; wd236 (aliases: BaseDexNo) ld [wd265], a ld [CurSpecies], a xor a ld [hBGMapMode], a - call Function4dfda - call Function4e002 - call Function4dfed + call .ClearBox + call .PageTilemap + call .LoadPals ld hl, wcf64 bit 4, [hl] - jr nz, .asm_4dfd6 + jr nz, .place_frontpic call SetPalettes ret -.asm_4dfd6 - call Function4e226 +.place_frontpic + call StatsScreen_PlaceFrontpic ret -Function4dfda: ; 4dfda (13:5fda) +.ClearBox: ; 4dfda (13:5fda) ld a, [wcf64] and $3 ld c, a - call Function4e4cd + call StatsScreen_LoadPageIndicators hlcoord 0, 8 lb bc, 10, 20 call ClearBox ret -Function4dfed: ; 4dfed (13:5fed) +.LoadPals: ; 4dfed (13:5fed) ld a, [wcf64] and $3 ld c, a - callba Function8c8a + callba LoadStatsScreenPals call DelayFrame ld hl, wcf64 set 5, [hl] ret -Function4e002: ; 4e002 (13:6002) +.PageTilemap: ; 4e002 (13:6002) ld a, [wcf64] and $3 dec a - ld hl, Jumptable_4e00d + ld hl, .Jumptable rst JumpTable ret -Jumptable_4e00d: ; 4e00d (13:600d) - dw Function4e013 - dw Function4e147 - dw Function4e1ae +.Jumptable: ; 4e00d (13:600d) + jumptable_start + jumptable .PinkPage + jumptable .GreenPage + jumptable .BluePage -Function4e013: ; 4e013 (13:6013) +.PinkPage: ; 4e013 (13:6013) hlcoord 0, 9 ld b, $0 predef DrawPlayerHP hlcoord 8, 9 ld [hl], $41 - ld de, String_4e119 + ld de, .Status_Type hlcoord 0, 12 call PlaceString ld a, [TempMonPokerusStatus] ld b, a and $f - jr nz, .asm_4e055 + jr nz, .HasPokerus ld a, b and $f0 - jr z, .asm_4e03d + jr z, .NotImmuneToPkrs hlcoord 8, 8 - ld [hl], $e8 -.asm_4e03d + ld [hl], "." +.NotImmuneToPkrs ld a, [MonType] - cp $2 - jr z, .asm_4e060 + cp BOXMON + jr z, .StatusOK hlcoord 6, 13 push hl ld de, TempMonStatus predef PlaceStatusString pop hl - jr nz, .asm_4e066 - jr .asm_4e060 -.asm_4e055 - ld de, String_4e142 + jr nz, .done_status + jr .StatusOK +.HasPokerus + ld de, .PkrsStr hlcoord 1, 13 call PlaceString - jr .asm_4e066 -.asm_4e060 - ld de, String_4e127 + jr .done_status +.StatusOK + ld de, .OK_str call PlaceString -.asm_4e066 +.done_status hlcoord 1, 15 predef PrintMonTypes hlcoord 9, 8 - ld de, $14 - ld b, $a + ld de, SCREEN_WIDTH + ld b, 10 ld a, $31 -.asm_4e078 +.vertical_divider ld [hl], a add hl, de dec b - jr nz, .asm_4e078 - ld de, String_4e12b + jr nz, .vertical_divider + ld de, .ExpPointStr hlcoord 10, 9 call PlaceString hlcoord 17, 14 - call Function4e0d3 + call .PrintNextLevel hlcoord 13, 10 lb bc, 3, 7 ld de, TempMonExp call PrintNum - call Function4e0e7 + call .CalcExpToNextLevel hlcoord 13, 13 lb bc, 3, 7 ld de, Buffer1 ; wd1ea (aliases: MagikarpLength) call PrintNum - ld de, String_4e136 + ld de, .LevelUpStr hlcoord 10, 12 call PlaceString - ld de, String_4e13f + ld de, .ToStr hlcoord 14, 14 call PlaceString hlcoord 11, 16 @@ -606,34 +621,34 @@ Function4e013: ; 4e013 (13:6013) ld [hl], $41 ret -Function4e0d3: ; 4e0d3 (13:60d3) +.PrintNextLevel: ; 4e0d3 (13:60d3) ld a, [TempMonLevel] push af cp MAX_LEVEL - jr z, .asm_4e0df + jr z, .AtMaxLevel inc a ld [TempMonLevel], a -.asm_4e0df +.AtMaxLevel call PrintLevel pop af ld [TempMonLevel], a ret -Function4e0e7: ; 4e0e7 (13:60e7) +.CalcExpToNextLevel: ; 4e0e7 (13:60e7) ld a, [TempMonLevel] cp MAX_LEVEL - jr z, .asm_4e111 + jr z, .AlreadyAtMaxLevel inc a ld d, a callba CalcExpAtLevel rept 2 ld hl, TempMonExp + 2 endr - ld a, [$ffb6] + ld a, [hQuotient + 2] sub [hl] dec hl - ld [wd1ec], a - ld a, [$ffb5] + ld [Buffer3], a + ld a, [hQuotient + 1] sbc [hl] dec hl ld [Buffer2], a ; wd1eb (aliases: MovementType) @@ -641,7 +656,8 @@ endr sbc [hl] ld [Buffer1], a ; wd1ea (aliases: MagikarpLength) ret -.asm_4e111 + +.AlreadyAtMaxLevel ld hl, Buffer1 ; wd1ea (aliases: MagikarpLength) xor a rept 2 @@ -651,39 +667,39 @@ endr ret ; 4e119 (13:6119) -String_4e119: ; 4e119 +.Status_Type: ; 4e119 db "STATUS/" next "TYPE/@" ; 4e127 -String_4e127: ; 4e127 +.OK_str: ; 4e127 db "OK @" ; 4e12b -String_4e12b: ; 4e12b +.ExpPointStr: ; 4e12b db "EXP POINTS@" ; 4e136 -String_4e136: ; 4e136 +.LevelUpStr: ; 4e136 db "LEVEL UP@" ; 4e13f -String_4e13f: ; 4e13f +.ToStr: ; 4e13f db "TO@" ; 4e142 -String_4e142: ; 4e142 +.PkrsStr: ; 4e142 db "#RUS@" ; 4e147 -Function4e147: ; 4e147 (13:6147) - ld de, String_4e1a0 +.GreenPage: ; 4e147 (13:6147) + ld de, .Item hlcoord 0, 8 call PlaceString - call Function4e189 + call .GetItemName hlcoord 8, 8 call PlaceString - ld de, String_4e1a9 + ld de, .Move hlcoord 0, 10 call PlaceString ld hl, TempMonMoves @@ -695,53 +711,53 @@ Function4e147: ; 4e147 (13:6147) ld [Buffer1], a predef ListMoves hlcoord 12, 11 - ld a, $28 + ld a, SCREEN_WIDTH * 2 ld [Buffer1], a - predef Function50c50 + predef ListMovePP ret -Function4e189: ; 4e189 (13:6189) - ld de, String_4e1a5 +.GetItemName: ; 4e189 (13:6189) + ld de, .ThreeDashes ld a, [TempMonItem] and a ret z ld b, a - callba Function28771 + callba TimeCapsule_ReplaceTeruSama ld a, b ld [wd265], a call GetItemName ret ; 4e1a0 (13:61a0) -String_4e1a0: ; 4e1a0 +.Item: ; 4e1a0 db "ITEM@" ; 4e1a5 -String_4e1a5: ; 4e1a5 +.ThreeDashes: ; 4e1a5 db "---@" ; 4e1a9 -String_4e1a9: ; 4e1a9 +.Move: ; 4e1a9 db "MOVE@" ; 4e1ae -Function4e1ae: ; 4e1ae (13:61ae) - call Function4e1cc +.BluePage: ; 4e1ae (13:61ae) + call .PlaceOTInfo hlcoord 10, 8 - ld de, $14 - ld b, $a + ld de, SCREEN_WIDTH + ld b, 10 ld a, $31 -.asm_4e1bb +.BluePageVerticalDivider ld [hl], a add hl, de dec b - jr nz, .asm_4e1bb + jr nz, .BluePageVerticalDivider hlcoord 11, 8 - ld bc, $6 + ld bc, 6 predef PrintTempMonStats ret -Function4e1cc: ; 4e1cc (13:61cc) +.PlaceOTInfo: ; 4e1cc (13:61cc) ld de, IDNoString hlcoord 0, 9 call PlaceString @@ -752,101 +768,106 @@ Function4e1cc: ; 4e1cc (13:61cc) lb bc, PRINTNUM_LEADINGZEROS | 2, 5 ld de, TempMonID call PrintNum - ld hl, Unknown_4e216 - call Function4e528 - call Function4e505 + ld hl, .OTNamePointers + call GetNicknamePointer + call CopyNickname callba CheckNickErrors hlcoord 2, 13 call PlaceString ld a, [TempMonCaughtGender] and a - jr z, .asm_4e215 + jr z, .done cp $7f - jr z, .asm_4e215 + jr z, .done and $80 ld a, "♂" - jr z, .asm_4e211 + jr z, .got_gender ld a, "♀" -.asm_4e211 +.got_gender hlcoord 9, 13 ld [hl], a -.asm_4e215 +.done ret ; 4e216 (13:6216) -Unknown_4e216: ; 4e216 +.OTNamePointers: ; 4e216 dw PartyMonOT dw OTPartyMonOT dw sBoxMonOT - dw wd00d + dw wBufferMonOT ; 4e21e IDNoString: ; 4e21e - db $73, "№.@" + db "<ID>№.@" OTString: ; 4e222 db "OT/@" ; 4e226 -Function4e226: ; 4e226 (13:6226) +StatsScreen_PlaceFrontpic: ; 4e226 (13:6226) ld hl, TempMonDVs predef GetUnownLetter - call Function4e2ad - jr c, .asm_4e238 + call StatsScreen_GetAnimationParam + jr c, .egg and a - jr z, .asm_4e23f - jr .asm_4e246 -.asm_4e238 - call Function4e271 + jr z, .no_cry + jr .cry + +.egg + call .AnimateEgg call SetPalettes ret -.asm_4e23f - call Function4e253 + +.no_cry + call .AnimateMon call SetPalettes ret -.asm_4e246 + +.cry call SetPalettes - call Function4e253 + call .AnimateMon ld a, [CurPartySpecies] call PlayCry2 ret -Function4e253: ; 4e253 (13:6253) +.AnimateMon: ; 4e253 (13:6253) ld hl, wcf64 set 5, [hl] ld a, [CurPartySpecies] cp UNOWN - jr z, .asm_4e266 + jr z, .unown hlcoord 0, 0 call PrepMonFrontpic ret -.asm_4e266 + +.unown xor a - ld [wc2c6], a + ld [wBoxAlignment], a hlcoord 0, 0 call _PrepMonFrontpic ret -Function4e271: ; 4e271 (13:6271) +.AnimateEgg: ; 4e271 (13:6271) ld a, [CurPartySpecies] cp UNOWN - jr z, .asm_4e281 - ld a, $1 - ld [wc2c6], a - call Function4e289 + jr z, .unownegg + ld a, TRUE + ld [wBoxAlignment], a + call .get_animation ret -.asm_4e281 + +.unownegg xor a - ld [wc2c6], a - call Function4e289 + ld [wBoxAlignment], a + call .get_animation ret -Function4e289: ; 4e289 (13:6289) +.get_animation: ; 4e289 (13:6289) ld a, [CurPartySpecies] call IsAPokemon ret c - call Function4e307 + call StatsScreen_LoadTextBoxSpaceGFX ld de, VTiles2 tile $00 predef FrontpicPredef hlcoord 0, 0 @@ -857,34 +878,34 @@ Function4e289: ; 4e289 (13:6289) set 6, [hl] ret -Function4e2ad: ; 4e2ad (13:62ad) +StatsScreen_GetAnimationParam: ; 4e2ad (13:62ad) ld a, [MonType] ld hl, .Jumptable rst JumpTable ret .Jumptable: ; 4e2b5 (13:62b5) - dw Function4e2bf - dw Function4e2cf - dw Function4e2d1 - dw Function4e2ed - dw Function4e301 + dw .PartyMon + dw .OTPartyMon + dw .BoxMon + dw .Tempmon + dw .Wildmon -Function4e2bf: ; 4e2bf (13:62bf) +.PartyMon: ; 4e2bf (13:62bf) ld a, [CurPartyMon] ld hl, PartyMons ; wdcdf (aliases: PartyMon1, PartyMon1Species) ld bc, PARTYMON_STRUCT_LENGTH call AddNTimes ld b, h ld c, l - jr Function4e2f2 + jr .CheckEggFaintedFrzSlp -Function4e2cf: ; 4e2cf (13:62cf) +.OTPartyMon: ; 4e2cf (13:62cf) xor a ret -Function4e2d1: ; 4e2d1 (13:62d1) +.BoxMon: ; 4e2d1 (13:62d1) ld hl, sBoxMons ld bc, PARTYMON_STRUCT_LENGTH ld a, [CurPartyMon] @@ -893,36 +914,37 @@ Function4e2d1: ; 4e2d1 (13:62d1) ld c, l ld a, BANK(sBoxMons) call GetSRAMBank - call Function4e2f2 + call .CheckEggFaintedFrzSlp push af call CloseSRAM pop af ret -Function4e2ed: ; 4e2ed (13:62ed) +.Tempmon: ; 4e2ed (13:62ed) ld bc, TempMonSpecies ; wd10e (aliases: TempMon) - jr Function4e2f2 ; utterly pointless + jr .CheckEggFaintedFrzSlp ; utterly pointless -Function4e2f2: ; 4e2f2 (13:62f2) +.CheckEggFaintedFrzSlp: ; 4e2f2 (13:62f2) ld a, [CurPartySpecies] cp EGG jr z, .egg call CheckFaintedFrzSlp - jr c, Function4e305 + jr c, .FaintedFrzSlp .egg xor a scf ret -Function4e301: ; 4e301 (13:6301) +.Wildmon: ; 4e301 (13:6301) ld a, $1 and a ret -Function4e305: ; 4e305 (13:6305) + +.FaintedFrzSlp: ; 4e305 (13:6305) xor a ret -Function4e307: ; 4e307 (13:6307) +StatsScreen_LoadTextBoxSpaceGFX: ; 4e307 (13:6307) nop push hl push de @@ -956,9 +978,9 @@ EggStatsScreen: ; 4e33a ld [hBGMapMode], a ld hl, wcda1 call SetHPPal - ld b, SCGB_03 + ld b, SCGB_STATS_SCREEN_HP_PALS call GetSGBLayout - call Function4df8f + call StatsScreen_PlaceHorizontalDivider ld de, EggString hlcoord 8, 1 call PlaceString @@ -995,7 +1017,7 @@ EggStatsScreen: ; 4e33a hlcoord 0, 0 call PrepMonFrontpic callba Function10402d - call Function4e497 + call StatsScreen_AnimateEgg ld a, [TempMonHappiness] cp 6 @@ -1034,22 +1056,23 @@ EggALotMoreTimeString: ; 0x4e46e ; 0x4e497 -Function4e497: ; 4e497 (13:6497) - call Function4e2ad +StatsScreen_AnimateEgg: ; 4e497 (13:6497) + call StatsScreen_GetAnimationParam ret nc ld a, [TempMonHappiness] ld e, $7 - cp $6 - jr c, .asm_4e4ab + cp 6 + jr c, .animate ld e, $8 - cp $b - jr c, .asm_4e4ab + cp 11 + jr c, .animate ret -.asm_4e4ab + +.animate push de ld a, $1 - ld [wc2c6], a - call Function4e307 + ld [wBoxAlignment], a + call StatsScreen_LoadTextBoxSpaceGFX ld de, VTiles2 tile $00 predef FrontpicPredef pop de @@ -1060,7 +1083,7 @@ Function4e497: ; 4e497 (13:6497) set 6, [hl] ret -Function4e4cd: ; 4e4cd (13:64cd) +StatsScreen_LoadPageIndicators: ; 4e4cd (13:64cd) hlcoord 13, 5 ld a, $36 call .load_square @@ -1092,7 +1115,7 @@ Function4e4cd: ; 4e4cd (13:64cd) pop bc ret -Function4e505: ; 4e505 (13:6505) +CopyNickname: ; 4e505 (13:6505) ld de, StringBuffer1 ld bc, PKMN_NAME_LENGTH jr .okay ; uuterly pointless @@ -1114,7 +1137,7 @@ Function4e505: ; 4e505 (13:6505) pop de ret -Function4e528: ; 4e528 (13:6528) +GetNicknamePointer: ; 4e528 (13:6528) ld a, [MonType] add a ld c, a @@ -1124,7 +1147,7 @@ Function4e528: ; 4e528 (13:6528) ld h, [hl] ld l, a ld a, [MonType] - cp $3 + cp BREEDMON ret z ld a, [CurPartyMon] jp SkipNames diff --git a/engine/std_scripts.asm b/engine/std_scripts.asm index 311ff00d0..b8762dfc0 100644 --- a/engine/std_scripts.asm +++ b/engine/std_scripts.asm @@ -55,7 +55,7 @@ StdScripts:: PokeCenterNurseScript: ; EVENT_WELCOMED_TO_POKECOM_CENTER is never set - loadfont + opentext checkmorn iftrue .morn checkday @@ -68,33 +68,33 @@ PokeCenterNurseScript: checkevent EVENT_WELCOMED_TO_POKECOM_CENTER iftrue .morn_comcenter farwritetext NurseMornText - keeptextopen + buttonsound jump .ok .morn_comcenter farwritetext PokeComNurseMornText - keeptextopen + buttonsound jump .ok .day checkevent EVENT_WELCOMED_TO_POKECOM_CENTER iftrue .day_comcenter farwritetext NurseDayText - keeptextopen + buttonsound jump .ok .day_comcenter farwritetext PokeComNurseDayText - keeptextopen + buttonsound jump .ok .nite checkevent EVENT_WELCOMED_TO_POKECOM_CENTER iftrue .nite_comcenter farwritetext NurseNiteText - keeptextopen + buttonsound jump .ok .nite_comcenter farwritetext PokeComNurseNiteText - keeptextopen + buttonsound jump .ok .ok @@ -138,24 +138,23 @@ PokeCenterNurseScript: spriteface LAST_TALKED, DOWN pause 10 + waitbutton closetext - loadmovesprites end .pokerus ; already cleared earlier in the script checkevent EVENT_WELCOMED_TO_POKECOM_CENTER iftrue .pokerus_comcenter - farwritetext NursePokerusText + waitbutton closetext - loadmovesprites jump .pokerus_done .pokerus_comcenter farwritetext PokeComNursePokerusText + waitbutton closetext - loadmovesprites .pokerus_done setflag ENGINE_POKERUS @@ -181,48 +180,48 @@ MerchandiseShelfScript: farjumptext MerchandiseShelfText TownMapScript: - loadfont + opentext farwritetext TownMapText - closetext + waitbutton special Special_TownMap - loadmovesprites + closetext end WindowScript: farjumptext WindowText TVScript: - loadfont + opentext farwritetext TVText + waitbutton closetext - loadmovesprites end HomepageScript: farjumptext HomepageText Radio1Script: - loadfont + opentext writebyte $0 special MapRadio - loadmovesprites + closetext end Radio2Script: ; Lucky Channel - loadfont + opentext writebyte $4 special MapRadio - loadmovesprites + closetext end TrashCanScript: ; 0xbc1a5 farjumptext TrashCanText PCScript: - loadfont + opentext special PokemonCenterPC - loadmovesprites + closetext end ElevatorButtonScript: @@ -317,44 +316,44 @@ BugContestResultsScript: clearevent EVENT_CONTEST_OFFICER_HAS_EVERSTONE clearevent EVENT_CONTEST_OFFICER_HAS_GOLD_BERRY clearevent EVENT_CONTEST_OFFICER_HAS_BERRY - loadfont + opentext farwritetext ContestResults_ReadyToJudgeText - closetext + waitbutton special BugContestJudging RAM2MEM $0 if_equal 1, BugContestResults_FirstPlace if_equal 2, BugContestResults_SecondPlace if_equal 3, BugContestResults_ThirdPlace farwritetext ContestResults_ConsolationPrizeText - keeptextopen - waitbutton + buttonsound + waitsfx verbosegiveitem BERRY iffalse BugContestResults_NoRoomForBerry BugContestResults_DidNotWin farwritetext ContestResults_DidNotWinText - keeptextopen + buttonsound jump BugContestResults_FinishUp ; 0xbc2b1 BugContestResults_ReturnAfterWinnersPrize ; 0xbc2b1 farwritetext ContestResults_JoinUsNextTimeText - keeptextopen + buttonsound BugContestResults_FinishUp checkevent EVENT_LEFT_MONS_WITH_CONTEST_OFFICER iffalse BugContestResults_DidNotLeaveMons farwritetext ContestResults_ReturnPartyText - closetext + waitbutton special ContestReturnMons BugContestResults_DidNotLeaveMons special CheckPartyFullAfterContest if_equal $0, BugContestResults_CleanUp if_equal $2, BugContestResults_CleanUp farwritetext ContestResults_PartyFullText - closetext + waitbutton BugContestResults_CleanUp - loadmovesprites + closetext dotrigger $0 domaptrigger ROUTE_35_NATIONAL_PARK_GATE, $0 setevent EVENT_BUG_CATCHING_CONTESTANT_1A @@ -386,7 +385,7 @@ BugContestResults_FirstPlace ; 0xbc31e setevent EVENT_GAVE_KURT_APRICORNS itemtotext SUN_STONE, $1 farwritetext ContestResults_PlayerWonAPrizeText - closetext + waitbutton verbosegiveitem SUN_STONE iffalse BugContestResults_NoRoomForSunStone jump BugContestResults_ReturnAfterWinnersPrize @@ -395,7 +394,7 @@ BugContestResults_FirstPlace ; 0xbc31e BugContestResults_SecondPlace ; 0xbc332 itemtotext EVERSTONE, $1 farwritetext ContestResults_PlayerWonAPrizeText - closetext + waitbutton verbosegiveitem EVERSTONE iffalse BugContestResults_NoRoomForEverstone jump BugContestResults_ReturnAfterWinnersPrize @@ -404,7 +403,7 @@ BugContestResults_SecondPlace ; 0xbc332 BugContestResults_ThirdPlace ; 0xbc343 itemtotext GOLD_BERRY, $1 farwritetext ContestResults_PlayerWonAPrizeText - closetext + waitbutton verbosegiveitem GOLD_BERRY iffalse BugContestResults_NoRoomForGoldBerry jump BugContestResults_ReturnAfterWinnersPrize @@ -412,28 +411,28 @@ BugContestResults_ThirdPlace ; 0xbc343 BugContestResults_NoRoomForSunStone ; 0xbc354 farwritetext BugContestPrizeNoRoomText - keeptextopen + buttonsound setevent EVENT_CONTEST_OFFICER_HAS_SUN_STONE jump BugContestResults_ReturnAfterWinnersPrize ; 0xbc35f BugContestResults_NoRoomForEverstone ; 0xbc35f farwritetext BugContestPrizeNoRoomText - keeptextopen + buttonsound setevent EVENT_CONTEST_OFFICER_HAS_EVERSTONE jump BugContestResults_ReturnAfterWinnersPrize ; 0xbc36a BugContestResults_NoRoomForGoldBerry ; 0xbc36a farwritetext BugContestPrizeNoRoomText - keeptextopen + buttonsound setevent EVENT_CONTEST_OFFICER_HAS_GOLD_BERRY jump BugContestResults_ReturnAfterWinnersPrize ; 0xbc375 BugContestResults_NoRoomForBerry ; 0xbc375 farwritetext BugContestPrizeNoRoomText - keeptextopen + buttonsound setevent EVENT_CONTEST_OFFICER_HAS_BERRY jump BugContestResults_DidNotWin ; 0xbc380 @@ -793,8 +792,8 @@ AskNumber2MScript: RegisteredNumberMScript: farwritetext RegisteredNumber1Text playsound SFX_REGISTER_PHONE_NUMBER - waitbutton - keeptextopen + waitsfx + buttonsound end NumberAcceptedMScript: @@ -822,103 +821,103 @@ NumberAcceptedMScript: .Jack farwritetext JackNumberAcceptedText + waitbutton closetext - loadmovesprites end .Huey farwritetext HueyNumberAcceptedText + waitbutton closetext - loadmovesprites end .Gaven farwritetext GavenNumberAcceptedText + waitbutton closetext - loadmovesprites end .Jose farwritetext JoseNumberAcceptedText + waitbutton closetext - loadmovesprites end .Joey farwritetext JoeyNumberAcceptedText + waitbutton closetext - loadmovesprites end .Wade farwritetext WadeNumberAcceptedText + waitbutton closetext - loadmovesprites end .Ralph farwritetext RalphNumberAcceptedText + waitbutton closetext - loadmovesprites end .Anthony farwritetext AnthonyNumberAcceptedText + waitbutton closetext - loadmovesprites end .Todd farwritetext ToddNumberAcceptedText + waitbutton closetext - loadmovesprites end .Irwin farwritetext IrwinNumberAcceptedText + waitbutton closetext - loadmovesprites end .Arnie farwritetext ArnieNumberAcceptedText + waitbutton closetext - loadmovesprites end .Alan farwritetext AlanNumberAcceptedText + waitbutton closetext - loadmovesprites end .Chad farwritetext ChadNumberAcceptedText + waitbutton closetext - loadmovesprites end .Derek farwritetext DerekNumberAcceptedText + waitbutton closetext - loadmovesprites end .Tully farwritetext TullyNumberAcceptedText + waitbutton closetext - loadmovesprites end .Brent farwritetext BrentNumberAcceptedText + waitbutton closetext - loadmovesprites end .Vance farwritetext VanceNumberAcceptedText + waitbutton closetext - loadmovesprites end .Wilton farwritetext WiltonNumberAcceptedText + waitbutton closetext - loadmovesprites end .Kenji farwritetext KenjiNumberAcceptedText + waitbutton closetext - loadmovesprites end .Parry farwritetext ParryNumberAcceptedText + waitbutton closetext - loadmovesprites end NumberDeclinedMScript: @@ -946,103 +945,103 @@ NumberDeclinedMScript: .Jack farwritetext JackNumberDeclinedText + waitbutton closetext - loadmovesprites end .Huey farwritetext HueyNumberDeclinedText + waitbutton closetext - loadmovesprites end .Gaven farwritetext GavenNumberDeclinedText + waitbutton closetext - loadmovesprites end .Jose farwritetext JoseNumberDeclinedText + waitbutton closetext - loadmovesprites end .Joey farwritetext JoeyNumberDeclinedText + waitbutton closetext - loadmovesprites end .Wade farwritetext WadeNumberDeclinedText + waitbutton closetext - loadmovesprites end .Ralph farwritetext RalphNumberDeclinedText + waitbutton closetext - loadmovesprites end .Anthony farwritetext AnthonyNumberDeclinedText + waitbutton closetext - loadmovesprites end .Todd farwritetext ToddNumberDeclinedText + waitbutton closetext - loadmovesprites end .Irwin farwritetext IrwinNumberDeclinedText + waitbutton closetext - loadmovesprites end .Arnie farwritetext ArnieNumberDeclinedText + waitbutton closetext - loadmovesprites end .Alan farwritetext AlanNumberDeclinedText + waitbutton closetext - loadmovesprites end .Chad farwritetext ChadNumberDeclinedText + waitbutton closetext - loadmovesprites end .Derek farwritetext DerekNumberDeclinedText + waitbutton closetext - loadmovesprites end .Tully farwritetext TullyNumberDeclinedText + waitbutton closetext - loadmovesprites end .Brent farwritetext BrentNumberDeclinedText + waitbutton closetext - loadmovesprites end .Vance farwritetext VanceNumberDeclinedText + waitbutton closetext - loadmovesprites end .Wilton farwritetext WiltonNumberDeclinedText + waitbutton closetext - loadmovesprites end .Kenji farwritetext KenjiNumberDeclinedText + waitbutton closetext - loadmovesprites end .Parry farwritetext ParryNumberDeclinedText + waitbutton closetext - loadmovesprites end PhoneFullMScript: @@ -1070,103 +1069,103 @@ PhoneFullMScript: .Jack farwritetext JackPhoneFullText + waitbutton closetext - loadmovesprites end .Huey farwritetext HueyPhoneFullText + waitbutton closetext - loadmovesprites end .Gaven farwritetext GavenPhoneFullText + waitbutton closetext - loadmovesprites end .Jose farwritetext JosePhoneFullText + waitbutton closetext - loadmovesprites end .Joey farwritetext JoeyPhoneFullText + waitbutton closetext - loadmovesprites end .Wade farwritetext WadePhoneFullText + waitbutton closetext - loadmovesprites end .Ralph farwritetext RalphPhoneFullText + waitbutton closetext - loadmovesprites end .Anthony farwritetext AnthonyPhoneFullText + waitbutton closetext - loadmovesprites end .Todd farwritetext ToddPhoneFullText + waitbutton closetext - loadmovesprites end .Irwin farwritetext IrwinPhoneFullText + waitbutton closetext - loadmovesprites end .Arnie farwritetext ArniePhoneFullText + waitbutton closetext - loadmovesprites end .Alan farwritetext AlanPhoneFullText + waitbutton closetext - loadmovesprites end .Chad farwritetext ChadPhoneFullText + waitbutton closetext - loadmovesprites end .Derek farwritetext DerekPhoneFullText + waitbutton closetext - loadmovesprites end .Tully farwritetext TullyPhoneFullText + waitbutton closetext - loadmovesprites end .Brent farwritetext BrentPhoneFullText + waitbutton closetext - loadmovesprites end .Vance farwritetext VancePhoneFullText + waitbutton closetext - loadmovesprites end .Wilton farwritetext WiltonPhoneFullText + waitbutton closetext - loadmovesprites end .Kenji farwritetext KenjiPhoneFullText + waitbutton closetext - loadmovesprites end .Parry farwritetext ParryPhoneFullText + waitbutton closetext - loadmovesprites end RematchMScript: @@ -1191,88 +1190,88 @@ RematchMScript: .Jack farwritetext JackRematchText + waitbutton closetext - loadmovesprites end .Huey farwritetext HueyRematchText + waitbutton closetext - loadmovesprites end .Gaven farwritetext GavenRematchText + waitbutton closetext - loadmovesprites end .Jose farwritetext JoseRematchText + waitbutton closetext - loadmovesprites end .Joey farwritetext JoeyRematchText + waitbutton closetext - loadmovesprites end .Wade farwritetext WadeRematchText + waitbutton closetext - loadmovesprites end .Ralph farwritetext RalphRematchText + waitbutton closetext - loadmovesprites end .Anthony farwritetext AnthonyRematchText + waitbutton closetext - loadmovesprites end .Todd farwritetext ToddRematchText + waitbutton closetext - loadmovesprites end .Arnie farwritetext ArnieRematchText + waitbutton closetext - loadmovesprites end .Alan farwritetext AlanRematchText + waitbutton closetext - loadmovesprites end .Chad farwritetext ChadRematchText + waitbutton closetext - loadmovesprites end .Tully farwritetext TullyRematchText + waitbutton closetext - loadmovesprites end .Brent farwritetext BrentRematchText + waitbutton closetext - loadmovesprites end .Vance farwritetext VanceRematchText + waitbutton closetext - loadmovesprites end .Wilton farwritetext WiltonRematchText + waitbutton closetext - loadmovesprites end .Parry farwritetext ParryRematchText + waitbutton closetext - loadmovesprites end GiftMScript: @@ -1287,31 +1286,31 @@ GiftMScript: .Jose farwritetext JoseGiftText - keeptextopen + buttonsound end .Wade farwritetext WadeGiftText - keeptextopen + buttonsound end .Alan farwritetext AlanGiftText - keeptextopen + buttonsound end .Derek farwritetext DerekGiftText - keeptextopen + buttonsound end .Tully farwritetext TullyGiftText - keeptextopen + buttonsound end .Wilton farwritetext WiltonGiftText - keeptextopen + buttonsound end .Kenji farwritetext KenjiGiftText - keeptextopen + buttonsound end PackFullMScript: @@ -1330,62 +1329,62 @@ PackFullMScript: .Huey farwritetext HueyPackFullText + waitbutton closetext - loadmovesprites end .Jose farwritetext JosePackFullText + waitbutton closetext - loadmovesprites end .Joey farwritetext JoeyPackFullText + waitbutton closetext - loadmovesprites end .Wade farwritetext WadePackFullText + waitbutton closetext - loadmovesprites end .Alan farwritetext AlanPackFullText + waitbutton closetext - loadmovesprites end .Derek farwritetext DerekPackFullText + waitbutton closetext - loadmovesprites end .Tully farwritetext TullyPackFullText + waitbutton closetext - loadmovesprites end .Vance farwritetext VancePackFullText + waitbutton closetext - loadmovesprites end .Wilton farwritetext WiltonPackFullText + waitbutton closetext - loadmovesprites end .Kenji farwritetext KenjiPackFullText + waitbutton closetext - loadmovesprites end .Parry farwritetext ParryPackFullText + waitbutton closetext - loadmovesprites end RematchGiftMScript: - loadfont + opentext checkcode VAR_CALLERID if_equal PHONE_SAILOR_HUEY, .Huey if_equal PHONE_YOUNGSTER_JOEY, .Joey @@ -1394,19 +1393,19 @@ RematchGiftMScript: .Huey farwritetext HueyRematchGiftText - keeptextopen + buttonsound end .Joey farwritetext JoeyRematchGiftText - keeptextopen + buttonsound end .Vance farwritetext VanceRematchGiftText - keeptextopen + buttonsound end .Parry farwritetext ParryRematchGiftText - keeptextopen + buttonsound end AskNumber1FScript: @@ -1484,8 +1483,8 @@ AskNumber2FScript: RegisteredNumberFScript: farwritetext RegisteredNumber2Text playsound SFX_REGISTER_PHONE_NUMBER - waitbutton - keeptextopen + waitsfx + buttonsound end NumberAcceptedFScript: ; 0xbcbd3 @@ -1501,43 +1500,43 @@ NumberAcceptedFScript: ; 0xbcbd3 .Beverly farwritetext BeverlyNumberAcceptedText + waitbutton closetext - loadmovesprites end .Beth farwritetext BethNumberAcceptedText + waitbutton closetext - loadmovesprites end .Reena farwritetext ReenaNumberAcceptedText + waitbutton closetext - loadmovesprites end .Liz farwritetext LizNumberAcceptedText + waitbutton closetext - loadmovesprites end .Gina farwritetext GinaNumberAcceptedText + waitbutton closetext - loadmovesprites end .Dana farwritetext DanaNumberAcceptedText + waitbutton closetext - loadmovesprites end .Tiffany farwritetext TiffanyNumberAcceptedText + waitbutton closetext - loadmovesprites end .Erin farwritetext ErinNumberAcceptedText + waitbutton closetext - loadmovesprites end NumberDeclinedFScript: @@ -1553,43 +1552,43 @@ NumberDeclinedFScript: .Beverly farwritetext BeverlyNumberDeclinedText + waitbutton closetext - loadmovesprites end .Beth farwritetext BethNumberDeclinedText + waitbutton closetext - loadmovesprites end .Reena farwritetext ReenaNumberDeclinedText + waitbutton closetext - loadmovesprites end .Liz farwritetext LizNumberDeclinedText + waitbutton closetext - loadmovesprites end .Gina farwritetext GinaNumberDeclinedText + waitbutton closetext - loadmovesprites end .Dana farwritetext DanaNumberDeclinedText + waitbutton closetext - loadmovesprites end .Tiffany farwritetext TiffanyNumberDeclinedText + waitbutton closetext - loadmovesprites end .Erin farwritetext ErinNumberDeclinedText + waitbutton closetext - loadmovesprites end PhoneFullFScript: @@ -1605,43 +1604,43 @@ PhoneFullFScript: .Beverly farwritetext BeverlyPhoneFullText + waitbutton closetext - loadmovesprites end .Beth farwritetext BethPhoneFullText + waitbutton closetext - loadmovesprites end .Reena farwritetext ReenaPhoneFullText + waitbutton closetext - loadmovesprites end .Liz farwritetext LizPhoneFullText + waitbutton closetext - loadmovesprites end .Gina farwritetext GinaPhoneFullText + waitbutton closetext - loadmovesprites end .Dana farwritetext DanaPhoneFullText + waitbutton closetext - loadmovesprites end .Tiffany farwritetext TiffanyPhoneFullText + waitbutton closetext - loadmovesprites end .Erin farwritetext ErinPhoneFullText + waitbutton closetext - loadmovesprites end RematchFScript: @@ -1656,38 +1655,38 @@ RematchFScript: .Beth farwritetext BethRematchText + waitbutton closetext - loadmovesprites end .Reena farwritetext ReenaRematchText + waitbutton closetext - loadmovesprites end .Liz farwritetext LizRematchText + waitbutton closetext - loadmovesprites end .Gina farwritetext GinaRematchText + waitbutton closetext - loadmovesprites end .Dana farwritetext DanaRematchText + waitbutton closetext - loadmovesprites end .Tiffany farwritetext TiffanyRematchText + waitbutton closetext - loadmovesprites end .Erin farwritetext ErinRematchText + waitbutton closetext - loadmovesprites end GiftFScript: @@ -1699,19 +1698,19 @@ GiftFScript: .Beverly farwritetext BeverlyGiftText - keeptextopen + buttonsound end .Gina farwritetext GinaGiftText - keeptextopen + buttonsound end .Dana farwritetext DanaGiftText - keeptextopen + buttonsound end .Tiffany farwritetext TiffanyGiftText - keeptextopen + buttonsound end PackFullFScript: @@ -1724,28 +1723,28 @@ PackFullFScript: .Beverly farwritetext BeverlyPackFullText + waitbutton closetext - loadmovesprites end .Gina farwritetext GinaPackFullText + waitbutton closetext - loadmovesprites end .Dana farwritetext DanaPackFullText + waitbutton closetext - loadmovesprites end .Tiffany farwritetext TiffanyPackFullText + waitbutton closetext - loadmovesprites end .Erin farwritetext ErinPackFullText + waitbutton closetext - loadmovesprites end RematchGiftFScript: @@ -1753,55 +1752,55 @@ RematchGiftFScript: if_equal PHONE_PICNICKER_ERIN, .Erin .Erin - loadfont + opentext farwritetext ErinRematchGiftText - keeptextopen + buttonsound end GymStatue1Script: mapnametotext $0 - loadfont + opentext farwritetext GymStatue_CityGymText + waitbutton closetext - loadmovesprites end GymStatue2Script: mapnametotext $0 - loadfont + opentext farwritetext GymStatue_CityGymText - keeptextopen + buttonsound farwritetext GymStatue_WinningTrainersText + waitbutton closetext - loadmovesprites end ReceiveItemScript: ; 0xbcdb9 - waitbutton + waitsfx farwritetext ReceivedItemText playsound SFX_ITEM - waitbutton + waitsfx end ; 0xbcdc3 ReceiveTogepiEggScript: ; 0xbcdc3 - waitbutton + waitsfx farwritetext ReceivedItemText playsound SFX_GET_EGG_FROM_DAYCARE_LADY - waitbutton + waitsfx end ; 0xbcdcd GameCornerCoinVendorScript: ; 0xbcdcd faceplayer - loadfont + opentext farwritetext CoinVendor_WelcomeText - keeptextopen + buttonsound checkitem COIN_CASE iftrue CoinVendor_IntroScript farwritetext CoinVendor_NoCoinCaseText + waitbutton closetext - loadmovesprites end ; 0xbcde0 @@ -1811,7 +1810,7 @@ CoinVendor_IntroScript: ; 0xbcde0 CoinVendor_SellCoinsMenuScript: ; 0xbcde4 special Special_DisplayMoneyAndCoinBalance loadmenudata CoinVendor_MenuDataHeader - interpretmenu2 + verticalmenu writebackup if_equal $1, CoinVendor_Buy50CoinsScript if_equal $2, CoinVendor_Buy500CoinsScript @@ -1825,10 +1824,10 @@ CoinVendor_Buy50CoinsScript: ; 0xbcdf7 if_equal $2, CoinVendor_NotEnoughMoneyScript givecoins 50 takemoney $0, 1000 - waitbutton + waitsfx playsound SFX_TRANSACTION farwritetext CoinVendor_Buy50CoinsText - closetext + waitbutton jump CoinVendor_SellCoinsMenuScript ; 0xbce1b @@ -1839,31 +1838,31 @@ CoinVendor_Buy500CoinsScript: ; 0xbce1b if_equal $2, CoinVendor_NotEnoughMoneyScript givecoins 500 takemoney $0, 10000 - waitbutton + waitsfx playsound SFX_TRANSACTION farwritetext CoinVendor_Buy500CoinsText - closetext + waitbutton jump CoinVendor_SellCoinsMenuScript ; 0xbce3f CoinVendor_NotEnoughMoneyScript: ; 0xbce3f farwritetext CoinVendor_NotEnoughMoneyText + waitbutton closetext - loadmovesprites end ; 0xbce46 CoinVendor_CoinCaseFullScript: ; 0xbce46 farwritetext CoinVendor_CoinCaseFullText + waitbutton closetext - loadmovesprites end ; 0xbce4d CoinVendor_CancelScript: ; 0xbce4d farwritetext CoinVendor_CancelText + waitbutton closetext - loadmovesprites end ; 0xbce54 @@ -1887,25 +1886,25 @@ CoinVendor_MenuData2: ; 0xbce5c HappinessCheckScript: faceplayer - loadfont + opentext special GetFirstPokemonHappiness if_less_than 50, .Unhappy if_less_than 150, .KindaHappy farwritetext HappinessText3 + waitbutton closetext - loadmovesprites end .KindaHappy farwritetext HappinessText2 + waitbutton closetext - loadmovesprites end .Unhappy farwritetext HappinessText1 + waitbutton closetext - loadmovesprites end Movement_ContestResults_WalkAfterWarp: ; bcea1 diff --git a/engine/switch_items.asm b/engine/switch_items.asm new file mode 100755 index 000000000..d1c8aa66c --- /dev/null +++ b/engine/switch_items.asm @@ -0,0 +1,275 @@ +SwitchItemsInBag: ; 2490c (9:490c) + ld a, [wSwitchItem] + and a + jr z, .init + ld b, a + ld a, [wScrollingMenuCursorPosition] + inc a + cp b + jr z, .trivial + ld a, [wScrollingMenuCursorPosition] + call ItemSwitch_GetNthItem + ld a, [hl] + cp -1 + ret z + ld a, [wSwitchItem] + dec a + ld [wSwitchItem], a + call Function249a7 + jp c, Function249d1 + ld a, [wScrollingMenuCursorPosition] + ld c, a + ld a, [wSwitchItem] + cp c + jr c, .asm_2497a + jr .asm_2494a + +.init + ld a, [wScrollingMenuCursorPosition] + inc a + ld [wSwitchItem], a + ret + +.trivial + xor a + ld [wSwitchItem], a + ret + +.asm_2494a + ld a, [wSwitchItem] + call Function24a40 + ld a, [wScrollingMenuCursorPosition] + ld d, a + ld a, [wSwitchItem] + ld e, a + call Function24a6c + push bc + ld a, [wSwitchItem] + call ItemSwitch_GetNthItem + dec hl + push hl + call ItemSwitch_ConvertSpacingToDW + add hl, bc + ld d, h + ld e, l + pop hl + pop bc + call Function24aab + ld a, [wScrollingMenuCursorPosition] + call Function24a4d + xor a + ld [wSwitchItem], a + ret + +.asm_2497a + ld a, [wSwitchItem] + call Function24a40 + ld a, [wScrollingMenuCursorPosition] + ld d, a + ld a, [wSwitchItem] + ld e, a + call Function24a6c + push bc + ld a, [wSwitchItem] + call ItemSwitch_GetNthItem + ld d, h + ld e, l + call ItemSwitch_ConvertSpacingToDW + add hl, bc + pop bc + call CopyBytes + ld a, [wScrollingMenuCursorPosition] + call Function24a4d + xor a + ld [wSwitchItem], a + ret + +Function249a7: ; 249a7 (9:49a7) + ld a, [wSwitchItem] + call ItemSwitch_GetNthItem + ld d, h + ld e, l + ld a, [wScrollingMenuCursorPosition] + call ItemSwitch_GetNthItem + ld a, [de] + cp [hl] + jr nz, .asm_249cd + ld a, [wScrollingMenuCursorPosition] + call Function24a97 + cp 99 + jr z, .asm_249cd + ld a, [wSwitchItem] + call Function24a97 + cp 99 + jr nz, .asm_249cf +.asm_249cd + and a + ret + +.asm_249cf + scf + ret + +Function249d1: ; 249d1 (9:49d1) + ld a, [wSwitchItem] + call ItemSwitch_GetNthItem + inc hl + push hl + ld a, [wScrollingMenuCursorPosition] + call ItemSwitch_GetNthItem + inc hl + ld a, [hl] + pop hl + add [hl] + cp 100 + jr c, .asm_24a01 + sub 99 + push af + ld a, [wScrollingMenuCursorPosition] + call ItemSwitch_GetNthItem + inc hl + ld [hl], 99 + ld a, [wSwitchItem] + call ItemSwitch_GetNthItem + inc hl + pop af + ld [hl], a + xor a + ld [wSwitchItem], a + ret + +.asm_24a01 + push af + ld a, [wScrollingMenuCursorPosition] + call ItemSwitch_GetNthItem + inc hl + pop af + ld [hl], a + ld hl, wMenuData2_ItemsPointerAddr + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [wSwitchItem] + cp [hl] + jr nz, .asm_24a25 + dec [hl] + ld a, [wSwitchItem] + call ItemSwitch_GetNthItem + ld [hl], $ff + xor a + ld [wSwitchItem], a + ret + +.asm_24a25 + dec [hl] + call ItemSwitch_ConvertSpacingToDW + push bc + ld a, [wSwitchItem] + call ItemSwitch_GetNthItem + pop bc + push hl + add hl, bc + pop de +.asm_24a34 + ld a, [hli] + ld [de], a + inc de + cp $ff + jr nz, .asm_24a34 + xor a + ld [wSwitchItem], a + ret + +Function24a40: ; 24a40 (9:4a40) + call ItemSwitch_GetNthItem + ld de, wd002 + call ItemSwitch_ConvertSpacingToDW + call CopyBytes + ret + +Function24a4d: ; 24a4d (9:4a4d) + call ItemSwitch_GetNthItem + ld d, h + ld e, l + ld hl, wd002 + call ItemSwitch_ConvertSpacingToDW + call CopyBytes + ret + +ItemSwitch_GetNthItem: ; 24a5c (9:4a5c) + push af + call ItemSwitch_ConvertSpacingToDW + ld hl, wMenuData2_ItemsPointerAddr + ld a, [hli] + ld h, [hl] + ld l, a + inc hl + pop af + call AddNTimes + ret + +Function24a6c: ; 24a6c (9:4a6c) + push hl + call ItemSwitch_ConvertSpacingToDW + ld a, d + sub e + jr nc, .dont_negate + dec a + cpl +.dont_negate + ld hl, 0 + call AddNTimes + ld b, h + ld c, l + pop hl + ret + +ItemSwitch_ConvertSpacingToDW: ; 24a80 (9:4a80) +; This function is absolutely idiotic. + push hl + ld a, [wMenuData2_ScrollingMenuSpacing] + ld c, a + ld b, 0 + ld hl, .spacing_dws +rept 2 + add hl, bc +endr + ld c, [hl] + inc hl + ld b, [hl] + pop hl + ret + +; 24a91 (9:4a91) + +.spacing_dws: ; 24a91 + dw 0, 1, 2 +; 24a97 + +Function24a97: ; 24a97 (9:4a97) + push af + call ItemSwitch_ConvertSpacingToDW + ld a, c + cp 2 + jr nz, .not_2 + pop af + call ItemSwitch_GetNthItem + inc hl + ld a, [hl] + ret + +.not_2 + pop af + ld a, $1 + ret + +Function24aab: ; 24aab (9:4aab) +.loop + ld a, [hld] + ld [de], a + dec de + dec bc + ld a, b + or c + jr nz, .loop + ret diff --git a/engine/tile_events.asm b/engine/tile_events.asm new file mode 100755 index 000000000..8a6f2bc66 --- /dev/null +++ b/engine/tile_events.asm @@ -0,0 +1,110 @@ +CheckWarpCollision:: ; 1499a +; Is this tile a warp? + ld a, [PlayerNextTile] + cp $60 + jr z, .warp + cp $68 + jr z, .warp + and $f0 + cp $70 + jr z, .warp + and a + ret + +.warp + scf + ret +; 149af + +CheckDirectionalWarp:: ; 149af +; If this is a directional warp, clear carry (press the designated button to warp). +; Else, set carry (immediate warp). + ld a, [PlayerNextTile] + cp $70 ; Warp on down + jr z, .not_warp + cp $76 ; Warp on left + jr z, .not_warp + cp $78 ; Warp on up + jr z, .not_warp + cp $7e ; Warp on right + jr z, .not_warp + scf + ret + +.not_warp + xor a + ret +; 149c6 + +CheckWarpFacingDown: ; 149c6 + ld de, 1 + ld hl, .blocks + ld a, [PlayerNextTile] + call IsInArray + ret +; 149d3 + +.blocks: ; 149d3 + db $71 ; door + db $79 + db $7a ; stairs + db $73 + db $7b ; cave entrance + db $74 + db $7c ; warp pad + db $75 + db $7d + db -1 +; 149dd + +CheckGrassCollision:: ; 149dd + ld a, [PlayerNextTile] + ld hl, .blocks + ld de, 1 + call IsInArray + ret +; 149ea + +.blocks: ; 149ea + db $08 + db $18 ; tall grass + db $14 ; tall grass + db $28 + db $29 + db $48 + db $49 + db $4a + db $4b + db $4c + db -1 +; 149f5 + +CheckCutCollision: ; 149f5 + ld a, c + ld hl, .blocks + ld de, 1 + call IsInArray + ret +; 14a00 + +.blocks: ; 14a00 + db $12 ; cut tree + db $1a ; cut tree + db $10 ; tall grass + db $18 ; tall grass + db $14 ; tall grass + db $1c ; tall grass + db -1 +; 14a07 + +Function14a07:: ; 14a07 + ld a, [PlayerNextTile] + ld de, $1f + cp $71 ; door + ret z + ld de, $13 + cp $7c ; warp pad + ret z + ld de, $23 + ret +; 14a1a diff --git a/engine/time.asm b/engine/time.asm index fce01ffac..f4eee4b17 100755 --- a/engine/time.asm +++ b/engine/time.asm @@ -118,7 +118,7 @@ endr rept 4 ld [hli], a endr - ld hl, wdc58 + ld hl, wKenjiBreakTimer ld a, [hl] and a jr z, .RestartKenjiBreakCountdown @@ -137,7 +137,7 @@ Special_SampleKenjiBreakCountdown: ; 11485 call Random and 3 add 3 - ld [wdc58], a + ld [wKenjiBreakTimer], a ret ; 11490 diff --git a/engine/time_capsule/conversion.asm b/engine/time_capsule/conversion.asm index 10f7ab5f3..e2c545c48 100755 --- a/engine/time_capsule/conversion.asm +++ b/engine/time_capsule/conversion.asm @@ -1,6 +1,6 @@ ; These functions seem to be related to backwards compatibility -Functionfb57e: ; fb57e +ValidateOTTrademon: ; fb57e ld a, [wd003] ld hl, OTPartyMon1Species call GetPartyLocation @@ -14,21 +14,21 @@ Functionfb57e: ; fb57e ld a, [hl] pop hl cp EGG - jr z, .asm_fb59c + jr z, .matching_or_egg cp [hl] - jr nz, .asm_fb5db + jr nz, .abnormal -.asm_fb59c +.matching_or_egg ld b, h ld c, l ld hl, MON_LEVEL add hl, bc ld a, [hl] - cp 101 - jr nc, .asm_fb5db + cp MAX_LEVEL + 1 + jr nc, .abnormal ld a, [wLinkMode] cp LINK_TIMECAPSULE - jr nz, .asm_fb5d9 + jr nz, .normal ld hl, OTPartySpecies ld a, [wd003] ld c, a @@ -39,29 +39,29 @@ Functionfb57e: ; fb57e ; Magnemite and Magneton's types changed ; from Electric to Electric/Steel. cp MAGNEMITE - jr z, .asm_fb5d9 + jr z, .normal cp MAGNETON - jr z, .asm_fb5d9 + jr z, .normal ld [CurSpecies], a call GetBaseData - ld hl, wcbea + ld hl, wLinkOTPartyMonTypes rept 2 add hl, bc endr ld a, [BaseType1] cp [hl] - jr nz, .asm_fb5db + jr nz, .abnormal inc hl ld a, [BaseType2] cp [hl] - jr nz, .asm_fb5db + jr nz, .abnormal -.asm_fb5d9 +.normal and a ret -.asm_fb5db +.abnormal scf ret ; fb5dd @@ -72,10 +72,10 @@ Functionfb5dd: ; fb5dd ld a, [PartyCount] ld b, a ld c, $0 -.asm_fb5e7 +.loop ld a, c cp d - jr z, .asm_fb5f8 + jr z, .next push bc ld a, c ld hl, PartyMon1HP @@ -83,48 +83,47 @@ Functionfb5dd: ; fb5dd pop bc ld a, [hli] or [hl] - jr nz, .asm_fb60b + jr nz, .done -.asm_fb5f8 +.next inc c dec b - jr nz, .asm_fb5e7 + jr nz, .loop ld a, [wd003] ld hl, OTPartyMon1HP call GetPartyLocation ld a, [hli] or [hl] - jr nz, .asm_fb60b + jr nz, .done scf ret -.asm_fb60b +.done and a ret ; fb60d -Functionfb60d: ; fb60d +PlaceTradePartnerNamesAndParty: ; fb60d hlcoord 4, 0 ld de, PlayerName call PlaceString ld a, $14 ld [bc], a hlcoord 4, 8 - ld de, wd26b + ld de, OTPlayerName call PlaceString ld a, $14 ld [bc], a hlcoord 7, 1 ld de, PartySpecies - call Functionfb634 + call .PlaceSpeciesNames hlcoord 7, 9 ld de, OTPartySpecies - -Functionfb634: ; fb634 +.PlaceSpeciesNames: ; fb634 ld c, $0 -.asm_fb636 +.loop ld a, [de] - cp $ff + cp -1 ret z ld [wd265], a push bc @@ -143,7 +142,7 @@ Functionfb634: ; fb634 add hl, bc pop bc inc c - jr .asm_fb636 + jr .loop ; fb656 KantoMonSpecials: ; fb656 @@ -355,18 +354,18 @@ NewPokedexEntry: ; fb877 ld [hSCX], a xor a ld [wPokedexStatus], a - callba Function41a7f + callba _NewPokedexEntry call WaitPressAorB_BlinkCursor ld a, $1 ld [wPokedexStatus], a - callba Function4424d + callba DisplayDexEntry call WaitPressAorB_BlinkCursor pop af ld [wPokedexStatus], a call MaxVolume call RotateThreePalettesRight ld a, [hSCX] - add $fb + add -5 ; 251 ; NUM_POKEMON ld [hSCX], a call Functionfb8c8 pop af @@ -378,14 +377,14 @@ Functionfb8c8: ; fb8c8 call ClearTileMap call LoadFontsExtra call LoadStandardFont - callba Function40ab2 - call Function3200 + callba Pokedex_PlaceFrontpicTopLeftCorner + call WaitBGMap2 callba GetEnemyMonDVs ld a, [hli] ld [TempMonDVs], a ld a, [hl] ld [TempMonDVs + 1], a - ld b, SCGB_1C + ld b, SCGB_FRONTPICPALS call GetSGBLayout call SetPalettes ret diff --git a/engine/timeofdaypals.asm b/engine/timeofdaypals.asm index 368636758..4ed000af2 100644 --- a/engine/timeofdaypals.asm +++ b/engine/timeofdaypals.asm @@ -1,4 +1,4 @@ -Function8c001:: ; 8c001 +UpdateTimeOfDayPal:: ; 8c001 call UpdateTime ld a, [TimeOfDay] ld [CurTimeOfDay], a @@ -12,7 +12,7 @@ _TimeOfDayPals:: ; 8c011 ; return carry if pals are changed ; forced pals? - ld hl, wd846 + ld hl, wTimeOfDayPalFlags bit 7, [hl] jr nz, .dontchange @@ -65,7 +65,7 @@ _TimeOfDayPals:: ; 8c011 ; update sgb pals - ld b, SCGB_09 + ld b, SCGB_MAPPALS call GetSGBLayout @@ -125,7 +125,7 @@ FadeInPalettes:: ; 8c079 ; 8c084 FadeOutPalettes:: ; 8c084 - call Function8c0c1 + call FillWhiteBGColor ld c, $9 call GetTimePalFade ld b, $4 @@ -134,7 +134,7 @@ FadeOutPalettes:: ; 8c084 ; 8c092 Special_BattleTowerFade: ; 8c092 - call Function8c0c1 + call FillWhiteBGColor ld c, $9 call GetTimePalFade ld b, $4 @@ -167,19 +167,20 @@ Special_FadeBlackQuickly: ; 8c0b6 ; 8c0c1 -Function8c0c1: ; 8c0c1 +FillWhiteBGColor: ; 8c0c1 ld a, [rSVBK] push af ld a, $5 ld [rSVBK], a + ld hl, UnknBGPals ld a, [hli] ld e, a ld a, [hli] ld d, a - ld hl, UnknBGPals + 8 - ld c, $6 -.asm_8c0d4 + ld hl, UnknBGPals + 1 palettes + ld c, 6 +.loop ld a, e ld [hli], a ld a, d @@ -188,7 +189,8 @@ rept 6 inc hl endr dec c - jr nz, .asm_8c0d4 + jr nz, .loop + pop af ld [rSVBK], a ret @@ -198,9 +200,9 @@ brightlevel: MACRO db (\1 << 6) | (\2 << 4) | (\3 << 2) | \4 ENDM -Function8c0e5: ; 8c0e5 +ReplaceTimeOfDayPals: ; 8c0e5 ld hl, .BrightnessLevels - ld a, [wc2d0] + ld a, [wMapTimeOfDay] cp $4 ; Dark cave, needs Flash jr z, .DarkCave and $7 @@ -210,18 +212,20 @@ Function8c0e5: ; 8c0e5 adc h ld h, a ld a, [hl] - ld [wd847], a + ld [wTimeOfDayPalset], a ret + .DarkCave ld a, [StatusFlags] - bit 2, a + bit 2, a ; Flash jr nz, .UsedFlash - ld a, $ff ; 3, 3, 3, 3 - ld [wd847], a + ld a, %11111111 ; 3, 3, 3, 3 + ld [wTimeOfDayPalset], a ret + .UsedFlash - ld a, $aa ; 2, 2, 2, 2 - ld [wd847], a + ld a, %10101010 ; 2, 2, 2, 2 + ld [wTimeOfDayPalset], a ret ; 8c10f (23:410f) @@ -257,25 +261,25 @@ endr dw .DarknessPalette .MorningPalette - ld a, [wd847] + ld a, [wTimeOfDayPalset] and %00000011 ; 0 ret .DayPalette - ld a, [wd847] + ld a, [wTimeOfDayPalset] and %00001100 ; 1 srl a srl a ret .NitePalette - ld a, [wd847] + ld a, [wTimeOfDayPalset] and %00110000 ; 2 swap a ret .DarknessPalette - ld a, [wd847] + ld a, [wTimeOfDayPalset] and %11000000 ; 3 rlca rlca @@ -304,7 +308,7 @@ ConvertTimePalsIncHL: ; 8c15e rept 3 inc hl endr - ld c, $2 + ld c, 2 call DelayFrames dec b jr nz, .loop @@ -317,7 +321,7 @@ ConvertTimePalsDecHL: ; 8c16d rept 3 dec hl endr - ld c, $2 + ld c, 2 call DelayFrames dec b jr nz, .loop diff --git a/engine/timeset.asm b/engine/timeset.asm index 1f82da884..801fb26e8 100755 --- a/engine/timeset.asm +++ b/engine/timeset.asm @@ -38,7 +38,7 @@ InitClock: ; 90672 (24:4672) call .ClearScreen call WaitBGMap call RotateFourPalettesRight - ld hl, UnknownText_0x90874 + ld hl, Text_WokeUpOak call PrintText ld hl, wc608 ld bc, 50 @@ -48,7 +48,7 @@ InitClock: ; 90672 (24:4672) ld [wInitHourBuffer], a .loop - ld hl, UnknownText_0x90879 + ld hl, Text_WhatTimeIsIt call PrintText hlcoord 3, 7 ld b, 2 @@ -71,7 +71,7 @@ InitClock: ; 90672 (24:4672) ld a, [wInitHourBuffer] ld [StringBuffer2 + 1], a call .ClearScreen - ld hl, UnknownText_0x90886 + ld hl, Text_WhatHrs call PrintText call YesNoBox jr nc, .HourIsSet @@ -79,7 +79,7 @@ InitClock: ; 90672 (24:4672) jr .loop .HourIsSet - ld hl, UnknownText_0x9089a + ld hl, Text_HowManyMinutes call PrintText hlcoord 11, 7 lb bc, 2, 7 @@ -101,7 +101,7 @@ InitClock: ; 90672 (24:4672) ld a, [BattleMonNick + 5] ld [StringBuffer2 + 2], a call .ClearScreen - ld hl, UnknownText_0x908a4 + ld hl, Text_WhoaMins call PrintText call YesNoBox jr nc, .MinutesAreSet @@ -109,7 +109,7 @@ InitClock: ; 90672 (24:4672) jr .HourIsSet .MinutesAreSet - call Function658 + call SetTimeOfDay ld hl, OakText_ResponseToSetTime call PrintText call WaitPressAorB_BlinkCursor @@ -194,7 +194,7 @@ DisplayHourOClock: ; 907de (24:47de) ret ; 907f1 (24:47f1) -Function907f1: ; 907f1 +UnreferencedFunction907f1: ; 907f1 ld h, d ld l, e push hl @@ -203,11 +203,11 @@ Function907f1: ; 907f1 rept 2 inc de endr - ld a, $9c + ld a, ":" ld [de], a inc de push de - ld hl, $3 + ld hl, 3 add hl, de ld a, [de] inc de @@ -225,37 +225,39 @@ endr SetMinutes: ; 90810 (24:4810) ld a, [hJoyPressed] and A_BUTTON - jr nz, .asm_90857 + jr nz, .a_button ld hl, hJoyLast ld a, [hl] and D_UP - jr nz, .asm_90835 + jr nz, .d_up ld a, [hl] and D_DOWN - jr nz, .asm_90828 + jr nz, .d_down call DelayFrame and a ret -.asm_90828 + +.d_down ld hl, BattleMonNick + 5 ld a, [hl] and a - jr nz, .asm_90831 + jr nz, .decrease ld a, 59 + 1 -.asm_90831 +.decrease dec a ld [hl], a - jr .asm_90841 -.asm_90835 + jr .finish_dpad + +.d_up ld hl, BattleMonNick + 5 ld a, [hl] cp 59 - jr c, .asm_9083f + jr c, .increase ld a, -1 -.asm_9083f +.increase inc a ld [hl], a -.asm_90841 +.finish_dpad hlcoord 12, 9 ld a, " " ld bc, 7 @@ -265,7 +267,7 @@ SetMinutes: ; 90810 (24:4810) call WaitBGMap and a ret -.asm_90857 +.a_button scf ret @@ -288,13 +290,13 @@ PrintTwoDigitNumberRightAlign: ; 90867 (24:4867) ret ; 90874 (24:4874) -UnknownText_0x90874: ; 0x90874 +Text_WokeUpOak: ; 0x90874 ; Zzz… Hm? Wha…? You woke me up! Will you check the clock for me? text_jump UnknownText_0x1bc29c db "@" ; 0x90879 -UnknownText_0x90879: ; 0x90879 +Text_WhatTimeIsIt: ; 0x90879 ; What time is it? text_jump UnknownText_0x1bc2eb db "@" @@ -304,23 +306,23 @@ String_oclock: db "o'clock@" ; 90886 -UnknownText_0x90886: ; 0x90886 +Text_WhatHrs: ; 0x90886 ; What?@ @ text_jump UnknownText_0x1bc2fd start_asm hlcoord 1, 16 call DisplayHourOClock - ld hl, UnknownText_0x90895 + ld hl, .QuestionMark ret ; 90895 (24:4895) -UnknownText_0x90895: ; 0x90895 +.QuestionMark: ; 0x90895 ; ? text_jump UnknownText_0x1bc305 db "@" ; 0x9089a -UnknownText_0x9089a: ; 0x9089a +Text_HowManyMinutes: ; 0x9089a ; How many minutes? text_jump UnknownText_0x1bc308 db "@" @@ -330,18 +332,18 @@ String_min: db "min.@" ; 908a4 -UnknownText_0x908a4: ; 0x908a4 +Text_WhoaMins: ; 0x908a4 ; Whoa!@ @ text_jump UnknownText_0x1bc31b start_asm ; 0x908a9 hlcoord 7, 14 call DisplayMinutesWithMinString - ld hl, UnknownText_0x908b3 + ld hl, .QuestionMark ret ; 908b3 (24:48b3) -UnknownText_0x908b3: ; 0x908b3 +.QuestionMark: ; 0x908b3 ; ? text_jump UnknownText_0x1bc323 db "@" @@ -418,108 +420,108 @@ Special_SetDayOfWeek: ; 90913 lb bc, BANK(GFX_9090b), 1 call Request1bpp xor a - ld [wd002], a -.asm_90936 + ld [wTempDayOfWeek], a +.loop hlcoord 0, 12 lb bc, 4, 18 call TextBox call LoadStandardMenuDataHeader - ld hl, UnknownText_0x90a3f + ld hl, .WhatDayIsItText call PrintText hlcoord 9, 3 ld b, 2 ld c, 9 call TextBox hlcoord 14, 3 - ld [hl], $ef + ld [hl], "♂" ; gets overwritten with special up arrow hlcoord 14, 6 - ld [hl], $f5 + ld [hl], "♀" ; gets overwritten with special down arrow hlcoord 10, 5 - call Function909de + call .PlaceWeekdayString call ApplyTilemap ld c, 10 call DelayFrames -.asm_9096a +.loop2 call JoyTextDelay - call Function90993 - jr nc, .asm_9096a + call .GetJoypadAction + jr nc, .loop2 call ExitMenu call UpdateSprites - ld hl, UnknownText_0x90a44 + ld hl, .ConfirmWeekdayText call PrintText call YesNoBox - jr c, .asm_90936 - ld a, [wd002] + jr c, .loop + ld a, [wTempDayOfWeek] ld [StringBuffer2], a - call Function663 + call SetDayOfWeek call LoadStandardFont pop af ld [hInMenu], a ret ; 90993 -Function90993: ; 90993 +.GetJoypadAction: ; 90993 ld a, [hJoyPressed] and A_BUTTON - jr z, .asm_9099b + jr z, .not_A scf ret -.asm_9099b +.not_A ld hl, hJoyLast ld a, [hl] and D_UP - jr nz, .asm_909ba + jr nz, .d_up ld a, [hl] and D_DOWN - jr nz, .asm_909ad + jr nz, .d_down call DelayFrame and a ret -.asm_909ad - ld hl, wd002 +.d_down + ld hl, wTempDayOfWeek ld a, [hl] and a - jr nz, .asm_909b6 + jr nz, .decrease ld a, 6 + 1 -.asm_909b6 +.decrease dec a ld [hl], a - jr .asm_909c6 + jr .finish_dpad -.asm_909ba - ld hl, wd002 +.d_up + ld hl, wTempDayOfWeek ld a, [hl] cp 6 - jr c, .asm_909c4 - ld a, -1 + jr c, .increase + ld a, 0 - 1 -.asm_909c4 +.increase inc a ld [hl], a -.asm_909c6 +.finish_dpad xor a ld [hBGMapMode], a hlcoord 10, 4 - ld b, $2 - ld c, $9 + ld b, 2 + ld c, 9 call ClearBox hlcoord 10, 5 - call Function909de + call .PlaceWeekdayString call WaitBGMap and a ret ; 909de -Function909de: ; 909de +.PlaceWeekdayString: ; 909de push hl - ld a, [wd002] + ld a, [wTempDayOfWeek] ld e, a ld d, 0 - ld hl, WeekdaysStrings + ld hl, .WeekdayStrings rept 2 add hl, de endr @@ -531,40 +533,40 @@ endr ret ; 909f2 -WeekdaysStrings: ; 909f2 - dw Sunday - dw Monday - dw Tuesday - dw Wednesday - dw Thursday - dw Friday - dw Saturday - dw Sunday - -Sunday: db " SUNDAY@" -Monday: db " MONDAY@" -Tuesday: db " TUESDAY@" -Wednesday: db "WEDNESDAY@" -Thursday: db "THURSDAY@" -Friday: db " FRIDAY@" -Saturday: db "SATURDAY@" - - -UnknownText_0x90a3f: ; 0x90a3f +.WeekdayStrings: ; 909f2 + dw .Sunday + dw .Monday + dw .Tuesday + dw .Wednesday + dw .Thursday + dw .Friday + dw .Saturday + dw .Sunday + +.Sunday: db " SUNDAY@" +.Monday: db " MONDAY@" +.Tuesday: db " TUESDAY@" +.Wednesday: db "WEDNESDAY@" +.Thursday: db "THURSDAY@" +.Friday: db " FRIDAY@" +.Saturday: db "SATURDAY@" + + +.WhatDayIsItText: ; 0x90a3f ; What day is it? text_jump UnknownText_0x1bc369 db "@" ; 0x90a44 -UnknownText_0x90a44: ; 0x90a44 +.ConfirmWeekdayText: ; 0x90a44 start_asm hlcoord 1, 14 - call Function909de - ld hl, UnknownText_0x90a4f + call .PlaceWeekdayString + ld hl, .IsIt ret ; 90a4f (24:4a4f) -UnknownText_0x90a4f: ; 0x90a4f +.IsIt: ; 0x90a4f ; , is it? text_jump UnknownText_0x1bc37a db "@" @@ -577,12 +579,12 @@ Special_InitialSetDSTFlag: ; 90a54 hlcoord 1, 14 lb bc, 3, 18 call ClearBox - ld hl, UnknownText_0x90a6c + ld hl, .Text call PlaceWholeStringInBoxAtOnce ret ; 90a6c -UnknownText_0x90a6c: ; 90a6c +.Text: ; 90a6c start_asm call UpdateTime ld a, [hHours] @@ -591,11 +593,11 @@ UnknownText_0x90a6c: ; 90a6c ld c, a decoord 1, 14 callba PrintHoursMins - ld hl, TextJump_DSTIsThatOK + ld hl, .DSTIsThatOK ret ; 90a83 (24:4a83) -TextJump_DSTIsThatOK: ; 0x90a83 +.DSTIsThatOK: ; 0x90a83 ; DST, is that OK? text_jump Text_DSTIsThatOK db "@" @@ -608,12 +610,12 @@ Special_InitialClearDSTFlag: ; 90a88 hlcoord 1, 14 lb bc, 3, 18 call ClearBox - ld hl, UnknownText_0x90aa0 + ld hl, .Text call PlaceWholeStringInBoxAtOnce ret ; 90aa0 -UnknownText_0x90aa0: ; 90aa0 +.Text: ; 90aa0 start_asm call UpdateTime ld a, [hHours] @@ -622,26 +624,26 @@ UnknownText_0x90aa0: ; 90aa0 ld c, a decoord 1, 14 callba PrintHoursMins - ld hl, UnknownText_0x90ab7 + ld hl, .IsThatOK ret ; 90ab7 -UnknownText_0x90ab7: ; 0x90ab7 +.IsThatOK: ; 0x90ab7 ; , is that OK? text_jump UnknownText_0x1c5ff1 db "@" ; 0x90abc -Function90abc: ; 90abc +DebugDisplayTime: ; 90abc hlcoord 1, 14 lb bc, 3, SCREEN_WIDTH - 2 call ClearBox - ld hl, UnknownText_0x90acc + ld hl, .Text call PlaceWholeStringInBoxAtOnce ret ; 90acc -UnknownText_0x90acc: ; 0x90acc +.Text: ; 0x90acc start_asm call UpdateTime @@ -655,7 +657,7 @@ UnknownText_0x90acc: ; 0x90acc inc hl ld de, hRTCDayLo - call Function90b23 + call .PrintTime hlcoord 1, 16 ld [hl], "D" @@ -666,7 +668,7 @@ UnknownText_0x90acc: ; 0x90acc inc hl ld de, StartDay - call Function90b23 + call .PrintTime ld [hl], " " inc hl @@ -690,16 +692,16 @@ UnknownText_0x90acc: ; 0x90acc inc hl .done - ld hl, UnknownText_0x90b13 + ld hl, .NowOnDebug ret ; 90b13 -UnknownText_0x90b13: ; 0x90b13 +.NowOnDebug: ; 0x90b13 text "<PARA>Now on DEBUG…" prompt ; 0x90b23 -Function90b23: ; 90b23 +.PrintTime: ; 90b23 lb bc, 1, 3 call PrintNum ld [hl], "." diff --git a/engine/tmhm.asm b/engine/tmhm.asm index b66131ac9..dc5d698e1 100755 --- a/engine/tmhm.asm +++ b/engine/tmhm.asm @@ -5,7 +5,7 @@ CanLearnTMHMMove: ; 11639 ld hl, BaseTMHM push hl - ld a, [wd262] + ld a, [wPutativeTMHMMove] ld b, a ld c, 0 ld hl, TMHMMoves diff --git a/engine/tmhm2.asm b/engine/tmhm2.asm new file mode 100755 index 000000000..fdb829034 --- /dev/null +++ b/engine/tmhm2.asm @@ -0,0 +1,592 @@ +TMHMPocket: ; 2c76f (b:476f) + ld a, $1 + ld [hInMenu], a + call TMHM_PocketLoop + ld a, $0 + ld [hInMenu], a + ret nc + call PlaceHollowCursor + call WaitBGMap + ld a, [CurItem] + dec a + ld [CurItemQuantity], a + ld hl, TMsHMs + ld c, a + ld b, 0 + add hl, bc + ld a, [hl] + ld [wItemQuantityBuffer], a + call .ConvertItemToTMHMNumber + scf + ret + +.ConvertItemToTMHMNumber: ; 2c798 (b:4798) + ld a, [CurItem] + ld c, a + callab GetNumberedTMHM + ld a, c + ld [CurItem], a + ret + +ConvertCurItemIntoCurTMHM: ; 2c7a7 (b:47a7) + ld a, [CurItem] + ld c, a + callab GetTMHMNumber + ld a, c + ld [wCurTMHM], a + ret + +GetTMHMItemMove: ; 2c7b6 (b:47b6) + call ConvertCurItemIntoCurTMHM + predef GetTMHMMove + ret + +AskTeachTMHM: ; 2c7bf (b:47bf) + ld hl, Options + ld a, [hl] + push af + res NO_TEXT_SCROLL, [hl] + ld a, [CurItem] + cp TM01 + jr c, .NotTMHM + call GetTMHMItemMove + ld a, [wCurTMHM] + ld [wPutativeTMHMMove], a + call GetMoveName + call CopyName1 + ld hl, Text_BootedTM ; Booted up a TM + ld a, [CurItem] + cp HM01 + jr c, .TM + ld hl, Text_BootedHM ; Booted up an HM +.TM + call PrintText + ld hl, Text_ItContained + call PrintText + call YesNoBox +.NotTMHM + pop bc + ld a, b + ld [Options], a + ret + +ChooseMonToLearnTMHM: ; 2c7fb + ld hl, StringBuffer2 + ld de, wTMHMMoveNameBackup + ld bc, 12 + call CopyBytes + call ClearBGPalettes +ChooseMonToLearnTMHM_NoRefresh: ; 2c80a + callba LoadPartyMenuGFX + callba InitPartyMenuWithCancel + callba InitPartyMenuGFX + ld a, $3 ; TeachWhichPKMNString + ld [PartyMenuActionText], a +.loopback + callba WritePartyMenuTilemap + callba PrintPartyMenuText + call WaitBGMap + call SetPalettes + call DelayFrame + callba PartyMenuSelect + push af + ld a, [CurPartySpecies] + cp EGG + pop bc ; now contains the former contents of af + jr z, .egg + push bc + ld hl, wTMHMMoveNameBackup + ld de, StringBuffer2 + ld bc, 12 + call CopyBytes + pop af ; now contains the original contents of af + ret + +.egg + push hl + push de + push bc + push af + ld de, SFX_WRONG + call PlaySFX + call WaitSFX + pop af + pop bc + pop de + pop hl + jr .loopback +; 2c867 + +TeachTMHM: ; 2c867 + predef CanLearnTMHMMove + + push bc + ld a, [CurPartyMon] + ld hl, PartyMonNicknames + call GetNick + pop bc + + ld a, c + and a + jr nz, .compatible + push de + ld de, SFX_WRONG + call PlaySFX + pop de + ld hl, Text_TMHMNotCompatible + call PrintText + jr .nope + +.compatible + callab KnowsMove + jr c, .nope + + predef LearnMove + ld a, b + and a + jr z, .nope + + callba MobileFn_106049 + ld a, [CurItem] + call IsHM + ret c + + ld c, HAPPINESS_LEARNMOVE + callab ChangeHappiness + call ConsumeTM + jr .learned_move + +.nope + and a + ret + +.unused + ld a, 2 + ld [wItemEffectSucceeded], a +.learned_move + scf + ret +; 2c8bf (b:48bf) + +Text_BootedTM: ; 0x2c8bf + ; Booted up a TM. + text_jump UnknownText_0x1c0373 + db "@" +; 0x2c8c4 + +Text_BootedHM: ; 0x2c8c4 + ; Booted up an HM. + text_jump UnknownText_0x1c0384 + db "@" +; 0x2c8c9 + +Text_ItContained: ; 0x2c8c9 + ; It contained @ . Teach @ to a #MON? + text_jump UnknownText_0x1c0396 + db "@" +; 0x2c8ce + +Text_TMHMNotCompatible: ; 0x2c8ce + ; is not compatible with @ . It can't learn @ . + text_jump UnknownText_0x1c03c2 + db "@" +; 0x2c8d3 + +TMHM_PocketLoop: ; 2c8d3 (b:48d3) + xor a + ld [hBGMapMode], a + call TMHM_DisplayPocketItems + ld a, $2 + ld [w2DMenuCursorInitY], a + ld a, $7 + ld [w2DMenuCursorInitX], a + ld a, $1 + ld [w2DMenuNumCols], a + ld a, $5 + sub d + inc a + cp $6 + jr nz, .okay + dec a +.okay + ld [w2DMenuNumRows], a + ld a, $c + ld [w2DMenuFlags1], a + xor a + ld [w2DMenuFlags2], a + ld a, $20 + ld [w2DMenuCursorOffsets], a + ld a, A_BUTTON | B_BUTTON | D_UP | D_DOWN | D_LEFT | D_RIGHT + ld [wMenuJoypadFilter], a + ld a, [wTMHMPocketCursor] + inc a + ld [wMenuCursorY], a + ld a, $1 + ld [wMenuCursorX], a + jr TMHM_ShowTMMoveDescription + +TMHM_JoypadLoop: ; 2c915 (b:4915) + call TMHM_DisplayPocketItems + call StaticMenuJoypad + ld b, a + ld a, [wMenuCursorY] + dec a + ld [wTMHMPocketCursor], a + xor a + ld [hBGMapMode], a + ld a, [w2DMenuFlags2] + bit 7, a + jp nz, TMHM_ScrollPocket + ld a, b + ld [wMenuJoypad], a + bit A_BUTTON_F, a + jp nz, TMHM_ChooseTMorHM + bit B_BUTTON_F, a + jp nz, TMHM_ExitPack + bit D_RIGHT_F, a + jp nz, TMHM_ExitPocket + bit D_LEFT_F, a + jp nz, TMHM_ExitPocket +TMHM_ShowTMMoveDescription: ; 2c946 (b:4946) + call TMHM_CheckHoveringOverCancel + jp nc, TMHM_ExitPocket + hlcoord 0, 12 + ld b, 4 + ld c, SCREEN_WIDTH - 2 + call TextBox + ld a, [CurItem] + cp NUM_TMS + NUM_HMS + 1 + jr nc, TMHM_JoypadLoop + ld [wd265], a + predef GetTMHMMove + ld a, [wd265] + ld [CurSpecies], a + hlcoord 1, 14 + call PrintMoveDesc + jp TMHM_JoypadLoop + +TMHM_ChooseTMorHM: ; 2c974 (b:4974) + call TMHM_PlaySFX_ReadText2 + call CountTMsHMs ; This stores the count to wd265. + ld a, [wMenuCursorY] + dec a + ld b, a + ld a, [wTMHMPocketScrollPosition] + add b + ld b, a + ld a, [wd265] + cp b + jr z, _TMHM_ExitPack ; our cursor was hovering over CANCEL +TMHM_CheckHoveringOverCancel: ; 2c98a (b:498a) + call TMHM_GetCurrentPocketPosition + ld a, [wMenuCursorY] + ld b, a +.loop + inc c + ld a, c + cp NUM_TMS + NUM_HMS + 1 + jr nc, .okay + ld a, [hli] + and a + jr z, .loop + dec b + jr nz, .loop + ld a, c +.okay + ld [CurItem], a + cp -1 + ret + +TMHM_ExitPack: ; 2c9a5 (b:49a5) + call TMHM_PlaySFX_ReadText2 +_TMHM_ExitPack: ; 2c9a8 (b:49a8) + ld a, $2 + ld [wMenuJoypad], a + and a + ret + +TMHM_ExitPocket: ; 2c9af (b:49af) + and a + ret + +TMHM_ScrollPocket: ; 2c9b1 (b:49b1) + ld a, b + bit 7, a + jr nz, .skip + ld hl, wTMHMPocketScrollPosition + ld a, [hl] + and a + jp z, TMHM_JoypadLoop + dec [hl] + call TMHM_DisplayPocketItems + jp TMHM_ShowTMMoveDescription + +.skip + call TMHM_GetCurrentPocketPosition + ld b, 5 +.loop + inc c + ld a, c + cp NUM_TMS + NUM_HMS + 1 + jp nc, TMHM_JoypadLoop + ld a, [hli] + and a + jr z, .loop + dec b + jr nz, .loop + ld hl, wTMHMPocketScrollPosition + inc [hl] + call TMHM_DisplayPocketItems + jp TMHM_ShowTMMoveDescription + +TMHM_DisplayPocketItems: ; 2c9e2 (b:49e2) + ld a, [BattleType] + cp BATTLETYPE_TUTORIAL + jp z, Tutorial_TMHMPocket + + hlcoord 5, 2 + lb bc, 10, 15 + ld a, " " + call ClearBox + call TMHM_GetCurrentPocketPosition + ld d, $5 +.loop2 + inc c + ld a, c + cp NUM_TMS + NUM_HMS + 1 + jr nc, .NotTMHM + ld a, [hli] + and a + jr z, .loop2 + ld b, a + ld a, c + ld [wd265], a + push hl + push de + push bc + call TMHMPocket_GetCurrentLineCoord + push hl + ld a, [wd265] + cp NUM_TMS + 1 + jr nc, .HM + ld de, wd265 + lb bc, PRINTNUM_LEADINGZEROS | 1, 2 + call PrintNum + jr .okay + +.HM + push af + sub NUM_TMS + ld [wd265], a + ld [hl], "H" + inc hl + ld de, wd265 + lb bc, PRINTNUM_RIGHTALIGN | 1, 2 + call PrintNum + pop af + ld [wd265], a +.okay + predef GetTMHMMove + ld a, [wd265] + ld [wPutativeTMHMMove], a + call GetMoveName + pop hl + ld bc, 3 + add hl, bc + push hl + call PlaceString + pop hl + pop bc + ld a, c + push bc + cp NUM_TMS + 1 + jr nc, .hm2 + ld bc, SCREEN_WIDTH + 9 + add hl, bc + ld [hl], "×" + inc hl + ld a, "0" ; why are we doing this? + pop bc + push bc + ld a, b + ld [wd265], a + ld de, wd265 + lb bc, 1, 2 + call PrintNum +.hm2 + pop bc + pop de + pop hl + dec d + jr nz, .loop2 + jr .done + +.NotTMHM + call TMHMPocket_GetCurrentLineCoord +rept 3 + inc hl +endr + push de + ld de, TMHM_String_Cancel + call PlaceString + pop de +.done + ret + +TMHMPocket_GetCurrentLineCoord: ; 2ca86 (b:4a86) + hlcoord 5, 0 + ld bc, 2 * SCREEN_WIDTH + ld a, 6 + sub d + ld e, a + ; AddNTimes +.loop + add hl, bc + dec e + jr nz, .loop + ret +; 2ca95 (b:4a95) + +Function2ca95: ; 2ca95 +; unreferenced + pop hl + ld bc, 3 + add hl, bc + predef GetTMHMMove + ld a, [wd265] + ld [wPutativeTMHMMove], a + call GetMoveName + push hl + call PlaceString + pop hl + ret +; 2caae + +TMHM_String_Cancel: ; 2caae + db "CANCEL@" +; 2cab5 + +TMHM_GetCurrentPocketPosition: ; 2cab5 (b:4ab5) + ld hl, TMsHMs + ld a, [wTMHMPocketScrollPosition] + ld b, a + inc b + ld c, 0 +.loop + inc c + ld a, [hli] + and a + jr z, .loop + dec b + jr nz, .loop + dec hl + dec c + ret + +Tutorial_TMHMPocket: ; 2caca (b:4aca) + hlcoord 9, 3 + push de + ld de, TMHM_String_Cancel + call PlaceString + pop de + ret + +TMHM_PlaySFX_ReadText2: ; 2cad6 (b:4ad6) + push de + ld de, SFX_READ_TEXT_2 + call PlaySFX + pop de + ret +; 2cadf (b:4adf) + +Function2cadf: ; 2cadf +; unreferenced + call ConvertCurItemIntoCurTMHM + call .CheckHaveRoomForTMHM + ld hl, .NoRoomText + jr nc, .print + ld hl, .ReceivedText +.print + jp PrintText +; 2caf0 + +.NoRoomText: ; 0x2caf0 + ; You have no room for any more @ S. + text_jump UnknownText_0x1c03fa + db "@" +; 0x2caf5 + +.ReceivedText: ; 0x2caf5 + ; You received @ ! + text_jump UnknownText_0x1c0421 + db "@" +; 0x2cafa + +.CheckHaveRoomForTMHM: ; 2cafa + ld a, [wd265] + dec a + ld hl, TMsHMs + ld b, 0 + ld c, a + add hl, bc + ld a, [hl] + inc a + cp NUM_TMS * 2 + ret nc + ld [hl], a + ret +; 2cb0c + +ConsumeTM: ; 2cb0c (b:4b0c) + call ConvertCurItemIntoCurTMHM + ld a, [wd265] + dec a + ld hl, TMsHMs + ld b, 0 + ld c, a + add hl, bc + ld a, [hl] + and a + ret z + dec a + ld [hl], a + ret nz + ld a, [wTMHMPocketScrollPosition] + and a + ret z + dec a + ld [wTMHMPocketScrollPosition], a + ret + +CountTMsHMs: ; 2cb2a (b:4b2a) + ld b, 0 + ld c, NUM_TMS + NUM_HMS + ld hl, TMsHMs +.loop + ld a, [hli] + and a + jr z, .skip + inc b +.skip + dec c + jr nz, .loop + ld a, b + ld [wd265], a + ret + +PrintMoveDesc: ; 2cb3e + push hl + ld hl, MoveDescriptions + ld a, [CurSpecies] + dec a + ld c, a + ld b, 0 +rept 2 + add hl, bc +endr + ld a, [hli] + ld e, a + ld d, [hl] + pop hl + jp PlaceString +; 2cb52 diff --git a/engine/town_map.asm b/engine/town_map.asm index c821e793a..871d4bb89 100755 --- a/engine/town_map.asm +++ b/engine/town_map.asm @@ -20,7 +20,7 @@ _TownMap: ; 9191c call ClearSprites call DisableLCD call Function90c4e - callba Function8cf53 + callba ClearSpriteAnims ld a, 8 call SkipMusic ld a, $e3 @@ -31,7 +31,7 @@ _TownMap: ; 9191c xor a ld [hBGMapMode], a call Function91a04 - call Function3200 + call WaitBGMap2 ld a, [wd002] call Function9106a ld a, [wd003] @@ -47,7 +47,7 @@ _TownMap: ; 9191c and a jr z, .sgb ld a, $e4 - call Functioncf8 + call DmgToCgbObjPal0 call DelayFrame .sgb @@ -92,7 +92,7 @@ Function919b0: ; 919b0 jr nz, .pressed_down .loop2 push de - callba Function8cf69 + callba PlaySpriteAnimations pop de call DelayFrame jr .loop diff --git a/engine/trade/animation.asm b/engine/trade/animation.asm index 0aaf0cb8b..a084fc3be 100755 --- a/engine/trade/animation.asm +++ b/engine/trade/animation.asm @@ -142,7 +142,7 @@ Function28fdb: ; 28fdb call ClearTileMap call DisableLCD call LoadFontsBattleExtra - callab Function8cf53 + callab ClearSpriteAnims ld a, [hCGB] and a jr z, .asm_2900b @@ -180,23 +180,23 @@ Function28fdb: ; 28fdb ld [hWX], a ld a, $90 ld [hWY], a - callba Function4d7fd + callba GetTrademonFrontpic call EnableLCD call Function2982b ld a, [wPlayerTrademonSpecies] ld hl, wPlayerTrademonDVs ld de, VTiles0 - call Function29491 + call TradeAnim_GetFrontpic ld a, [wOTTrademonSpecies] ld hl, wOTTrademonDVs ld de, VTiles0 tile $31 - call Function29491 + call TradeAnim_GetFrontpic ld a, [wPlayerTrademonSpecies] ld de, wPlayerTrademonSpeciesName - call Function294a9 + call TradeAnim_GetNickname ld a, [wOTTrademonSpecies] ld de, wOTTrademonSpeciesName - call Function294a9 + call TradeAnim_GetNickname call Function297ed ret ; 29082 @@ -206,7 +206,7 @@ DoTradeAnimation: ; 29082 bit 7, a jr nz, .finished call .DoTradeAnimCommand - callab Function8cf69 + callab PlaySpriteAnimations ld hl, wcf65 inc [hl] call DelayFrame @@ -336,7 +336,7 @@ Function2914e: ; 2914e push de push af call DisableLCD - callab Function8cf53 + callab ClearSpriteAnims hlbgcoord 20, 3 ld bc, $c ld a, $60 @@ -368,10 +368,10 @@ Function2914e: ; 2914e call WaitBGMap ld b, SCGB_1B call GetSGBLayout - ld a, $e4 + ld a, %11100100 ; 3,2,1,0 call DmgToCgbBGPals ld a, $d0 - call Functioncf8 + call DmgToCgbObjPal0 call NextTradeAnim ld a, $5c ld [wcf64], a @@ -466,7 +466,7 @@ TradeAnim_TubeToPlayer8: ; 29229 call ClearTileMap call ClearSprites call DisableLCD - callab Function8cf53 + callab ClearSpriteAnims hlbgcoord 0, 0 ld bc, sScratch - VBGMap0 ld a, " " @@ -566,6 +566,7 @@ Function292be: ; 292be hlcoord 17, 3 ld a, $5d ld [hl], a + ld a, $61 ld de, SCREEN_WIDTH ld c, $3 @@ -574,6 +575,7 @@ Function292be: ; 292be ld [hl], a dec c jr nz, .loop + add hl, de ld a, $5f ld [hld], a @@ -644,9 +646,9 @@ TradeAnim_EnterLinkTube: ; 29348 call WaitBGMap ld b, SCGB_1B call GetSGBLayout - ld a, $e4 + ld a, %11100100 ; 3,2,1,0 call DmgToCgbBGPals - ld de, $e4e4 + lb de, %11100100, %11100100 ; 3,2,1,0, 3,2,1,0 call DmgToCgbObjPals ld de, SFX_POTION call PlaySFX @@ -784,9 +786,9 @@ TradeAnim_ShowGivemonData: ; 2942e ld [TempMonDVs + 1], a ld b, SCGB_1A call GetSGBLayout - ld a, $e4 + ld a, %11100100 ; 3,2,1,0 call DmgToCgbBGPals - call Function294bb + call TradeAnim_ShowGivemonFrontpic ld a, [wPlayerTrademonSpecies] call GetCryIndex @@ -810,20 +812,20 @@ TradeAnim_ShowGetmonData: ; 29461 ld [TempMonDVs + 1], a ld b, SCGB_1A call GetSGBLayout - ld a, $e4 + ld a, %11100100 ; 3,2,1,0 call DmgToCgbBGPals - call Function294c0 + call TradeAnim_ShowGetmonFrontpic call TradeAnim_Next ret ; 29487 TradeAnim_AnimateFrontpic: ; 29487 - callba Function4d81e + callba AnimateTrademonFrontpic call TradeAnim_Next ret ; 29491 -Function29491: ; 29491 +TradeAnim_GetFrontpic: ; 29491 push de push af predef GetUnownLetter @@ -836,7 +838,7 @@ Function29491: ; 29491 ret ; 294a9 -Function294a9: ; 294a9 +TradeAnim_GetNickname: ; 294a9 push de ld [wd265], a call GetPokemonName @@ -847,14 +849,13 @@ Function294a9: ; 294a9 ret ; 294bb -Function294bb: ; 294bb +TradeAnim_ShowGivemonFrontpic: ; 294bb ld de, VTiles0 - jr Function294c3 + jr TradeAnim_ShowFrontpic -Function294c0: ; 294c0 +TradeAnim_ShowGetmonFrontpic: ; 294c0 ld de, VTiles0 tile $31 - -Function294c3: ; 294c3 +TradeAnim_ShowFrontpic: ; 294c3 call DelayFrame ld hl, VTiles2 lb bc, 10, $31 @@ -1087,8 +1088,8 @@ TradeAnim_Poof: ; 29649 ; 29660 TradeAnim_BulgeThroughTube: ; 29660 - ld a, $e4 - call Functioncf8 + ld a, %11100100 ; 3,2,1,0 + call DmgToCgbObjPal0 depixel 5, 11 ld a, SPRITE_ANIM_INDEX_10 call _InitSpriteAnimStruct @@ -1374,13 +1375,13 @@ Function297db: ; 297db Function297ed: ; 297ed ld a, [hSGB] and a - ld a, $e4 + ld a, %11100100 ; 3,2,1,0 jr z, .asm_297f6 ld a, $f0 .asm_297f6 - call Functioncf8 - ld a, $e4 + call DmgToCgbObjPal0 + ld a, %11100100 ; 3,2,1,0 call DmgToCgbBGPals ret ; 297ff diff --git a/engine/unown_puzzle.asm b/engine/unown_puzzle.asm new file mode 100755 index 000000000..22f6d3d22 --- /dev/null +++ b/engine/unown_puzzle.asm @@ -0,0 +1,878 @@ +puzcoord EQUS "* 6 +" +PUZZLE_BORDER EQU $ee +PUZZLE_VOID EQU $ef + +UnownPuzzle: ; e1190 + ld a, [hInMenu] + push af + ld a, $1 + ld [hInMenu], a + call ClearBGPalettes + call ClearTileMap + call ClearSprites + xor a + ld [hBGMapMode], a + call DisableLCD + ld hl, wMisc + ld bc, wMiscEnd - wMisc + xor a + call ByteFill + ld hl, UnownPuzzleCursorGFX + ld de, VTiles1 tile $60 + ld bc, 4 tiles + call CopyBytes + ld hl, UnownPuzzleStartCancelLZ + ld de, VTiles1 tile $6d + call Decompress + call LoadUnownPuzzlePiecesGFX + hlcoord 0, 0 + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT + ld a, PUZZLE_BORDER + call ByteFill + hlcoord 4, 3 + lb bc, 12, 12 + ld a, PUZZLE_VOID + call UnownPuzzle_FillBox + call InitUnownPuzzlePiecePositions + call UnownPuzzle_UpdateTilemap + call PlaceStartCancelBox + xor a + ld [hSCY], a + ld [hSCX], a + ld [rWY], a + ld [wJumptableIndex], a + ld [wHoldingUnownPuzzlePiece], a + ld [wUnownPuzzleCursorPosition], a + ld [wUnownPuzzleHeldPiece], a + ld a, $93 + ld [rLCDC], a + call WaitBGMap + ld b, SCGB_18 + call GetSGBLayout + ld a, $e4 + call DmgToCgbBGPals + ld a, $24 + call DmgToCgbObjPal0 + xor a + ld [wSolvedUnownPuzzle], a + call DelayFrame +.loop + call JoyTextDelay + ld a, [wJumptableIndex] + bit 7, a + jr nz, .quit + call UnownPuzzleJumptable + ld a, [wHoldingUnownPuzzlePiece] + and a + jr nz, .holding_piece + ld a, [hVBlankCounter] + and $10 + jr z, .clear +.holding_piece + call RedrawUnownPuzzlePieces + jr .next + +.clear + call ClearSprites +.next + call DelayFrame + jr .loop + +.quit + pop af + ld [hInMenu], a + call ClearBGPalettes + call ClearTileMap + call ClearSprites + ld a, $e3 + ld [rLCDC], a + ret +; e124e + +InitUnownPuzzlePiecePositions: ; e124e + ld c, 1 + ld b, 16 +.load_loop + call Random + and $f + ld hl, .PuzzlePieceInitialPositions + ld e, a + ld d, $0 + add hl, de + ld e, [hl] + ld hl, wPuzzlePieces + add hl, de + ld a, [hl] + and a + jr nz, .load_loop + ld [hl], c + inc c + dec b + jr nz, .load_loop + ret +; e126d + +.PuzzlePieceInitialPositions: ; e126d +initpuzcoord: macro +rept _NARG / 2 + db \1 puzcoord \2 + shift + shift +endr +endm + initpuzcoord 0,0, 0,1, 0,2, 0,3, 0,4, 0,5 + initpuzcoord 1,0, 1,5 + initpuzcoord 2,0, 2,5 + initpuzcoord 3,0, 3,5 + initpuzcoord 4,0, 4,5 + initpuzcoord 5,0, 5,5 + ; START > CANCEL +; e127d + +PlaceStartCancelBox: ; e127d + call PlaceStartCancelBoxBorder + hlcoord 5, 16 + ld a, $f6 + ld c, 10 +.loop + ld [hli], a + inc a + dec c + jr nz, .loop + ret +; e128d + +PlaceStartCancelBoxBorder: ; e128d + hlcoord 4, 15 + ld a, $f0 + ld [hli], a + ld bc, 10 + ld a, $f1 + call ByteFill + hlcoord 15, 15 + ld a, $f2 + ld [hli], a + hlcoord 4, 16 + ld a, $f3 + ld [hli], a + ld bc, 10 + ld a, $ef + call ByteFill + hlcoord 15, 16 + ld a, $f3 + ld [hli], a + hlcoord 4, 17 + ld a, $f4 + ld [hli], a + ld bc, 10 + ld a, $f1 + call ByteFill + hlcoord 15, 17 + ld a, $f5 + ld [hl], a + ret +; e12ca + +UnownPuzzleJumptable: ; e12ca + ld a, [wJumptableIndex] + ld e, a + ld d, 0 + ld hl, .Jumptable +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; e12d9 + +.Jumptable: ; e12d9 + jumptable_start + jumptable .Function +; e12db + +.Function: ; e12db + ld a, [hJoyPressed] + and START + jp nz, UnownPuzzle_Quit + ld a, [hJoyPressed] + and A_BUTTON + jp nz, UnownPuzzle_A + ld hl, hJoyLast + ld a, [hl] + and D_UP + jr nz, .d_up + ld a, [hl] + and D_DOWN + jr nz, .d_down + ld a, [hl] + and D_LEFT + jr nz, .d_left + ld a, [hl] + and D_RIGHT + jr nz, .d_right + ret + +.d_up + ld hl, wUnownPuzzleCursorPosition + ld a, [hl] + cp 1 puzcoord 0 + ret c + sub $6 + ld [hl], a + jr .done_joypad + +.d_down + ld hl, wUnownPuzzleCursorPosition + ld a, [hl] + cp 4 puzcoord 1 + ret z + cp 4 puzcoord 2 + ret z + cp 4 puzcoord 3 + ret z + cp 4 puzcoord 4 + ret z + cp 5 puzcoord 0 + ret nc + add $6 + ld [hl], a + jr .done_joypad + +.d_left + ld hl, wUnownPuzzleCursorPosition + ld a, [hl] + and a + ret z + cp 1 puzcoord 0 + ret z + cp 2 puzcoord 0 + ret z + cp 3 puzcoord 0 + ret z + cp 4 puzcoord 0 + ret z + cp 5 puzcoord 0 + ret z + cp 5 puzcoord 5 + jr z, .left_overflow + dec [hl] + jr .done_joypad + +.left_overflow + ld [hl], 5 puzcoord 0 + jr .done_joypad + +.d_right + ld hl, wUnownPuzzleCursorPosition + ld a, [hl] + cp 0 puzcoord 5 + ret z + cp 1 puzcoord 5 + ret z + cp 2 puzcoord 5 + ret z + cp 3 puzcoord 5 + ret z + cp 4 puzcoord 5 + ret z + cp 5 puzcoord 5 + ret z + cp 5 puzcoord 0 + jr z, .right_overflow + inc [hl] + jr .done_joypad + +.right_overflow + ld [hl], 5 puzcoord 5 + +.done_joypad + ld a, [wHoldingUnownPuzzlePiece] + and a + jr nz, .holding_piece + ld de, SFX_POUND + jr .play_sfx + +.holding_piece + ld de, SFX_MOVE_PUZZLE_PIECE + +.play_sfx + call PlaySFX + ret +; e1376 + +UnownPuzzle_A: ; e1376 + ld a, [wHoldingUnownPuzzlePiece] + and a + jr nz, .TryPlacePiece + call UnownPuzzle_CheckCurrentTileOccupancy + and a + jr z, UnownPuzzle_InvalidAction + ld de, SFX_MEGA_KICK + call PlaySFX + ld [hl], 0 + ld [wUnownPuzzleHeldPiece], a + call RedrawUnownPuzzlePieces + call FillUnoccupiedPuzzleSpace + call WaitBGMap + call WaitSFX + ld a, TRUE + ld [wHoldingUnownPuzzlePiece], a + ret + +.TryPlacePiece + call UnownPuzzle_CheckCurrentTileOccupancy + and a + jr nz, UnownPuzzle_InvalidAction + ld de, SFX_PLACE_PUZZLE_PIECE_DOWN + call PlaySFX + ld a, [wUnownPuzzleHeldPiece] + ld [hl], a + call PlaceUnownPuzzlePieceGFX + call WaitBGMap + xor a + ld [wUnownPuzzleHeldPiece], a + call RedrawUnownPuzzlePieces + xor a + ld [wHoldingUnownPuzzlePiece], a + call WaitSFX + call CheckSolvedUnownPuzzle + ret nc + +; You solved the puzzle! + call PlaceStartCancelBoxBorder + call ClearSprites + ld de, SFX_1ST_PLACE + call PlaySFX + call WaitSFX + call SimpleWaitPressAorB + ld a, TRUE + ld [wSolvedUnownPuzzle], a +UnownPuzzle_Quit: ; e13de + ld hl, wJumptableIndex + set 7, [hl] + ret + +UnownPuzzle_InvalidAction: ; e13e4 + ld de, SFX_WRONG + call PlaySFX + call WaitSFX + ret +; e13ee + +UnownPuzzle_FillBox: ; e13ee + ld de, SCREEN_WIDTH +.row + push bc + push hl +.col + ld [hli], a + dec c + jr nz, .col + pop hl + add hl, de + pop bc + dec b + jr nz, .row + ret +; e13fe + +UnownPuzzle_UpdateTilemap: ; e13fe + xor a + ld [wUnownPuzzleCursorPosition], a + ld c, 6 * 6 +.loop + push bc + call UnownPuzzle_CheckCurrentTileOccupancy + ld [wUnownPuzzleHeldPiece], a + and a + jr z, .not_holding_piece + call PlaceUnownPuzzlePieceGFX + jr .next + +.not_holding_piece + call FillUnoccupiedPuzzleSpace + +.next + ld hl, wUnownPuzzleCursorPosition + inc [hl] + pop bc + dec c + jr nz, .loop + ret +; e141f + +PlaceUnownPuzzlePieceGFX: ; e141f + ld a, $2 ; tilemap coords + call GetUnownPuzzleCoordData + ld a, [hli] + ld h, [hl] + ld l, a + push hl + call GetCurrentPuzzlePieceVTileCorner + pop hl + ld de, SCREEN_WIDTH + ld b, 3 +.row + ld c, 3 + push hl +.col + ld [hli], a + inc a + dec c + jr nz, .col + add 9 + pop hl + add hl, de + dec b + jr nz, .row + ret +; e1441 + +FillUnoccupiedPuzzleSpace: ; e1441 + ld a, 2 ; tilemap coords + call GetUnownPuzzleCoordData + ld a, [hli] + ld h, [hl] + ld l, a + push hl + ld a, 4 ; tile + call GetUnownPuzzleCoordData + ld a, [hl] + pop hl + ld de, SCREEN_WIDTH + ld b, 3 +.row + ld c, 3 + push hl +.col + ld [hli], a + dec c + jr nz, .col + pop hl + add hl, de + dec b + jr nz, .row + ret +; e1463 + +GetUnownPuzzleCoordData: ; e1463 + ld e, a + ld d, 0 + ld hl, UnownPuzzleCoordData + add hl, de + ld a, [wUnownPuzzleCursorPosition] + ld e, a +rept 6 + add hl, de +endr + ret +; e1475 + +UnownPuzzle_CheckCurrentTileOccupancy: ; e1475 + ld hl, wPuzzlePieces + ld a, [wUnownPuzzleCursorPosition] + ld e, a + ld d, $0 + add hl, de + ld a, [hl] + ret +; e1481 + +GetCurrentPuzzlePieceVTileCorner: ; e1481 + ld a, [wUnownPuzzleHeldPiece] + ld hl, .Corners + add l + ld l, a + ld a, $0 + adc h + ld h, a + ld a, [hl] + ret +; e148f + +.Corners: ; e148f +; 00, 01, 02 +; 0c, 0d, 0e +; 18, 19, 1a + db $e0 ; no piece selected + db $00, $03, $06, $09 + db $24, $27, $2a, $2d + db $48, $4b, $4e, $51 + db $6c, $6f, $72, $75 +; e14a0 + +CheckSolvedUnownPuzzle: ; e14a0 + ld hl, .SolvedPuzzleConfiguration + ld de, wPuzzlePieces + ld c, 6 * 6 +.loop + ld a, [de] + cp [hl] + jr nz, .not_solved + inc de + inc hl + dec c + jr nz, .loop + scf + ret + +.not_solved + and a + ret +; e14b5 + +.SolvedPuzzleConfiguration: ; e14b5 + db $00, $00, $00, $00, $00, $00 + db $00, $01, $02, $03, $04, $00 + db $00, $05, $06, $07, $08, $00 + db $00, $09, $0a, $0b, $0c, $00 + db $00, $0d, $0e, $0f, $10, $00 + db $00, $00, $00, $00, $00, $00 +; e14d9 + +RedrawUnownPuzzlePieces: ; e14d9 + call GetCurrentPuzzlePieceVTileCorner + ld [wd002], a + xor a + call GetUnownPuzzleCoordData ; get pixel positions + ld a, [hli] + ld b, [hl] + ld c, a + ld a, [wd002] + cp $e0 + jr z, .NoPiece + ld hl, .OAM_HoldingPiece + jr .load + +.NoPiece + ld hl, .OAM_NotHoldingPiece + +.load + ld de, Sprites +.loop + ld a, [hli] + cp -1 + ret z + add b + ld [de], a + inc de + ld a, [hli] + add c + ld [de], a + inc de + ld a, [wd002] + add [hl] + ld [de], a + inc hl + inc de + ld a, [hli] + ld [de], a + inc de + jr .loop +; e150f + +.OAM_HoldingPiece: ; e150f + dsprite -1, -4, -1, -4, $00, $00 + dsprite -1, -4, 0, -4, $01, $00 + dsprite -1, -4, 0, 4, $02, $00 + dsprite 0, -4, -1, -4, $0c, $00 + dsprite 0, -4, 0, -4, $0d, $00 + dsprite 0, -4, 0, 4, $0e, $00 + dsprite 0, 4, -1, -4, $18, $00 + dsprite 0, 4, 0, -4, $19, $00 + dsprite 0, 4, 0, 4, $1a, $00 + db -1 + +.OAM_NotHoldingPiece: ; e1534 + dsprite -1, -4, -1, -4, $00, $00 + dsprite -1, -4, 0, -4, $01, $00 + dsprite -1, -4, 0, 4, $00, $20 ; xflip + dsprite 0, -4, -1, -4, $02, $00 + dsprite 0, -4, 0, -4, $03, $00 + dsprite 0, -4, 0, 4, $02, $20 ; xflip + dsprite 0, 4, -1, -4, $00, $40 ; yflip + dsprite 0, 4, 0, -4, $01, $40 ; yflip + dsprite 0, 4, 0, 4, $00, $60 ; xflip, yflip + db -1 + +UnownPuzzleCoordData: ; e1559 + +puzzle_coords: macro + dbpixel \1, \2, \3, \4 + dwcoord \5, \6 + db \7, \8 +endm +; OAM coords, tilemap coords, vacant tile, filler + puzzle_coords 3, 3, 4, 4, 1, 0, PUZZLE_BORDER, 0 + puzzle_coords 6, 3, 4, 4, 4, 0, PUZZLE_BORDER, 0 + puzzle_coords 9, 3, 4, 4, 7, 0, PUZZLE_BORDER, 0 + puzzle_coords 12, 3, 4, 4, 10, 0, PUZZLE_BORDER, 0 + puzzle_coords 15, 3, 4, 4, 13, 0, PUZZLE_BORDER, 0 + puzzle_coords 18, 3, 4, 4, 16, 0, PUZZLE_BORDER, 0 + + puzzle_coords 3, 6, 4, 4, 1, 3, PUZZLE_BORDER, 0 + puzzle_coords 6, 6, 4, 4, 4, 3, PUZZLE_VOID, 0 + puzzle_coords 9, 6, 4, 4, 7, 3, PUZZLE_VOID, 0 + puzzle_coords 12, 6, 4, 4, 10, 3, PUZZLE_VOID, 0 + puzzle_coords 15, 6, 4, 4, 13, 3, PUZZLE_VOID, 0 + puzzle_coords 18, 6, 4, 4, 16, 3, PUZZLE_BORDER, 0 + + puzzle_coords 3, 9, 4, 4, 1, 6, PUZZLE_BORDER, 0 + puzzle_coords 6, 9, 4, 4, 4, 6, PUZZLE_VOID, 0 + puzzle_coords 9, 9, 4, 4, 7, 6, PUZZLE_VOID, 0 + puzzle_coords 12, 9, 4, 4, 10, 6, PUZZLE_VOID, 0 + puzzle_coords 15, 9, 4, 4, 13, 6, PUZZLE_VOID, 0 + puzzle_coords 18, 9, 4, 4, 16, 6, PUZZLE_BORDER, 0 + + puzzle_coords 3, 12, 4, 4, 1, 9, PUZZLE_BORDER, 0 + puzzle_coords 6, 12, 4, 4, 4, 9, PUZZLE_VOID, 0 + puzzle_coords 9, 12, 4, 4, 7, 9, PUZZLE_VOID, 0 + puzzle_coords 12, 12, 4, 4, 10, 9, PUZZLE_VOID, 0 + puzzle_coords 15, 12, 4, 4, 13, 9, PUZZLE_VOID, 0 + puzzle_coords 18, 12, 4, 4, 16, 9, PUZZLE_BORDER, 0 + + puzzle_coords 3, 15, 4, 4, 1, 12, PUZZLE_BORDER, 0 + puzzle_coords 6, 15, 4, 4, 4, 12, PUZZLE_VOID, 0 + puzzle_coords 9, 15, 4, 4, 7, 12, PUZZLE_VOID, 0 + puzzle_coords 12, 15, 4, 4, 10, 12, PUZZLE_VOID, 0 + puzzle_coords 15, 15, 4, 4, 13, 12, PUZZLE_VOID, 0 + puzzle_coords 18, 15, 4, 4, 16, 12, PUZZLE_BORDER, 0 + + puzzle_coords 3, 18, 4, 4, 1, 15, PUZZLE_BORDER, 0 + puzzle_coords 6, 18, 4, 4, 4, 15, PUZZLE_BORDER, 0 + puzzle_coords 9, 18, 4, 4, 7, 15, PUZZLE_BORDER, 0 + puzzle_coords 12, 18, 4, 4, 10, 15, PUZZLE_BORDER, 0 + puzzle_coords 15, 18, 4, 4, 13, 15, PUZZLE_BORDER, 0 + puzzle_coords 18, 18, 4, 4, 16, 15, PUZZLE_BORDER, 0 + +ConvertLoadedPuzzlePieces: ; e1631 + ld hl, VTiles2 + ld de, VTiles0 + ld b, 6 +.loop + push bc + push hl + push hl + call .EnlargePuzzlePieceTiles + pop hl + ld bc, 1 tiles / 2 + add hl, bc + call .EnlargePuzzlePieceTiles + pop hl + ld bc, 6 tiles + add hl, bc + pop bc + dec b + jr nz, .loop + call UnownPuzzle_AddPuzzlePieceBorders + ret +; e1654 + +.EnlargePuzzlePieceTiles: ; e1654 +; double size + ld c, 6 +.loop1 + push bc + push hl + push hl + ld c, 4 +.loop2 + push bc + ld a, [hli] + and $f0 + swap a + call .GetEnlargedTile + ld c, a + ld a, [hli] + and $f0 + swap a + call .GetEnlargedTile + ld b, a + ld a, c + ld [de], a + inc de + ld a, b + ld [de], a + inc de + ld a, c + ld [de], a + inc de + ld a, b + ld [de], a + inc de + pop bc + dec c + jr nz, .loop2 + pop hl + ld c, 4 +.loop3 + push bc + ld a, [hli] + and $f + call .GetEnlargedTile + ld c, a + ld a, [hli] + and $f + call .GetEnlargedTile + ld b, a + ld a, c + ld [de], a + inc de + ld a, b + ld [de], a + inc de + ld a, c + ld [de], a + inc de + ld a, b + ld [de], a + inc de + pop bc + dec c + jr nz, .loop3 + pop hl + ld bc, 1 tiles + add hl, bc + pop bc + dec c + jr nz, .loop1 + ret +; e16aa + +.GetEnlargedTile: ; e16aa + push hl + ld hl, .EnlargedTiles + add l + ld l, a + ld a, 0 + adc h + ld h, a + ld a, [hl] + pop hl + ret +; e16b7 + +.EnlargedTiles: ; e16b7 + +x = 0 +rept 16 + db ((x & %1000) * %11000) + ((x & %0100) * %1100) + ((x & %0010) * %110) + ((x & %0001) * %11) +x = x + 1 +endr +; e16c7 + +UnownPuzzle_AddPuzzlePieceBorders: ; e16c7 + ld hl, GFXHeaders + ld a, 8 +.loop + push af + push hl + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + ld a, [hli] + ld h, [hl] + ld l, a + call .LoadGFX + pop hl +rept 4 + inc hl +endr + pop af + dec a + jr nz, .loop + ret +; e16e2 + +.LoadGFX: ; e16e2 + lb bc, 4, 4 +.loop1 + push bc + +.loop2 + push de + push hl + + ld b, 1 tiles +.loop3 + ld a, [de] + or [hl] + ld [hli], a + inc de + dec b + jr nz, .loop3 + + pop hl + ld de, 3 tiles + add hl, de + pop de + dec c + jr nz, .loop2 + + ld bc, 24 tiles + add hl, bc + pop bc + dec b + jr nz, .loop1 + ret +; e1703 + +GFXHeaders: ; e1703 + dw .TileBordersGFX + 0 tiles, VTiles0 tile $00 + dw .TileBordersGFX + 1 tiles, VTiles0 tile $01 + dw .TileBordersGFX + 2 tiles, VTiles0 tile $02 + dw .TileBordersGFX + 3 tiles, VTiles0 tile $0c + dw .TileBordersGFX + 4 tiles, VTiles0 tile $0e + dw .TileBordersGFX + 5 tiles, VTiles0 tile $18 + dw .TileBordersGFX + 6 tiles, VTiles0 tile $19 + dw .TileBordersGFX + 7 tiles, VTiles0 tile $1a +; e1723 + +.TileBordersGFX: ; e1723 +INCBIN "gfx/unown_puzzle/tile_borders.2bpp" + +LoadUnownPuzzlePiecesGFX: ; e17a3 + ld a, [ScriptVar] + and 3 + ld e, a + ld d, 0 + ld hl, .LZPointers +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + ld de, VTiles2 + call Decompress + call ConvertLoadedPuzzlePieces + ret +; e17bd + +.LZPointers: ; e17bd + dw KabutoPuzzleLZ + dw OmanytePuzzleLZ + dw AerodactylPuzzleLZ + dw HoOhPuzzleLZ +; e17c5 + +UnownPuzzleCursorGFX: ; e17c5 +INCBIN "gfx/unown_puzzle/cursor.2bpp" + +UnownPuzzleStartCancelLZ: ; e1805 +INCBIN "gfx/unown_puzzle/start_cancel.2bpp.lz" + +HoOhPuzzleLZ: ; e18ab +INCBIN "gfx/unown_puzzle/hooh.2bpp.lz" + +AerodactylPuzzleLZ: ; e19fb +INCBIN "gfx/unown_puzzle/aerodactyl.2bpp.lz" + +KabutoPuzzleLZ: ; e1bab +INCBIN "gfx/unown_puzzle/kabuto.2bpp.lz" + +OmanytePuzzleLZ: ; e1c9b +INCBIN "gfx/unown_puzzle/omanyte.2bpp.lz" diff --git a/engine/unowndex.asm b/engine/unowndex.asm new file mode 100755 index 000000000..8c4332e96 --- /dev/null +++ b/engine/unowndex.asm @@ -0,0 +1,119 @@ +UpdateUnownDex: ; fba18 + ld a, [UnownLetter] + ld c, a + ld b, 26 + ld hl, UnownDex +.loop + ld a, [hli] + and a + jr z, .done + cp c + ret z + dec b + jr nz, .loop + ret + +.done + dec hl + ld [hl], c + ret +; fba2e + + +PrintUnownWord: ; fba2e (3e:7a2e) + hlcoord 4, 15 + ld bc, 12 + ld a, " " + call ByteFill + ld a, [wc7dd] + ld e, a + ld d, 0 + ld hl, UnownDex + add hl, de + ld a, [hl] + ld e, a + ld d, 0 + ld hl, UnownWords +rept 2 + add hl, de +endr + ld a, [hli] + ld e, a + ld d, [hl] + hlcoord 4, 15 +.loop + ld a, [de] + cp -1 + ret z + inc de + ld [hli], a + jr .loop +; fba5a (3e:7a5a) + +UnownWords: ; fba5a + dw UnownWord1 + dw UnownWord1 + dw UnownWord2 + dw UnownWord3 + dw UnownWord4 + dw UnownWord5 + dw UnownWord6 + dw UnownWord7 + dw UnownWord8 + dw UnownWord9 + dw UnownWord10 + dw UnownWord11 + dw UnownWord12 + dw UnownWord13 + dw UnownWord14 + dw UnownWord15 + dw UnownWord16 + dw UnownWord17 + dw UnownWord18 + dw UnownWord19 + dw UnownWord20 + dw UnownWord21 + dw UnownWord22 + dw UnownWord23 + dw UnownWord24 + dw UnownWord25 + dw UnownWord26 +; fba90 + +unownword: macro +x = 1 + rept STRLEN(\1) + db STRSUB(\1, x, 1) - $40 +x = x + 1 + endr + db -1 +endm + + +UnownWord1: unownword "ANGRY" +UnownWord2: unownword "BEAR" +UnownWord3: unownword "CHASE" +UnownWord4: unownword "DIRECT" +UnownWord5: unownword "ENGAGE" +UnownWord6: unownword "FIND" +UnownWord7: unownword "GIVE" +UnownWord8: unownword "HELP" +UnownWord9: unownword "INCREASE" +UnownWord10: unownword "JOIN" +UnownWord11: unownword "KEEP" +UnownWord12: unownword "LAUGH" +UnownWord13: unownword "MAKE" +UnownWord14: unownword "NUZZLE" +UnownWord15: unownword "OBSERVE" +UnownWord16: unownword "PERFORM" +UnownWord17: unownword "QUICKEN" +UnownWord18: unownword "REASSURE" +UnownWord19: unownword "SEARCH" +UnownWord20: unownword "TELL" +UnownWord21: unownword "UNDO" +UnownWord22: unownword "VANISH" +UnownWord23: unownword "WANT" +UnownWord24: unownword "XXXXX" +UnownWord25: unownword "YIELD" +UnownWord26: unownword "ZOOM" +; fbb32 diff --git a/engine/variables.asm b/engine/variables.asm index a115e2c37..0f6cfc2c2 100755 --- a/engine/variables.asm +++ b/engine/variables.asm @@ -38,34 +38,34 @@ endr ; $00: copy [de] to StringBuffer2 ; $40: return address in de ; $80: call function - dwb StringBuffer2, RETVAR_STRBUF2 - dwb PartyCount, RETVAR_STRBUF2 - dwb .BattleResult, RETVAR_EXECUTE - dwb BattleType, RETVAR_ADDR_DE - dwb TimeOfDay, RETVAR_STRBUF2 - dwb .CountCaughtMons, RETVAR_EXECUTE - dwb .CountSeenMons, RETVAR_EXECUTE - dwb .CountBadges, RETVAR_EXECUTE - dwb PlayerState, RETVAR_ADDR_DE - dwb .PlayerFacing, RETVAR_EXECUTE - dwb hHours, RETVAR_STRBUF2 - dwb .DayOfWeek, RETVAR_EXECUTE - dwb MapGroup, RETVAR_STRBUF2 - dwb MapNumber, RETVAR_STRBUF2 - dwb .UnownCaught, RETVAR_EXECUTE - dwb wPermission, RETVAR_STRBUF2 - dwb .BoxFreeSpace, RETVAR_EXECUTE - dwb wBugContestMinsRemaining, RETVAR_STRBUF2 - dwb XCoord, RETVAR_STRBUF2 - dwb YCoord, RETVAR_STRBUF2 - dwb wSpecialPhoneCallID, RETVAR_STRBUF2 - dwb wcf64, RETVAR_STRBUF2 - dwb wKurtApricornQuantity, RETVAR_STRBUF2 - dwb wCurrentCaller, RETVAR_ADDR_DE - dwb wBlueCardBalance, RETVAR_ADDR_DE - dwb wBuenasPassword, RETVAR_ADDR_DE - dwb wdc58, RETVAR_STRBUF2 - dwb NULL, RETVAR_STRBUF2 + dwb StringBuffer2, RETVAR_STRBUF2 + dwb PartyCount, RETVAR_STRBUF2 + dwb .BattleResult, RETVAR_EXECUTE + dwb BattleType, RETVAR_ADDR_DE + dwb TimeOfDay, RETVAR_STRBUF2 + dwb .CountCaughtMons, RETVAR_EXECUTE + dwb .CountSeenMons, RETVAR_EXECUTE + dwb .CountBadges, RETVAR_EXECUTE + dwb PlayerState, RETVAR_ADDR_DE + dwb .PlayerFacing, RETVAR_EXECUTE + dwb hHours, RETVAR_STRBUF2 + dwb .DayOfWeek, RETVAR_EXECUTE + dwb MapGroup, RETVAR_STRBUF2 + dwb MapNumber, RETVAR_STRBUF2 + dwb .UnownCaught, RETVAR_EXECUTE + dwb wPermission, RETVAR_STRBUF2 + dwb .BoxFreeSpace, RETVAR_EXECUTE + dwb wBugContestMinsRemaining, RETVAR_STRBUF2 + dwb XCoord, RETVAR_STRBUF2 + dwb YCoord, RETVAR_STRBUF2 + dwb wSpecialPhoneCallID, RETVAR_STRBUF2 + dwb wNrOfBeatenBattleTowerTrainers, RETVAR_STRBUF2 + dwb wKurtApricornQuantity, RETVAR_STRBUF2 + dwb wCurrentCaller, RETVAR_ADDR_DE + dwb wBlueCardBalance, RETVAR_ADDR_DE + dwb wBuenasPassword, RETVAR_ADDR_DE + dwb wKenjiBreakTimer, RETVAR_STRBUF2 + dwb NULL, RETVAR_STRBUF2 ; 806c5 .CountCaughtMons: ; 806c5 diff --git a/engine/warp_connection.asm b/engine/warp_connection.asm new file mode 100755 index 000000000..26ea2c2c9 --- /dev/null +++ b/engine/warp_connection.asm @@ -0,0 +1,439 @@ + +RunCallback_05_03: ; 1045b0 + call Clearwc7e8 + call ResetMapBufferEventFlags + call ResetFlashIfOutOfCave + call GetCurrentMapTrigger + call ResetBikeFlags + ld a, $5 + call RunMapCallback +RunCallback_03: ; 1045c4 + callba ClearCmdQueue + ld a, $3 + call RunMapCallback + call GetMapHeaderTimeOfDayNybble + ld [wMapTimeOfDay], a + ret + + +EnterMapConnection: ; 1045d6 +; Return carry if a connection has been entered. + ld a, [wPlayerStepDirection] + and a + jp z, EnterSouthConnection + cp 1 + jp z, EnterNorthConnection + cp 2 + jp z, EnterWestConnection + cp 3 + jp z, EnterEastConnection + ret +; 1045ed + + +EnterWestConnection: ; 1045ed + ld a, [WestConnectedMapGroup] + ld [MapGroup], a + ld a, [WestConnectedMapNumber] + ld [MapNumber], a + ld a, [WestConnectionStripXOffset] + ld [XCoord], a + ld a, [WestConnectionStripYOffset] + ld hl, YCoord + add [hl] + ld [hl], a + ld c, a + ld hl, WestConnectionWindow + ld a, [hli] + ld h, [hl] + ld l, a + srl c + jr z, .skip_to_load + ld a, [WestConnectedMapWidth] + add 6 + ld e, a + ld d, 0 + +.loop + add hl, de + dec c + jr nz, .loop + +.skip_to_load + ld a, l + ld [wOverworldMapAnchor], a + ld a, h + ld [wOverworldMapAnchor + 1], a + jp EnteredConnection +; 104629 + + +EnterEastConnection: ; 104629 + ld a, [EastConnectedMapGroup] + ld [MapGroup], a + ld a, [EastConnectedMapNumber] + ld [MapNumber], a + ld a, [EastConnectionStripXOffset] + ld [XCoord], a + ld a, [EastConnectionStripYOffset] + ld hl, YCoord + add [hl] + ld [hl], a + ld c, a + ld hl, EastConnectionWindow + ld a, [hli] + ld h, [hl] + ld l, a + srl c + jr z, .skip_to_load + ld a, [EastConnectedMapWidth] + add 6 + ld e, a + ld d, 0 + +.loop + add hl, de + dec c + jr nz, .loop + +.skip_to_load + ld a, l + ld [wOverworldMapAnchor], a + ld a, h + ld [wOverworldMapAnchor + 1], a + jp EnteredConnection +; 104665 + + +EnterNorthConnection: ; 104665 + ld a, [NorthConnectedMapGroup] + ld [MapGroup], a + ld a, [NorthConnectedMapNumber] + ld [MapNumber], a + ld a, [NorthConnectionStripYOffset] + ld [YCoord], a + ld a, [NorthConnectionStripXOffset] + ld hl, XCoord + add [hl] + ld [hl], a + ld c, a + ld hl, NorthConnectionWindow + ld a, [hli] + ld h, [hl] + ld l, a + ld b, 0 + srl c + add hl, bc + ld a, l + ld [wOverworldMapAnchor], a + ld a, h + ld [wOverworldMapAnchor + 1], a + jp EnteredConnection +; 104696 + + +EnterSouthConnection: ; 104696 + ld a, [SouthConnectedMapGroup] + ld [MapGroup], a + ld a, [SouthConnectedMapNumber] + ld [MapNumber], a + ld a, [SouthConnectionStripYOffset] + ld [YCoord], a + ld a, [SouthConnectionStripXOffset] + ld hl, XCoord + add [hl] + ld [hl], a + ld c, a + ld hl, SouthConnectionWindow + ld a, [hli] + ld h, [hl] + ld l, a + ld b, 0 + srl c + add hl, bc + ld a, l + ld [wOverworldMapAnchor], a + ld a, h + ld [wOverworldMapAnchor + 1], a + ; fallthrough +; 1046c4 + +EnteredConnection: ; 1046c4 + scf + ret +; 1046c6 + +LoadWarpData: ; 1046c6 + call .SaveDigWarp + call .SetSpawn + ld a, [wNextWarp] + ld [WarpNumber], a + ld a, [wNextMapGroup] + ld [MapGroup], a + ld a, [wNextMapNumber] + ld [MapNumber], a + ret + +.SaveDigWarp: ; 1046df (41:46df) + call GetMapPermission + call CheckOutdoorMap + ret nz + ld a, [wNextMapGroup] + ld b, a + ld a, [wNextMapNumber] + ld c, a + call GetAnyMapPermission + call CheckIndoorMap + ret nz + ld a, [wPrevMapGroup] + cp GROUP_MOUNT_MOON_SQUARE + jr nz, .not_mt_moon_or_tin_tower + ld a, [wPrevMapNumber] + cp MAP_MOUNT_MOON_SQUARE + ret z + cp MAP_TIN_TOWER_ROOF + ret z +.not_mt_moon_or_tin_tower + ld a, [wPrevWarp] + ld [wDigWarp], a + ld a, [wPrevMapGroup] + ld [wDigMapGroup], a + ld a, [wPrevMapNumber] + ld [wDigMapNumber], a + ret + +.SetSpawn: ; 104718 (41:4718) + call GetMapPermission + call CheckOutdoorMap + ret nz + ld a, [wNextMapGroup] + ld b, a + ld a, [wNextMapNumber] + ld c, a + call GetAnyMapPermission + call CheckIndoorMap + ret nz + ld a, [wNextMapGroup] + ld b, a + ld a, [wNextMapNumber] + ld c, a + call GetAnyMapTileset + ld a, c + cp TILESET_POKECENTER + jr z, .pokecenter_pokecom + cp TILESET_POKECOM_CENTER + jr z, .pokecenter_pokecom + ret +.pokecenter_pokecom + ld a, [wPrevMapGroup] + ld [wLastSpawnMapGroup], a + ld a, [wPrevMapNumber] + ld [wLastSpawnMapNumber], a + ret + +LoadMapTimeOfDay: ; 104750 + ld hl, VramState + res 6, [hl] + ld a, $1 + ld [wSpriteUpdatesEnabled], a + callba ReplaceTimeOfDayPals + callba UpdateTimeOfDayPal + call OverworldTextModeSwitch + call Function104770 + call Function1047a3 + ret + +Function104770: ; 104770 (41:4770) + ld a, VBGMap0 / $100 + ld [wBGMapAnchor + 1], a + xor a + ld [wBGMapAnchor], a + ld [hSCY], a + ld [hSCX], a + callba Function5958 + ld a, [rVBK] + push af + ld a, $1 + ld [rVBK], a + xor a + ld bc, VBGMap1 - VBGMap0 + hlbgcoord 0, 0 + call ByteFill + pop af + ld [rVBK], a + ld a, $60 + ld bc, VBGMap1 - VBGMap0 + hlbgcoord 0, 0 + call ByteFill + ret + +Function1047a3: ; 1047a3 (41:47a3) + decoord 0, 0 + call .copy + ld a, [hCGB] + and a + ret z + + decoord 0, 0, AttrMap + ld a, $1 + ld [rVBK], a +.copy: + hlbgcoord 0, 0 + ld c, SCREEN_WIDTH + ld b, SCREEN_HEIGHT +.row + push bc +.column + ld a, [de] + inc de + ld [hli], a + dec c + jr nz, .column + ld bc, BG_MAP_WIDTH - SCREEN_WIDTH + add hl, bc + pop bc + dec b + jr nz, .row + ld a, $0 + ld [rVBK], a + ret + +LoadGraphics: ; 1047cf + call LoadTilesetHeader + call LoadTileset + xor a + ld [hMapAnims], a + xor a + ld [hTileAnimFrame], a + callba RefreshSprites + call LoadFontsExtra + callba LoadOverworldFont + ret + +LoadMapPalettes: ; 1047eb + ld b, SCGB_MAPPALS + jp GetSGBLayout +; 1047f0 + +RefreshMapSprites: ; 1047f0 + call ClearSprites + callba ReturnFromMapSetupScript + call GetMovementPermissions + callba Function579d + callba CheckReplaceKrisSprite + ld hl, wPlayerSpriteSetupFlags + bit 6, [hl] + jr nz, .skip + ld hl, VramState + set 0, [hl] + call Function2e31 +.skip + ld a, [wPlayerSpriteSetupFlags] + and %00011100 + ld [wPlayerSpriteSetupFlags], a + ret + +CheckMovingOffEdgeOfMap:: ; 104820 (41:4820) + ld a, [wPlayerStepDirection] + cp STANDING + ret z + and a ; DOWN + jr z, .down + cp UP + jr z, .up + cp LEFT + jr z, .left + cp RIGHT + jr z, .right + and a + ret + +.down + ld a, [PlayerNextMapY] + sub 4 + ld b, a + ld a, [MapHeight] + add a + cp b + jr z, .ok + and a + ret + +.up + ld a, [PlayerNextMapY] + sub 4 + cp -1 + jr z, .ok + and a + ret + +.left + ld a, [PlayerNextMapX] + sub $4 + cp -1 + jr z, .ok + and a + ret + +.right + ld a, [PlayerNextMapX] + sub 4 + ld b, a + ld a, [MapWidth] + add a + cp b + jr z, .ok + and a + ret + +.ok + scf + ret + + +GetCoordOfUpperLeftCorner:: ; 10486d + ld hl, OverworldMap + ld a, [XCoord] + bit 0, a + jr nz, .increment_then_halve1 + srl a + add $1 + jr .resume + +.increment_then_halve1 + add $1 + srl a + +.resume + ld c, a + ld b, $0 + add hl, bc + ld a, [MapWidth] + add $6 + ld c, a + ld b, $0 + ld a, [YCoord] + bit 0, a + jr nz, .increment_then_halve2 + srl a + add $1 + jr .resume2 + +.increment_then_halve2 + add $1 + srl a + +.resume2 + call AddNTimes + ld a, l + ld [wOverworldMapAnchor], a + ld a, h + ld [wOverworldMapAnchor + 1], a + ld a, [YCoord] + and $1 + ld [wMetatileStandingY], a + ld a, [XCoord] + and $1 + ld [wMetatileStandingX], a + ret +; 1048ba diff --git a/engine/wildmons.asm b/engine/wildmons.asm index 6f39e19dc..ff29c99b5 100755 --- a/engine/wildmons.asm +++ b/engine/wildmons.asm @@ -1,30 +1,34 @@ LoadWildMonData: ; 29ff8 call _GrassWildmonLookup jr c, .copy - ld hl, wd25a + ld hl, wMornEncounterRate xor a ld [hli], a ld [hli], a ld [hl], a jr .done_copy + .copy inc hl inc hl - ld de, wd25a - ld bc, $3 + ld de, wMornEncounterRate + ld bc, 3 call CopyBytes .done_copy call _WaterWildmonLookup - ld a, $0 + ld a, 0 jr nc, .no_copy inc hl inc hl ld a, [hl] .no_copy - ld [wd25d], a + ld [wWaterEncounterRate], a ret -Function2a01f: ; 2a01f +FindNest: ; 2a01f +; Parameters: +; e: 0 = Johto, 1 = Kanto +; wNamedObjectIndexBuffer: species hlcoord 0, 0 ld bc, SCREEN_WIDTH * SCREEN_HEIGHT xor a @@ -34,25 +38,24 @@ Function2a01f: ; 2a01f jr nz, .kanto decoord 0, 0 ld hl, JohtoGrassWildMons - call Function2a052 + call .FindGrass ld hl, JohtoWaterWildMons - call Function2a06e - call Function2a0b7 - call Function2a0cf + call .FindWater + call .RoamMon1 + call .RoamMon2 ret .kanto decoord 0, 0 ld hl, KantoGrassWildMons - call Function2a052 + call .FindGrass ld hl, KantoWaterWildMons - jp Function2a06e + jp .FindWater ; 2a052 -Function2a052: ; 2a052 -.loop +.FindGrass: ; 2a052 ld a, [hl] - cp $ff + cp -1 ret z push hl ld a, [hli] @@ -62,23 +65,22 @@ Function2a052: ; 2a052 rept 3 inc hl endr - ld a, $15 - call Function2a088 - jr nc, .next + ld a, NUM_WILDMONS_PER_AREA_TIME_OF_DAY * 3 + call .SearchMapForMon + jr nc, .next_grass ld [de], a inc de -.next +.next_grass pop hl - ld bc, $2f + ld bc, WILDMON_GRASS_STRUCTURE_LENGTH add hl, bc - jr .loop + jr .FindGrass ; 2a06e -Function2a06e: ; 2a06e -.loop +.FindWater: ; 2a06e ld a, [hl] - cp $ff + cp -1 ret z push hl ld a, [hli] @@ -86,24 +88,24 @@ Function2a06e: ; 2a06e ld a, [hli] ld c, a inc hl - ld a, $3 - call Function2a088 - jr nc, .next + ld a, 3 + call .SearchMapForMon + jr nc, .next_water ld [de], a inc de -.next +.next_water pop hl - ld bc, 9 + ld bc, 3 * 3 add hl, bc - jr .loop + jr .FindWater ; 2a088 -Function2a088: ; 2a088 +.SearchMapForMon: ; 2a088 inc hl -.loop +.ScanMapLoop push af - ld a, [wd265] + ld a, [wNamedObjectIndexBuffer] cp [hl] jr z, .found rept 2 @@ -111,68 +113,68 @@ rept 2 endr pop af dec a - jr nz, .loop + jr nz, .ScanMapLoop and a ret .found pop af - jp Function2a09c + jp .AppendNest ; 2a09c -Function2a09c: ; 2a09c +.AppendNest: ; 2a09c push de call GetWorldMapLocation ld c, a hlcoord 0, 0 ld de, SCREEN_WIDTH * SCREEN_HEIGHT -.loop +.AppendNestLoop ld a, [hli] cp c - jr z, .found + jr z, .found_nest dec de ld a, e or d - jr nz, .loop + jr nz, .AppendNestLoop ld a, c pop de scf ret -.found +.found_nest pop de and a ret ; 2a0b7 -Function2a0b7: ; 2a0b7 +.RoamMon1: ; 2a0b7 ld a, [wRoamMon1Species] ld b, a - ld a, [wd265] + ld a, [wNamedObjectIndexBuffer] cp b ret nz ld a, [wRoamMon1MapGroup] ld b, a ld a, [wRoamMon1MapNumber] ld c, a - call Function2a09c + call .AppendNest ret nc ld [de], a inc de ret ; 2a0cf -Function2a0cf: ; 2a0cf +.RoamMon2: ; 2a0cf ld a, [wRoamMon2Species] ld b, a - ld a, [wd265] + ld a, [wNamedObjectIndexBuffer] cp b ret nz ld a, [wRoamMon2MapGroup] ld b, a ld a, [wRoamMon2MapNumber] ld c, a - call Function2a09c + call .AppendNest ret nc ld [de], a inc de @@ -209,7 +211,7 @@ TryWildEncounter:: ; 2a0e7 ; 2a111 GetMapEncounterRate: ; 2a111 - ld hl, wd25a + ld hl, wMornEncounterRate call CheckOnWater ld a, 3 jr z, .ok @@ -446,10 +448,10 @@ _SwarmWildmonCheck bit 2, [hl] pop hl jr z, .CheckYanma - ld a, [wdfcc] + ld a, [wDunsparceMapGroup] cp d jr nz, .CheckYanma - ld a, [wdfcd] + ld a, [wDunsparceMapNumber] cp e jr nz, .CheckYanma call LookUpWildmonsForMapDE @@ -463,10 +465,10 @@ _SwarmWildmonCheck bit 3, [hl] pop hl jr z, _NoSwarmWildmon - ld a, [wdc5a] + ld a, [wYanmaMapGroup] cp d jr nz, _NoSwarmWildmon - ld a, [wdc5b] + ld a, [wYanmaMapNumber] cp e jr nz, _NoSwarmWildmon call LookUpWildmonsForMapDE @@ -702,11 +704,11 @@ UpdateRoamMons: ; 2a30d rept 2 add hl, bc endr - ld a, [wdfe7] + ld a, [wRoamMons_LastMapGroup] cp [hl] jr nz, .done inc hl - ld a, [wdfe6] + ld a, [wRoamMons_LastMapNumber] cp [hl] jr z, .update_loop dec hl @@ -787,14 +789,14 @@ JumpRoamMon: ; 2a3cd ; 2a3f6 _BackUpMapIndices: ; 2a3f6 - ld a, [wdfe4] - ld [wdfe6], a - ld a, [wdfe5] - ld [wdfe7], a + ld a, [wRoamMons_CurrentMapNumber] + ld [wRoamMons_LastMapNumber], a + ld a, [wRoamMons_CurrentMapGroup] + ld [wRoamMons_LastMapGroup], a ld a, [MapNumber] - ld [wdfe4], a + ld [wRoamMons_CurrentMapNumber], a ld a, [MapGroup] - ld [wdfe5], a + ld [wRoamMons_CurrentMapGroup], a ret ; 2a40f @@ -892,7 +894,7 @@ endr ld de, StringBuffer1 call CopyName1 ld a, c - ld [wd265], a + ld [wNamedObjectIndexBuffer], a call GetPokemonName ld hl, UnknownText_0x2a51a call PrintText @@ -945,7 +947,7 @@ rept 2 endr inc hl ld a, [hl] - ld [wd265], a + ld [wNamedObjectIndexBuffer], a call GetPokemonName ld hl, StringBuffer1 ld de, StringBuffer4 @@ -1029,7 +1031,7 @@ endr inc hl ; species ld a, BANK(Trainers) call GetFarByte - ld [wd265], a + ld [wNamedObjectIndexBuffer], a call GetPokemonName ld hl, StringBuffer1 ld de, StringBuffer4 |