diff options
Diffstat (limited to 'engine/cable_club.asm')
-rwxr-xr-x | engine/cable_club.asm | 960 |
1 files changed, 960 insertions, 0 deletions
diff --git a/engine/cable_club.asm b/engine/cable_club.asm new file mode 100755 index 00000000..3b1cbedd --- /dev/null +++ b/engine/cable_club.asm @@ -0,0 +1,960 @@ +Func_5317: ; 5317 (1:5317) + ld c, $50 + call DelayFrames + call ClearScreen + call UpdateSprites + call LoadFontTilePatterns + call LoadHpBarAndStatusTilePatterns + call LoadTrainerInfoTextBoxTiles + FuncCoord 3, 8 ; $c443 + ld hl, Coord + ld b, $2 + ld c, $c + call Func_5ab3 + FuncCoord 4, 10 ; $c46c + ld hl, Coord + ld de, PleaseWaitString ; $550f + call PlaceString + ld hl, W_NUMHITS ; $d074 + xor a + ld [hli], a + ld [hl], $50 + +Func_5345: ; 5345 + ld hl, $d152 + ld a, $fd + ld b, $6 +.asm_534c + ld [hli], a + dec b + jr nz, .asm_534c + ld hl, $d141 + ld a, $fd + ld b, $7 +.asm_5357 + ld [hli], a + dec b + jr nz, .asm_5357 + ld b, $a +.asm_535d + call GenRandom + cp $fd + jr nc, .asm_535d + ld [hli], a + dec b + jr nz, .asm_535d + ld hl, wTileMapBackup + ld a, $fd + ld [hli], a + ld [hli], a + ld [hli], a + ld b, $c8 + xor a +.asm_5373 + ld [hli], a + dec b + jr nz, .asm_5373 + ld hl, W_GRASSRATE ; $d887 + ld bc, $1a9 +.asm_537d + xor a + ld [hli], a + dec bc + ld a, b + or c + jr nz, .asm_537d + ld hl, W_PARTYMONEND ; $d16a + ld de, $c512 + ld bc, $0 +.asm_538d + inc c + ld a, c + cp $fd + jr z, .asm_53a9 + ld a, b + dec a + jr nz, .asm_539c + ld a, c + cp $d + jr z, .asm_53b2 +.asm_539c + inc hl + ld a, [hl] + cp $fe + jr nz, .asm_538d + ld a, c + ld [de], a + inc de + ld [hl], $ff + jr .asm_538d +.asm_53a9 + ld a, $ff + ld [de], a + inc de + ld bc, $100 + jr .asm_538d +.asm_53b2 + ld a, $ff + ld [de], a + call Func_227f + ld a, [$ffaa] + cp $2 + jr nz, .asm_53d2 + call Delay3 + xor a + ld [$ffac], a + ld a, $81 + ld [$ff02], a + call DelayFrame + xor a + ld [$ffac], a + ld a, $81 + ld [$ff02], a +.asm_53d2 + call Delay3 + ld a, $8 + ld [rIE], a ; $ffff + ld hl, $d141 + ld de, wTileMapBackup2 + ld bc, $11 + call Func_216f + ld a, $fe + ld [de], a + ld hl, $d152 + ld de, $d893 + ld bc, $1a8 + call Func_216f + ld a, $fe + ld [de], a + ld hl, wTileMapBackup + ld de, $c5d0 + ld bc, $c8 + call Func_216f + ld a, $d + ld [rIE], a ; $ffff + ld a, $ff + call PlaySound + ld a, [$ffaa] + cp $2 + jr z, .asm_5431 + ld hl, wTileMapBackup2 +.asm_5415 + ld a, [hli] + and a + jr z, .asm_5415 + cp $fd + jr z, .asm_5415 + cp $fe + jr z, .asm_5415 + dec hl + ld de, $d148 + ld c, $a +.asm_5427 + ld a, [hli] + cp $fe + jr z, .asm_5427 + ld [de], a + inc de + dec c + jr nz, .asm_5427 +.asm_5431 + ld hl, $d896 +.asm_5434 + ld a, [hli] + and a + jr z, .asm_5434 + cp $fd + jr z, .asm_5434 + cp $fe + jr z, .asm_5434 + dec hl + ld de, W_GRASSRATE ; $d887 + ld c, $b +.asm_5446 + ld a, [hli] + cp $fe + jr z, .asm_5446 + ld [de], a + inc de + dec c + jr nz, .asm_5446 + ld de, wEnemyPartyCount ; $d89c + ld bc, $194 +.asm_5456 + ld a, [hli] + cp $fe + jr z, .asm_5456 + ld [de], a + inc de + dec bc + ld a, b + or c + jr nz, .asm_5456 + ld de, wTileMapBackup + ld hl, W_PARTYMON1_NUM ; $d16b (aliases: W_PARTYMON1DATA) + ld c, $2 +.asm_546a + ld a, [de] + inc de + and a + jr z, .asm_546a + cp $fd + jr z, .asm_546a + cp $fe + jr z, .asm_546a + cp $ff + jr z, .asm_5489 + push hl + push bc + ld b, $0 + dec a + ld c, a + add hl, bc + ld a, $fe + ld [hl], a + pop bc + pop hl + jr .asm_546a +.asm_5489 + ld hl, W_PARTYMON6DATA + W_PARTYMON1_MOVE4PP - W_PARTYMON1DATA ; $d267 + dec c + jr nz, .asm_546a + ld de, $c5d0 + ld hl, W_WATERRATE ; $d8a4 + ld c, $2 +.asm_5497 + ld a, [de] + inc de + and a + jr z, .asm_5497 + cp $fd + jr z, .asm_5497 + cp $fe + jr z, .asm_5497 + cp $ff + jr z, .asm_54b6 + push hl + push bc + ld b, $0 + dec a + ld c, a + add hl, bc + ld a, $fe + ld [hl], a + pop bc + pop hl + jr .asm_5497 +.asm_54b6 + ld hl, $d9a0 + dec c + jr nz, .asm_5497 + ld a, $ac + ld [$cf8d], a + ld a, $d9 + ld [$cf8e], a + xor a + ld [$cc38], a + ld a, $ff + call PlaySound + ld a, [$ffaa] + cp $2 + ld c, $42 + call z, DelayFrames + ld a, [W_ISLINKBATTLE] ; $d12b + cp $3 + ld a, $32 + ld [W_ISLINKBATTLE], a ; $d12b + jr nz, .asm_5506 + ld a, $4 + ld [W_ISLINKBATTLE], a ; $d12b + ld a, SONY1 + $c8 + ld [W_CUROPPONENT], a ; $d059 + call ClearScreen + call Delay3 + ld hl, W_OPTIONS ; $d355 + res 7, [hl] + ld a, $2c + call Predef ; indirect jump to InitOpponent (3ef18 (f:6f18)) + ld a, $7 + call Predef ; indirect jump to HealParty (f6a5 (3:76a5)) + jp Func_577d +.asm_5506 + ld c, BANK(Music_GameCorner) + ld a, MUSIC_GAME_CORNER + call PlayMusic + jr Func_551c + +PleaseWaitString: ; 550f (1:550f) + db "PLEASE WAIT!@" + +Func_551c: + ld hl, PointerTable_5a5b ; $5a5b + ld b, $0 + ld a, [$cc38] + cp $ff + jp z, LoadTitlescreenGraphics + add a + ld c, a + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] + +TradeCenter_SelectMon: + call ClearScreen + call LoadTrainerInfoTextBoxTiles + call Func_57f2 + call Func_57a2 + xor a + ld hl, $cc3d + ld [hli], a + ld [hli], a + ld [hli], a + ld [hl], a + ld [$cc37], a + ld [$cc26], a + ld [$cc2a], a + ld [$cc34], a + inc a + ld [$cc42], a + jp .asm_55dc +.asm_5557 + xor a + ld [$cc37], a + inc a + ld [$cc49], a + ld a, $a1 + ld [$cc29], a + ld a, [$d89c] + ld [$cc28], a + ld a, $9 + ld [$cc24], a + ld a, $1 + ld [$cc25], a +.asm_5574 + ld hl, $fff6 + set 1, [hl] + call HandleMenuInput + ld hl, $fff6 + res 1, [hl] + and a + jp z, .asm_565b + bit 0, a + jr z, .asm_55b0 ; 0x5587 $27 + ld a, [$cc28] + ld c, a + ld a, [$cc26] + cp c + jr c, .asm_559a ; 0x5591 $7 + ld a, [$cc28] + dec a + ld [$cc26], a +.asm_559a + ld a, $1 + ld [$d11b], a + callab Func_39bd5 + ld hl, wEnemyMons + call Func_57d6 + jp .asm_565b +.asm_55b0 + bit 5, a + jr z, .asm_55d4 ; 0x55b2 $20 + xor a + ld [$cc49], a + ld a, [$cc30] + ld l, a + ld a, [$cc31] + ld h, a + ld a, [$cc27] + ld [hl], a + ld a, [$cc26] + ld b, a + ld a, [$d163] + dec a + cp b + jr nc, .asm_55dc ; 0x55cd $d + ld [$cc26], a + jr .asm_55dc ; 0x55d2 $8 +.asm_55d4 + bit 7, a + jp z, .asm_565b + jp .asm_572f +.asm_55dc + xor a + ld [$cc49], a + ld [$cc37], a + ld a, $91 + ld [$cc29], a + ld a, [$d163] + ld [$cc28], a + ld a, $1 + ld [$cc24], a + ld a, $1 + ld [$cc25], a + ld hl, $c3b5 + ld bc, $0601 + call ClearScreenArea +.asm_5601 + ld hl, $fff6 + set 1, [hl] + call HandleMenuInput + ld hl, $fff6 + res 1, [hl] + and a + jr nz, .asm_5614 ; 0x560f $3 + jp .asm_565b +.asm_5614 + bit 0, a + jr z, .asm_562e ; 0x5616 $16 + jp .asm_5665 + ld a, $4 + ld [$d11b], a + callab Func_39bd5 + call Func_57d6 + jp .asm_565b +.asm_562e + bit 4, a + jr z, .asm_5654 ; 0x5630 $22 + ld a, $1 + ld [$cc49], a + ld a, [$cc30] + ld l, a + ld a, [$cc31] + ld h, a + ld a, [$cc27] + ld [hl], a + ld a, [$cc26] + ld b, a + ld a, [$d89c] + dec a + cp b + jr nc, .asm_5651 ; 0x564c $3 + ld [$cc26], a +.asm_5651 + jp .asm_5557 +.asm_5654 + bit 7, a + jr z, .asm_565b ; 0x5656 $3 + jp .asm_572f +.asm_565b + ld a, [$cc49] + and a + jp z, .asm_5601 + jp .asm_5574 +.asm_5665 + call SaveScreenTilesToBuffer1 + call PlaceUnfilledArrowMenuCursor + ld a, [$cc28] + ld c, a + ld a, [$cc26] + cp c + jr c, .asm_5679 ; 0x5673 $4 + ld a, [$cc28] + dec a +.asm_5679 + push af + ld hl, $c4b8 + ld b, $2 + ld c, $12 + call Func_5ab3 + ld hl, $c4e2 + ld de, .statsTrade + call PlaceString + xor a + ld [$cc26], a + ld [$cc2a], a + ld [$cc34], a + ld [$cc28], a + ld a, $10 + ld [$cc24], a +.asm_569f + ld a, $7f + ld [$c4eb], a + ld a, $13 + ld [$cc29], a + ld a, $1 + ld [$cc25], a + call HandleMenuInput + bit 4, a + jr nz, .asm_56c3 ; 0x56b3 $e + bit 1, a + jr z, .asm_56df ; 0x56b7 $26 +.asm_56b9 + pop af + ld [$cc26], a + call LoadScreenTilesFromBuffer1 + jp .asm_55dc +.asm_56c3 + ld a, $7f + ld [$c4e1], a + ld a, $23 + ld [$cc29], a + ld a, $b + ld [$cc25], a + call HandleMenuInput + bit 5, a + jr nz, .asm_569f ; 0x56d7 $c6 + bit 1, a + jr nz, .asm_56b9 ; 0x56db $dc + jr .asm_56f9 ; 0x56dd $1a +.asm_56df + pop af + ld [$cc26], a + ld a, $4 + ld [$d11b], a + callab Func_39bd5 + call Func_57d6 + call LoadScreenTilesFromBuffer1 + jp .asm_55dc +.asm_56f9 + call PlaceUnfilledArrowMenuCursor + pop af + ld [$cc26], a + ld [$cd3d], a + ld [$cc42], a + call Func_226e + ld a, [$cc3d] + cp $f + jp z, Func_551c + ld [$cd3e], a + call Func_57c7 + ld a, $1 + ld [$cc38], a + jp Func_551c +.statsTrade + db "STATS TRADE@" +.asm_572f + ld a, [$cc26] + ld b, a + ld a, [$cc28] + cp b + jp nz, .asm_565b + ld a, [$cc30] + ld l, a + ld a, [$cc31] + ld h, a + ld a, $7f + ld [hl], a +.asm_5745 + ld a, $ed + ld [$c4e1], a +.asm_574a + call GetJoypadStateLowSensitivity + ld a, [$ffb5] + and a + jr z, .asm_574a ; 0x5750 $f8 + bit 0, a + jr nz, .asm_5769 ; 0x5754 $13 + bit 6, a + jr z, .asm_574a ; 0x5758 $f0 + ld a, $7f + ld [$c4e1], a + ld a, [$d163] + dec a + ld [$cc26], a + jp .asm_55dc +.asm_5769 + ld a, $ec + ld [$c4e1], a + ld a, $f + ld [$cc42], a + call Func_226e + ld a, [$cc3d] + cp $f + jr nz, .asm_5745 ; 0x577b $c8 + +Func_577d: ; 577d (1:577d) + call GBPalWhiteOutWithDelay3 + ld hl, $cfc4 + ld a, [hl] + push af + push hl + res 0, [hl] + xor a + ld [$d72d], a + dec a + ld [$d42f], a + call LoadMapData + callba Func_c335 + pop hl + pop af + ld [hl], a + call GBFadeIn2 + ret + +Func_57a2: + ld hl, $c4d7 + ld a, $7e + ld bc, $0031 + call FillMemory + ld hl, $c4cc + ld b, $1 + ld c, $9 + call Func_5ab3 + ld hl, $c4e2 + ld de, CancelTextString + jp PlaceString + +CancelTextString: + db "CANCEL@" + +Func_57c7: + ld a, [$cc3d] + ld hl, $c455 + ld bc, $0014 + call AddNTimes + ld [hl], $ec + ret + +Func_57d6: + ld a, [$cc26] + ld [wWhichPokemon], a + ld a, $36 + call Predef + ld a, $37 + call Predef + call GBPalNormal + call LoadTrainerInfoTextBoxTiles + call Func_57f2 + jp Func_57a2 + +Func_57f2: + ld hl, wTileMap + ld b, $6 + ld c, $12 + call Func_5ab3 + ld hl, $c440 + ld b, $6 + ld c, $12 + call Func_5ab3 + ld hl, $c3a5 + ld de, W_PLAYERNAME + call PlaceString + ld hl, $c445 + ld de, $d887 + call PlaceString + ld hl, $c3b6 + ld de, $d164 + call Func_5827 + ld hl, $c456 + ld de, $d89d + +Func_5827: + ld c, $0 +.asm_5829 + ld a, [de] + cp $ff + ret z + ld [$d11e], a + push bc + push hl + push de + push hl + ld a, c + ld [$ff95], a + call GetMonName + pop hl + call PlaceString + pop de + inc de + pop hl + ld bc, $0014 + add hl, bc + pop bc + inc c + jr .asm_5829 ; 0x5847 $e0 + +TradeCenter_Trade: + ld c, $64 + call DelayFrames + xor a + ld [$cc43], a + ld [$cc3e], a + ld [$cc37], a + ld [$cc34], a + ld hl, $c490 + ld b, $4 + ld c, $12 + call Func_5ab3 + ld a, [$cd3d] + ld hl, $d164 + ld c, a + ld b, $0 + add hl, bc + ld a, [hl] + ld [$d11e], a + call GetMonName + ld hl, $cd6d + ld de, $cd3f + ld bc, $000b + call CopyData + ld a, [$cd3e] + ld hl, $d89d + ld c, a + ld b, $0 + add hl, bc + ld a, [hl] + ld [$d11e], a + call GetMonName + ld hl, WillBeTradedText + ld bc, $c4b9 + call TextCommandProcessor + call SaveScreenTilesToBuffer1 + ld hl, $c436 + ld bc, $080b + ld a, $5 + ld [$d12c], a + ld a, $14 + ld [$d125], a + call DisplayTextBoxID + call LoadScreenTilesFromBuffer1 + ld a, [$cc26] + and a + jr z, .asm_58d9 ; 0x58b9 $1e + ld a, $1 + ld [$cc42], a + ld hl, $c490 + ld b, $4 + ld c, $12 + call Func_5ab3 + ld hl, $c4b9 + ld de, TradeCanceled + call PlaceString + call Func_226e + jp Func_5a18 +.asm_58d9 + ld a, $2 + ld [$cc42], a + call Func_226e + ld a, [$cc3d] + dec a + jr nz, .asm_58fd ; 0x58e5 $16 + ld hl, $c490 + ld b, $4 + ld c, $12 + call Func_5ab3 + ld hl, $c4b9 + ld de, TradeCanceled + call PlaceString + jp Func_5a18 +.asm_58fd + ld a, [$cd3d] + ld hl, W_PARTYMON1OT ; OT names of player + call SkipFixedLengthTextEntries + ld de, $cd41 + ld bc, $000b + call CopyData + ld hl, $d16b + ld a, [$cd3d] + ld bc, $002c + call AddNTimes + ld bc, $000c + add hl, bc + ld a, [hli] + ld [$cd4c], a + ld a, [hl] + ld [$cd4d], a + ld a, [$cd3e] + ld hl, W_ENEMYMON1OT ; OT names of other player + call SkipFixedLengthTextEntries + ld de, $cd4e + ld bc, $000b + call CopyData + ld hl, wEnemyMons + ld a, [$cd3e] + ld bc, $002c + call AddNTimes + ld bc, $000c + add hl, bc + ld a, [hli] + ld [$cd59], a + ld a, [hl] + ld [$cd5a], a + ld a, [$cd3d] + ld [wWhichPokemon], a + ld hl, $d164 + ld b, $0 + ld c, a + add hl, bc + ld a, [hl] + ld [$cd3d], a + xor a + ld [$cf95], a + call RemovePokemon + ld a, [$cd3e] + ld c, a + ld [wWhichPokemon], a + ld hl, $d89d + ld d, $0 + ld e, a + add hl, de + ld a, [hl] + ld [$cf91], a + ld hl, wEnemyMons + ld a, c + ld bc, $002c + call AddNTimes + ld de, $cf98 + ld bc, $002c + call CopyData + call AddEnemyMonToPlayerParty + ld a, [$d163] + dec a + ld [wWhichPokemon], a + ld a, $1 + ld [$ccd4], a + ld a, [$cd3e] + ld hl, $d89d + ld b, $0 + ld c, a + add hl, bc + ld a, [hl] + ld [$cd3e], a + ld a, $a + ld [wMusicHeaderPointer], a + ld a, $2 + ld [$c0f0], a + ld a, MUSIC_SAFARI_ZONE + ld [$c0ee], a + call PlaySound + ld c, $64 + call DelayFrames + call ClearScreen + call LoadHpBarAndStatusTilePatterns + xor a + ld [$cc5b], a + ld a, [$ffaa] + cp $1 + jr z, .asm_59d9 ; 0x59d0 $7 + ld a, $38 + call Predef + jr .asm_59de ; 0x59d7 $5 +.asm_59d9 + ld a, $2f + call Predef +.asm_59de + callab Func_3ad0e + call ClearScreen + call LoadTrainerInfoTextBoxTiles + call Func_226e + ld c, $28 + call DelayFrames + ld hl, $c490 + ld b, $4 + ld c, $12 + call Func_5ab3 + ld hl, $c4b9 + ld de, TradeCompleted + call PlaceString + ld a, $50 + call Predef + ld c, $32 + call DelayFrames + xor a + ld [$cc38], a + jp Func_5345 + +Func_5a18: + ld c, $64 + call DelayFrames + xor a + ld [$cc38], a + jp Func_551c + +WillBeTradedText: ; 5a24 (1:5a24) + TX_FAR _WillBeTradedText + db "@" + +TradeCompleted: + db "Trade completed!@" + +TradeCanceled: + db "Too bad! The trade" + next "was canceled!@" + +PointerTable_5a5b: ; 5a5b (1:5a5b) + dw TradeCenter_SelectMon + dw TradeCenter_Trade + +Func_5a5f: ; 5a5f (1:5a5f) + ld a, [W_ISLINKBATTLE] ; $d12b + cp $2 + jr z, .asm_5a75 + cp $3 + jr z, .asm_5a75 + cp $5 + ret nz + ld a, $4d + call Predef ; indirect jump to Func_5aaf (5aaf (1:5aaf)) + jp InitGame +.asm_5a75 + call Func_5317 + ld hl, Club_GFX + ld a, h + ld [$d52f], a + ld a, l + ld [$d52e], a + ld a, Bank(Club_GFX) + ld [$d52b], a + ld hl, Club_Coll + ld a, h + ld [$d531], a + ld a, l + ld [$d530], a + xor a + ld [W_GRASSRATE], a ; $d887 + inc a + ld [W_ISLINKBATTLE], a ; $d12b + ld [$ffb5], a + ld a, $a + ld [wMusicHeaderPointer], a + ld a, BANK(Music_Celadon) + ld [$c0f0], a + ld a, MUSIC_CELADON + ld [$c0ee], a + jp PlaySound + +Func_5aaf: ; 5aaf (1:5aaf) + ret + +Func_5ab0: + call Load16BitRegisters + +Func_5ab3: ; 5ab3 (1:5ab3) + push hl + ld a, $78 + ld [hli], a + inc a + call Func_5ae0 + inc a + ld [hl], a + pop hl + ld de, $14 + add hl, de +.asm_5ac2 + push hl + ld a, $7b + ld [hli], a + ld a, $7f + call Func_5ae0 + ld [hl], $77 + pop hl + ld de, $14 + add hl, de + dec b + jr nz, .asm_5ac2 + ld a, $7c + ld [hli], a + ld a, $76 + call Func_5ae0 + ld [hl], $7d + ret + +Func_5ae0: ; 5ae0 (1:5ae0) + ld d, c +.asm_5ae1 + ld [hli], a + dec d + jr nz, .asm_5ae1 + ret |