diff options
| -rw-r--r-- | src/constants/card_data_constants.asm | 3 | ||||
| -rw-r--r-- | src/data/effect_commands.asm | 2 | ||||
| -rwxr-xr-x | src/engine/bank1.asm | 65 | ||||
| -rwxr-xr-x | src/engine/bank2.asm | 2 | ||||
| -rwxr-xr-x | src/engine/bank3.asm | 4 | ||||
| -rwxr-xr-x | src/engine/bank6.asm | 2 | ||||
| -rwxr-xr-x | src/engine/bank7.asm | 2 | ||||
| -rwxr-xr-x | src/engine/home.asm | 75 | ||||
| -rwxr-xr-x | src/wram.asm | 2 | 
9 files changed, 110 insertions, 47 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/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 5577cf3..6a458f0 100755 --- a/src/engine/bank1.asm +++ b/src/engine/bank1.asm @@ -509,14 +509,14 @@ OpenBattleAttackMenu: ; 46fc (1:46fc)  	ld h, a  	ld l, DUELVARS_ARENA_CARD  	ld a, [hl] -	call Func_1376 +	call LoadDeckCardToBuffer1  .asm_4736  	call DoFrame  	ldh a, [hButtonsPressed]  	and $08  	jr nz, .displaySelectedMoveInfo -	call Func_264b +	call MenuCursorAcceptInput  	jr nc, .asm_4736  	cp $ff  	jp z, Func_4295 @@ -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,64 @@ LoadPlayerDeck: ; 6793 (1:6793)  	ret  ; 0x67b2 -INCBIN "baserom.gbc",$67b2,$7107 - $67b2 +INCBIN "baserom.gbc",$67b2,$6d84 - $67b2 + +;converts clefairy doll/mysterious fossil at specified wCardBuffer to pokemon card +ConvertTrainerCardToPokemon: +	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 TRAINER_CARD +	pop hl +	ret z +	ld a, e +	cp MYSTERIOUS_FOSSIL +	jr nz, .checkForClefairyDoll +	ld a, d +	cp $00 +	jr z, .startRamDataOverwrite +	ret +.checkForClefairyDoll +	cp CLEFAIRY_DOLL +	ret nz +	ld a, d +	cp $00 +	ret nz +.startRamDataOverwrite +	push de +	ld [hl], COLORLESS +	ld bc, wCardBuffer1HP - wCardBuffer1 +	add hl, bc +	ld de, .dataToOverwrite +	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 TrainerCardAsPokemonEffectCommands         ; 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/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/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/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 18e8b4d..180bb18 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 ConvertTrainerCardToPokemon  	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 ConvertTrainerCardToPokemon  	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 @@ -4236,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] @@ -5171,16 +5173,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 +5989,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 +6081,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 +6097,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 +6180,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 +6223,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 +6254,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 +6268,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 | 
