diff options
Diffstat (limited to 'engine/menu/pc.asm')
-rwxr-xr-x | engine/menu/pc.asm | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/engine/menu/pc.asm b/engine/menu/pc.asm new file mode 100755 index 00000000..a860c4b3 --- /dev/null +++ b/engine/menu/pc.asm @@ -0,0 +1,142 @@ +ActivatePC: ; 17e2c (5:7e2c) + call SaveScreenTilesToBuffer2 ;XXX: copy background from wTileMap to wTileMapBackup2 + ld a, (SFX_02_45 - SFX_Headers_02) / 3 + call PlaySound ;XXX: play sound or stop music + ld hl, TurnedOnPC1Text + call PrintText + call WaitForSoundToFinish ;XXX: wait for sound to be done + ld hl, wFlags_0xcd60 + set 3, [hl] + call LoadScreenTilesFromBuffer2 ;XXX: restore saved screen + call Delay3 +PCMainMenu: ; 17e48 (5:7e48) + callba Func_213c8 + ld hl, wFlags_0xcd60 + set 5, [hl] + call HandleMenuInput + bit 1, a ;if player pressed B + jp nz, LogOff + ld a, [wMaxMenuItem] + cp a, 2 + jr nz, .next ;if not 2 menu items (not counting log off) (2 occurs before you get the pokedex) + ld a, [wCurrentMenuItem] + and a + jp z, BillsPC ;if current menu item id is 0, it's bills pc + cp a, 1 + jr z, .playersPC ;if current menu item id is 1, it's players pc + jp LogOff ;otherwise, it's 2, and you're logging off +.next + cp a, 3 + jr nz, .next2 ;if not 3 menu items (not counting log off) (3 occurs after you get the pokedex, before you beat the pokemon league) + ld a, [wCurrentMenuItem] + and a + jp z, BillsPC ;if current menu item id is 0, it's bills pc + cp a, 1 + jr z, .playersPC ;if current menu item id is 1, it's players pc + cp a, 2 + jp z, OaksPC ;if current menu item id is 2, it's oaks pc + jp LogOff ;otherwise, it's 3, and you're logging off +.next2 + ld a, [wCurrentMenuItem] + and a + jp z, BillsPC ;if current menu item id is 0, it's bills pc + cp a, 1 + jr z, .playersPC ;if current menu item id is 1, it's players pc + cp a, 2 + jp z, OaksPC ;if current menu item id is 2, it's oaks pc + cp a, 3 + jp z, PKMNLeague ;if current menu item id is 3, it's pkmnleague + jp LogOff ;otherwise, it's 4, and you're logging off +.playersPC + ld hl, wFlags_0xcd60 + res 5, [hl] + set 3, [hl] + ld a, (SFX_02_47 - SFX_Headers_02) / 3 + call PlaySound ;XXX: play sound or stop music + call WaitForSoundToFinish ;XXX: wait for sound to be done + ld hl, AccessedMyPCText + call PrintText + callba PlayerPC + jr ReloadMainMenu +OaksPC: ; 17ec0 (5:7ec0) + ld a, (SFX_02_47 - SFX_Headers_02) / 3 + call PlaySound ;XXX: play sound or stop music + call WaitForSoundToFinish ;XXX: wait for sound to be done + callba OpenOaksPC + jr ReloadMainMenu +PKMNLeague: ; 17ed2 (5:7ed2) + ld a, (SFX_02_47 - SFX_Headers_02) / 3 + call PlaySound ;XXX: play sound or stop music + call WaitForSoundToFinish ;XXX: wait for sound to be done + callba PKMNLeaguePC + jr ReloadMainMenu +BillsPC: ; 17ee4 (5:7ee4) + ld a, (SFX_02_47 - SFX_Headers_02) / 3 + call PlaySound ;XXX: play sound or stop music + call WaitForSoundToFinish ;XXX: wait for sound to be done + ld a, [$D7F1] ;has to do with having met Bill + bit 0, a + jr nz, .billsPC ;if you've met bill, use that bill's instead of someone's + ld hl, AccessedSomeonesPCText + jr .printText +.billsPC + ld hl, AccessedBillsPCText +.printText + call PrintText + callba BillsPC_ +ReloadMainMenu: ; 17f06 (5:7f06) + xor a + ld [$CC3C], a + call ReloadMapData + call UpdateSprites ;XXX: moves sprites + jp PCMainMenu +LogOff: ; 17f13 (5:7f13) + ld a, (SFX_02_46 - SFX_Headers_02) / 3 + call PlaySound ;XXX: play sound or stop music + call WaitForSoundToFinish ;XXX: wait for sound to be done + ld hl, wFlags_0xcd60 + res 3, [hl] + res 5, [hl] + ret + +TurnedOnPC1Text: ; 17f23 (5:7f23) + TX_FAR _TurnedOnPC1Text + db "@" + +AccessedBillsPCText: ; 17f28 (5:7f28) + TX_FAR _AccessedBillsPCText + db "@" + +AccessedSomeonesPCText: ; 17f2d (5:7f2d) + TX_FAR _AccessedSomeonesPCText + db "@" + +AccessedMyPCText: ; 17f32 (5:7f32) + TX_FAR _AccessedMyPCText + db "@" + +; removes one of the specified item ID [$FFdb] from bag (if existent) +RemoveItemByID: ; 17f37 (5:7f37) + ld hl, wBagItems ; $d31e + ld a, [$ffdb] + ld b, a + xor a + ld [$ffdc], a +.asm_17f40 + ld a, [hli] + cp $ff + ret z + cp b + jr z, .asm_17f4f + inc hl + ld a, [$ffdc] + inc a + ld [$ffdc], a + jr .asm_17f40 +.asm_17f4f + ld a, $1 + ld [$cf96], a + ld a, [$ffdc] + ld [wWhichPokemon], a ; $cf92 + ld hl, wNumBagItems ; $d31d + jp RemoveItemFromInventory |