From a78bf961bf7862684cc6d12a3cbf624727ff9408 Mon Sep 17 00:00:00 2001 From: anmart Date: Fri, 26 Feb 2016 15:56:01 -0500 Subject: disassembled and Annotated attack functions disassembled function that overwrites some data if the card passed as an argument is a fossil or doll. annotated several functions --- src/constants/card_data_constants.asm | 3 ++ src/engine/bank1.asm | 62 ++++++++++++++++++++++++++++-- src/engine/bank6.asm | 2 +- src/engine/home.asm | 72 ++++++++++++++++++----------------- src/wram.asm | 2 +- 5 files changed, 101 insertions(+), 40 deletions(-) diff --git a/src/constants/card_data_constants.asm b/src/constants/card_data_constants.asm index 6ea7a74..80051bd 100644 --- a/src/constants/card_data_constants.asm +++ b/src/constants/card_data_constants.asm @@ -88,3 +88,6 @@ FLAG_2_BIT_7 EQU %10000000 ; bits 2-7 are unused BOOST_IF_TAKEN_DAMAGE EQU %00000001 FLAG_3_BIT_1 EQU %00000010 + +;;; special retreat values +UNABLE_RETREAT EQU $64 diff --git a/src/engine/bank1.asm b/src/engine/bank1.asm index 5577cf3..35a6e9a 100755 --- a/src/engine/bank1.asm +++ b/src/engine/bank1.asm @@ -509,7 +509,7 @@ OpenBattleAttackMenu: ; 46fc (1:46fc) ld h, a ld l, DUELVARS_ARENA_CARD ld a, [hl] - call Func_1376 + call LoadDeckCardToBuffer1 .asm_4736 call DoFrame @@ -661,7 +661,7 @@ LoadPokemonAttacksToDuelPointerTable: ; 4823 (1:4823) ld a, DUELVARS_ARENA_CARD call GetTurnDuelistVariable ldh [$ff98], a - call Func_1376 + call LoadDeckCardToBuffer1 ld c, $00 ld b, $0d ld hl, DuelAttackPointerTable @@ -787,7 +787,63 @@ LoadPlayerDeck: ; 6793 (1:6793) ret ; 0x67b2 -INCBIN "baserom.gbc",$67b2,$7107 - $67b2 +INCBIN "baserom.gbc",$67b2,$6d84 - $67b2 + +ConvertItemToPokemon: + ld c, a + ld a, [hl] + cp TRAINER_CARD + ret nz + push hl + ldh a, [hWhoseTurn] + ld h, a + ld l, c + ld a, [hl] + and $10 + pop hl + ret z + ld a, e + cp $cc + jr nz, .checkForClefairyDoll + ld a, d + cp $00 + jr z, .startRamDataOverwrite + ret +.checkForClefairyDoll + cp $cb + ret nz + ld a, d + cp $00 + ret nz +.startRamDataOverwrite + push de + ld [hl], $06 + ld bc, wCardBuffer1HP - wCardBuffer1 + add hl, bc + ld de, $6db9 + ld c, wCardBuffer1Unknown2 - wCardBuffer1HP +.loop + ld a, [de] + inc de + ld [hli], a + dec c + jr nz, .loop + pop de + ret + +.dataToOverwrite + db $0a ; hp + ds $07 + dw $0030 ; move1 name + dw $0041 ; move1 description + ds $03 + db $04 ; move1 category + dw $4e35 ; move1 effect commands + ds $18 + db UNABLE_RETREAT ; retreat cost + ds $0d + +INCBIN "baserom.gbc",$6df1,$7107 - $6df1 ; initializes duel variables such as cards in deck and in hand, or Pokemon in play area ; player turn: [c200, c2ff] diff --git a/src/engine/bank6.asm b/src/engine/bank6.asm index 02b2839..8fb9996 100755 --- a/src/engine/bank6.asm +++ b/src/engine/bank6.asm @@ -145,7 +145,7 @@ Func_1a61f: ; 1a61f (6:661f) push hl ld e, a ld d, $0 - call LoadCardDataToRAM + call LoadCardDataToBuffer1 call Func_379b ld a, MUSIC_MEDAL call PlaySong diff --git a/src/engine/home.asm b/src/engine/home.asm index 18e8b4d..d29ffaa 100755 --- a/src/engine/home.asm +++ b/src/engine/home.asm @@ -2177,13 +2177,13 @@ Func_100b: ; 100b (0:100b) push hl ld a, DUELVARS_ARENA_CARD call GetTurnDuelistVariable - call Func_1324 + call LoadDeckCardToDE ld a, e ld [wccc3], a call GetOpposingTurnDuelistVariable_SwapTurn ld a, DUELVARS_ARENA_CARD call GetTurnDuelistVariable - call Func_1324 + call LoadDeckCardToDE ld a, e ld [wccc4], a call GetOpposingTurnDuelistVariable_SwapTurn @@ -2375,10 +2375,10 @@ ShuffleCards: ; 127f (0:127f) INCBIN "baserom.gbc",$12a3,$1324 - $12a3 -Func_1324: ; 1324 (0:1324) +LoadDeckCardToDE: ; 1324 (0:1324) push af push hl - call Func_1362 + call GetDeckCard ld e, a ld d, $0 pop hl @@ -2388,47 +2388,48 @@ Func_1324: ; 1324 (0:1324) INCBIN "baserom.gbc",$132f,$1362 - $132f -Func_1362: ; 1362 (0:1362) +; gets card a from the deck stored in $ff97 +GetDeckCard: ; 1362 (0:1362) push de ld e, a ld d, $0 ld hl, wPlayerDeck ld a, [$ff97] cp $c2 - jr z, .asm_1372 + jr z, .loadCardFromDeck ld hl, wOpponentDeck -.asm_1372 +.loadCardFromDeck add hl, de ld a, [hl] pop de ret -Func_1376: ; 1376 (0:1376) +LoadDeckCardToBuffer1: ; 1376 (0:1376) push hl push de push bc push af - call Func_1324 - call LoadCardDataToRAM + call LoadDeckCardToDE + call LoadCardDataToBuffer1 pop af ld hl, wCardBuffer1 - bank1call $6d84 + bank1call ConvertItemToPokemon ld a, e pop bc pop de pop hl ret -Func_138c: ; 138c (0:138c) +LoadDeckCardToBuffer2: ; 138c (0:138c) push hl push de push bc push af - call Func_1324 - call Func_2f0a + call LoadDeckCardToDE + call LoadCardDataToBuffer2 pop af ld hl, wCardBuffer2 - bank1call $6d84 + bank1call ConvertItemToPokemon ld a, e pop bc pop de @@ -2448,7 +2449,7 @@ Func_15ef: ; 15ef (0:15ef) jr nz, .asm_1602 ld a, l push hl - call Func_1362 + call GetDeckCard cp e pop hl jr nz, .asm_1602 @@ -2492,7 +2493,7 @@ Func_16c0: ; 16c0 (0:16c0) ld [wccc6], a ld a, d ld [$ff9f], a - call Func_1376 + call LoadDeckCardToBuffer1 ld a, [$cc2b] ld [wccc2], a ld hl, $cc30 @@ -2523,13 +2524,13 @@ Func_16f6: ; 16f6 (0:16f6) ld a, DUELVARS_ARENA_CARD call GetTurnDuelistVariable ld [$ff9f], a - call Func_1324 + call LoadDeckCardToDE ld a, e ld [wccc3], a call GetOpposingTurnDuelistVariable_SwapTurn ld a, DUELVARS_ARENA_CARD call GetTurnDuelistVariable - call Func_1324 + call LoadDeckCardToDE ld a, e ld [wccc4], a call GetOpposingTurnDuelistVariable_SwapTurn @@ -2995,7 +2996,7 @@ Func_1aac: ; 1aac (0:1aac) ld a, e add DUELVARS_ARENA_CARD call GetTurnDuelistVariable - call Func_1376 + call LoadDeckCardToBuffer1 ld a, [wCardBuffer1ID] ld [wccc4], a call Func_1ad3 @@ -3011,7 +3012,7 @@ Func_1ad0: ; 1ad0 (0:1ad0) Func_1ad3: ; 1ad3 (0:1ad3) ld a, [wccc4] ld e, a - call LoadCardDataToRAM + call LoadCardDataToBuffer1 ld hl, $cc27 ld a, [hli] ld h, [hl] @@ -3034,7 +3035,7 @@ Func_1b8d: ; 1b8d (0:1b8d) bank1call $4f9d ld a, DUELVARS_ARENA_CARD call GetTurnDuelistVariable - call Func_1376 + call LoadDeckCardToBuffer1 ld a, $12 call Func_29f5 ld [hl], $0 @@ -3070,7 +3071,7 @@ Func_1bca: ; 1bca (0:1bca) ld a, [$ff9d] add DUELVARS_ARENA_CARD call GetTurnDuelistVariable - call Func_1376 + call LoadDeckCardToBuffer1 ld a, $12 call Func_29f5 ld [hl], $0 @@ -5171,16 +5172,17 @@ Func_2ec4: ; 2ec4 (0:2ec4) INCBIN "baserom.gbc",$2ecd,$2f0a - $2ecd -Func_2f0a: ; 2f0a (0:2f0a) +; load data of card with id at e to wCardBuffer1 or wCardBuffer2 +LoadCardDataToBuffer2: ; 2f0a (0:2f0a) push hl ld hl, wCardBuffer2 - jr Func_2f14 + jr LoadCardDataToRAM -; load data of card with id at e to wCardBuffer1 -LoadCardDataToRAM: ; 2f10 (0:2f10) +LoadCardDataToBuffer1: ; 2f10 (0:2f10) push hl ld hl, wCardBuffer1 -Func_2f14: ; 2f14 (0:2f14) + +LoadCardDataToRAM: ; 2f14 (0:2f14) push de push bc push hl @@ -5986,7 +5988,7 @@ Func_3432: ; 3432 (0:3432) ld a, [wccc3] ld e, a ld d, $0 - call Func_2f0a + call LoadCardDataToBuffer2 ld a, [wCardBuffer2Stage] or a ret z @@ -6078,7 +6080,7 @@ Func_3525: ; 3525 (0:3525) call GetTurnDuelistVariable cp $ff jr z, .asm_3549 - call Func_1324 + call LoadDeckCardToDE ld a, [wce7c] cp e jr nz, .asm_3549 @@ -6094,7 +6096,7 @@ Func_3525: ; 3525 (0:3525) ld a, [hli] cp $ff jr z, .asm_3560 - call Func_1324 + call LoadDeckCardToDE ld a, [wce7c] cp e jr nz, .asm_355d @@ -6177,7 +6179,7 @@ Func_36a2: ; 36a2 (0:36a2) ld a, [wccc3] ld e, a ld d, $0 - call Func_2f0a + call LoadCardDataToBuffer2 ld hl, $cc68 ld a, [hli] ld h, [hl] @@ -6220,7 +6222,7 @@ Func_36f7: ; 36f7 (0:36f7) ld a, e add DUELVARS_ARENA_CARD call GetTurnDuelistVariable - call Func_1324 + call LoadDeckCardToDE call Func_2f32 cp $10 jr nz, .asm_3715 @@ -6251,7 +6253,7 @@ Func_3730: ; 3730 (0:3730) ret nz ld a, DUELVARS_ARENA_CARD call GetTurnDuelistVariable - call Func_138c + call LoadDeckCardToBuffer2 ld a, [wCardBuffer2Weakness] ret ; 0x3743 @@ -6265,7 +6267,7 @@ Func_374a: ; 374a (0:374a) ret nz ld a, DUELVARS_ARENA_CARD call GetTurnDuelistVariable - call Func_138c + call LoadDeckCardToBuffer2 ld a, [wCardBuffer2Resistance] ret ; 0x375d diff --git a/src/wram.asm b/src/wram.asm index 7c7c774..c0cd814 100755 --- a/src/wram.asm +++ b/src/wram.asm @@ -21,7 +21,7 @@ wPlayerDuelVariables:: ; c200 ; $01 - hand ; $02 - discard pile ; $08 - prize -; $10 - hand +; $10 - active pokemon ; $1X - bench (where X is bench position from 1 to 5) wPlayerCardLocations:: ; c200 ds DECK_SIZE -- cgit v1.2.3 From f6e334247f61ab72576a6e6aedffd611bcde749a Mon Sep 17 00:00:00 2001 From: anmart Date: Sat, 27 Feb 2016 20:27:27 -0500 Subject: Misc fixes Labeled some things and fixed a few labels --- src/data/effect_commands.asm | 2 +- src/engine/bank1.asm | 19 ++++++++++--------- src/engine/bank2.asm | 2 +- src/engine/bank3.asm | 4 ++-- src/engine/bank7.asm | 2 +- src/engine/home.asm | 7 ++++--- 6 files changed, 19 insertions(+), 17 deletions(-) diff --git a/src/data/effect_commands.asm b/src/data/effect_commands.asm index 3946ee8..103abfd 100644 --- a/src/data/effect_commands.asm +++ b/src/data/effect_commands.asm @@ -1345,7 +1345,7 @@ RaticateSuperFangEffectCommands: dbw $09, $6f01 db $00 -; Unreferenced? +TrainerCardAsPokemonEffectCommands: dbw $02, $6f18 dbw $03, $6f3c dbw $05, $6f27 diff --git a/src/engine/bank1.asm b/src/engine/bank1.asm index 35a6e9a..6a458f0 100755 --- a/src/engine/bank1.asm +++ b/src/engine/bank1.asm @@ -516,7 +516,7 @@ OpenBattleAttackMenu: ; 46fc (1:46fc) ldh a, [hButtonsPressed] and $08 jr nz, .displaySelectedMoveInfo - call Func_264b + call MenuCursorAcceptInput jr nc, .asm_4736 cp $ff jp z, Func_4295 @@ -789,7 +789,8 @@ LoadPlayerDeck: ; 6793 (1:6793) INCBIN "baserom.gbc",$67b2,$6d84 - $67b2 -ConvertItemToPokemon: +;converts clefairy doll/mysterious fossil at specified wCardBuffer to pokemon card +ConvertTrainerCardToPokemon: ld c, a ld a, [hl] cp TRAINER_CARD @@ -799,28 +800,28 @@ ConvertItemToPokemon: ld h, a ld l, c ld a, [hl] - and $10 + and TRAINER_CARD pop hl ret z ld a, e - cp $cc + cp MYSTERIOUS_FOSSIL jr nz, .checkForClefairyDoll ld a, d cp $00 jr z, .startRamDataOverwrite ret .checkForClefairyDoll - cp $cb + cp CLEFAIRY_DOLL ret nz ld a, d cp $00 ret nz .startRamDataOverwrite push de - ld [hl], $06 + ld [hl], COLORLESS ld bc, wCardBuffer1HP - wCardBuffer1 add hl, bc - ld de, $6db9 + ld de, .dataToOverwrite ld c, wCardBuffer1Unknown2 - wCardBuffer1HP .loop ld a, [de] @@ -833,12 +834,12 @@ ConvertItemToPokemon: .dataToOverwrite db $0a ; hp - ds $07 + ds $07 dw $0030 ; move1 name dw $0041 ; move1 description ds $03 db $04 ; move1 category - dw $4e35 ; move1 effect commands + dw TrainerCardAsPokemonEffectCommands ; move1 effect commands ds $18 db UNABLE_RETREAT ; retreat cost ds $0d diff --git a/src/engine/bank2.asm b/src/engine/bank2.asm index f989ee7..7901f9e 100755 --- a/src/engine/bank2.asm +++ b/src/engine/bank2.asm @@ -88,7 +88,7 @@ Func_8dbc: ; 8dbc (2:4dbc) jr c, Func_8dbc call Func_8dea jr c, Func_8dbc - call Func_264b + call MenuCursorAcceptInput jr nc, .asm_8dc8 ldh a, [hCurrentMenuItem] cp $ff diff --git a/src/engine/bank3.asm b/src/engine/bank3.asm index ce85533..f4fb571 100755 --- a/src/engine/bank3.asm +++ b/src/engine/bank3.asm @@ -958,7 +958,7 @@ MainMenu_c75a: ; c75a (3:475a) call Func_c29b .asm_c76a call DoFrameIfLCDEnabled - call Func_264b + call MenuCursorAcceptInput jr nc, .asm_c76a ld a, e ld [$d0b8], a @@ -1042,7 +1042,7 @@ PC_c7ea: ; c7ea (3:47ea) call Func_c29b .asm_c806 call DoFrameIfLCDEnabled - call Func_264b + call MenuCursorAcceptInput jr nc, .asm_c806 ld a, e ld [$d0b9], a diff --git a/src/engine/bank7.asm b/src/engine/bank7.asm index 8e52cef..3ddd151 100755 --- a/src/engine/bank7.asm +++ b/src/engine/bank7.asm @@ -214,7 +214,7 @@ Func_1d11c: ; 1d11c (7:511c) .asm_1d15a call DoFrameIfLCDEnabled call UpdateRNGSources - call Func_264b + call MenuCursorAcceptInput push af call $51e9 pop af diff --git a/src/engine/home.asm b/src/engine/home.asm index d29ffaa..180bb18 100755 --- a/src/engine/home.asm +++ b/src/engine/home.asm @@ -2413,7 +2413,7 @@ LoadDeckCardToBuffer1: ; 1376 (0:1376) call LoadCardDataToBuffer1 pop af ld hl, wCardBuffer1 - bank1call ConvertItemToPokemon + bank1call ConvertTrainerCardToPokemon ld a, e pop bc pop de @@ -2429,7 +2429,7 @@ LoadDeckCardToBuffer2: ; 138c (0:138c) call LoadCardDataToBuffer2 pop af ld hl, wCardBuffer2 - bank1call ConvertItemToPokemon + bank1call ConvertTrainerCardToPokemon ld a, e pop bc pop de @@ -4237,7 +4237,8 @@ InitializeCursorParameters: ; 2636 (0:2636) ld [wCursorBlinkCounter], a ret -Func_264b: ; 264b (0:264b) +; returns with the carry flag set if a or b were pressed +MenuCursorAcceptInput: ; 264b (0:264b) xor a ld [wcd99], a ldh a, [hButtonsPressed2] -- cgit v1.2.3