diff options
Diffstat (limited to 'src')
| -rwxr-xr-x | src/constants/booster_constants.asm | 82 | ||||
| -rwxr-xr-x | src/engine/bank5.asm | 646 | ||||
| -rwxr-xr-x | src/engine/bank8.asm | 264 | ||||
| -rwxr-xr-x | src/engine/home.asm | 6 | 
4 files changed, 500 insertions, 498 deletions
| diff --git a/src/constants/booster_constants.asm b/src/constants/booster_constants.asm index ec9bb36..897a35e 100755 --- a/src/constants/booster_constants.asm +++ b/src/constants/booster_constants.asm @@ -1,41 +1,41 @@ -BOOSTER_CARD_TYPE_GRASS     EQU $00
 -BOOSTER_CARD_TYPE_FIRE      EQU $01
 -BOOSTER_CARD_TYPE_LIGHTNING EQU $03
 -BOOSTER_CARD_TYPE_WATER     EQU $02
 -BOOSTER_CARD_TYPE_FIGHTING  EQU $04
 -BOOSTER_CARD_TYPE_PSYCHIC   EQU $05
 -BOOSTER_CARD_TYPE_COLORLESS EQU $06
 -BOOSTER_CARD_TYPE_TRAINER   EQU $07
 -BOOSTER_CARD_TYPE_ENERGY    EQU $08
 -BOOSTER_CARD_TYPE_AMOUNT    EQU $09
 -
 -BOOSTER_COLOSSEUM_NEUTRAL           EQU $00
 -BOOSTER_COLOSSEUM_GRASS             EQU $01
 -BOOSTER_COLOSSEUM_FIRE              EQU $02
 -BOOSTER_COLOSSEUM_WATER             EQU $03
 -BOOSTER_COLOSSEUM_LIGHTNING         EQU $04
 -BOOSTER_COLOSSEUM_FIGHTING          EQU $05
 -BOOSTER_COLOSSEUM_TRAINER           EQU $06
 -BOOSTER_EVOLUTION_NEUTRAL           EQU $07
 -BOOSTER_EVOLUTION_GRASS             EQU $08
 -BOOSTER_EVOLUTION_FIRE              EQU $09
 -BOOSTER_EVOLUTION_WATER             EQU $0a
 -BOOSTER_EVOLUTION_FIGHTING          EQU $0b
 -BOOSTER_EVOLUTION_PSYCHIC           EQU $0c
 -BOOSTER_EVOLUTION_TRAINER           EQU $0d
 -BOOSTER_MYSTERY_NEUTRAL             EQU $0e
 -BOOSTER_MYSTERY_GRASS_COLORLESS     EQU $0f
 -BOOSTER_MYSTERY_WATER_COLORLESS     EQU $10
 -BOOSTER_MYSTERY_LIGHTNING_COLORLESS EQU $11
 -BOOSTER_MYSTERY_FIGHTING_COLORLESS  EQU $12
 -BOOSTER_MYSTERY_TRAINER_COLORLESS   EQU $13
 -BOOSTER_LABORATORY_FIGHTING         EQU $14
 -BOOSTER_LABORATORY_GRASS            EQU $15
 -BOOSTER_LABORATORY_WATER            EQU $16
 -BOOSTER_LABORATORY_PSYCHIC          EQU $17
 -BOOSTER_LABORATORY_TRAINER          EQU $18
 -BOOSTER_ENERGY_LIGHTNING_FIRE       EQU $19
 -BOOSTER_ENERGY_WATER_FIGHTING       EQU $1a
 -BOOSTER_ENERGY_GRASS_PSYCHIC        EQU $1b
 -BOOSTER_ENERGY_RANDOM               EQU $1c
 -NO_BOOSTER                          EQU $ff
 +BOOSTER_CARD_TYPE_GRASS     EQU $00 +BOOSTER_CARD_TYPE_FIRE      EQU $01 +BOOSTER_CARD_TYPE_LIGHTNING EQU $03 +BOOSTER_CARD_TYPE_WATER     EQU $02 +BOOSTER_CARD_TYPE_FIGHTING  EQU $04 +BOOSTER_CARD_TYPE_PSYCHIC   EQU $05 +BOOSTER_CARD_TYPE_COLORLESS EQU $06 +BOOSTER_CARD_TYPE_TRAINER   EQU $07 +BOOSTER_CARD_TYPE_ENERGY    EQU $08 +BOOSTER_CARD_TYPE_AMOUNT    EQU $09 + +BOOSTER_COLOSSEUM_NEUTRAL           EQU $00 +BOOSTER_COLOSSEUM_GRASS             EQU $01 +BOOSTER_COLOSSEUM_FIRE              EQU $02 +BOOSTER_COLOSSEUM_WATER             EQU $03 +BOOSTER_COLOSSEUM_LIGHTNING         EQU $04 +BOOSTER_COLOSSEUM_FIGHTING          EQU $05 +BOOSTER_COLOSSEUM_TRAINER           EQU $06 +BOOSTER_EVOLUTION_NEUTRAL           EQU $07 +BOOSTER_EVOLUTION_GRASS             EQU $08 +BOOSTER_EVOLUTION_FIRE              EQU $09 +BOOSTER_EVOLUTION_WATER             EQU $0a +BOOSTER_EVOLUTION_FIGHTING          EQU $0b +BOOSTER_EVOLUTION_PSYCHIC           EQU $0c +BOOSTER_EVOLUTION_TRAINER           EQU $0d +BOOSTER_MYSTERY_NEUTRAL             EQU $0e +BOOSTER_MYSTERY_GRASS_COLORLESS     EQU $0f +BOOSTER_MYSTERY_WATER_COLORLESS     EQU $10 +BOOSTER_MYSTERY_LIGHTNING_COLORLESS EQU $11 +BOOSTER_MYSTERY_FIGHTING_COLORLESS  EQU $12 +BOOSTER_MYSTERY_TRAINER_COLORLESS   EQU $13 +BOOSTER_LABORATORY_FIGHTING         EQU $14 +BOOSTER_LABORATORY_GRASS            EQU $15 +BOOSTER_LABORATORY_WATER            EQU $16 +BOOSTER_LABORATORY_PSYCHIC          EQU $17 +BOOSTER_LABORATORY_TRAINER          EQU $18 +BOOSTER_ENERGY_LIGHTNING_FIRE       EQU $19 +BOOSTER_ENERGY_WATER_FIGHTING       EQU $1a +BOOSTER_ENERGY_GRASS_PSYCHIC        EQU $1b +BOOSTER_ENERGY_RANDOM               EQU $1c +NO_BOOSTER                          EQU $ff diff --git a/src/engine/bank5.asm b/src/engine/bank5.asm index d713f8f..1104b86 100755 --- a/src/engine/bank5.asm +++ b/src/engine/bank5.asm @@ -1,323 +1,323 @@ -PointerTable_14000: ; 14000 (05:4000)
 -	dw $47bd ; SAMS_PRACTICE_DECK
 -	dw PointerTable_14668 ; PRACTICE_PLAYER_DECK
 -	dw PointerTable_14668 ; SAMS_NORMAL_DECK
 -	dw PointerTable_14668 ; CHARMANDER_AND_FRIENDS_DECK
 -	dw PointerTable_14668 ; CHARMANDER_EXTRA_DECK
 -	dw PointerTable_14668 ; SQUIRTLE_AND_FRIENDS_DECK
 -	dw PointerTable_14668 ; SQUIRTLE_EXTRA_DECK
 -	dw PointerTable_14668 ; BULBASAUR_AND_FRIENDS_DECK
 -	dw PointerTable_14668 ; BULBASAUR_EXTRA_DECK
 -	dw PointerTable_14668 ; LIGHTNING_AND_FIRE_DECK
 -	dw PointerTable_14668 ; WATER_AND_FIGHTING_DECK
 -	dw PointerTable_14668 ; GRASS_AND_PSYCHIC_DECK
 -	dw $49e8 ; LEGENDARY_MOLTRES_DECK
 -	dw $4b0f ; LEGENDARY_ZAPDOS_DECK
 -	dw $4c0b ; LEGENDARY_ARTICUNO_DECK
 -	dw $4d60 ; LEGENDARY_DRAGONITE_DECK
 -	dw $4e89 ; FIRST_STRIKE_DECK
 -	dw $4f0e ; ROCK_CRUSHER_DECK
 -	dw $4f8f ; GO_GO_RAIN_DANCE_DECK
 -	dw $5019 ; ZAPPING_SELFDESTRUCT_DECK
 -	dw $509b ; FLOWER_POWER_DECK
 -	dw $5122 ; STRANGE_PSYSHOCK_DECK
 -	dw $51ad ; WONDERS_OF_SCIENCE_DECK
 -	dw $5232 ; FIRE_CHARGE_DECK
 -	dw $52bd ; IM_RONALD_DECK
 -	dw $534b ; POWERFUL_RONALD_DECK
 -	dw $53e8 ; INVINCIBLE_RONALD_DECK
 -	dw $546f ; LEGENDARY_RONALD_DECK
 -	dw $48dc ; MUSCLES_FOR_BRAINS_DECK
 -	dw PointerTable_14668 ; HEATED_BATTLE_DECK
 -	dw PointerTable_14668 ; LOVE_TO_BATTLE_DECK
 -	dw PointerTable_14668 ; EXCAVATION_DECK
 -	dw PointerTable_14668 ; BLISTERING_POKEMON_DECK
 -	dw PointerTable_14668 ; HARD_POKEMON_DECK
 -	dw PointerTable_14668 ; WATERFRONT_POKEMON_DECK
 -	dw PointerTable_14668 ; LONELY_FRIENDS_DECK
 -	dw PointerTable_14668 ; SOUND_OF_THE_WAVES_DECK
 -	dw PointerTable_14668 ; PIKACHU_DECK
 -	dw PointerTable_14668 ; BOOM_BOOM_SELFDESTRUCT_DECK
 -	dw PointerTable_14668 ; POWER_GENERATOR_DECK
 -	dw PointerTable_14668 ; ETCETERA_DECK
 -	dw PointerTable_14668 ; FLOWER_GARDEN_DECK
 -	dw PointerTable_14668 ; KALEIDOSCOPE_DECK
 -	dw PointerTable_14668 ; GHOST_DECK
 -	dw PointerTable_14668 ; NAP_TIME_DECK
 -	dw PointerTable_14668 ; STRANGE_POWER_DECK
 -	dw PointerTable_14668 ; FLYIN_POKEMON_DECK
 -	dw PointerTable_14668 ; LOVELY_NIDORAN_DECK
 -	dw PointerTable_14668 ; POISON_DECK
 -	dw PointerTable_14668 ; ANGER_DECK
 -	dw PointerTable_14668 ; FLAMETHROWER_DECK
 -	dw PointerTable_14668 ; RESHUFFLE_DECK
 -	dw $48dc ; IMAKUNI_DECK
 -; 1406a
 -
 -	INCROM $1406a, $14226
 -
 -Func_14226: ; 14226 (5:4226)
 -	call CreateHandCardBuffer
 -	ld hl, wDuelCardOrAttackList
 -.checkForNextPokemon
 -	ld a, [hli]
 -	ld [$ff98], a
 -	cp $ff
 -	ret z
 -	call LoadDeckCardToBuffer1
 -	ld a, [wLoadedCard1Type]
 -	cp FIRE_ENERGY_CARD
 -	jr nc, .checkForNextPokemon
 -	ld a, [wLoadedCard1Stage]
 -	or a
 -	jr nz, .checkForNextPokemon
 -	push hl
 -	ld a, [$ff98]
 -	call $1485
 -	pop hl
 -	jr .checkForNextPokemon
 -; 0x1424b
 -
 -	INCROM $1424b, $14663
 -
 -Func_14663: ; 14663 (5:4663)
 -	farcall Func_200e5
 -	ret
 -
 -; GENERAL DECK POINTER LIST - Not sure on all of these.
 -; This is an example of an AI pointer table, there's one for each AI type.
 -PointerTable_14668: ; 14668 (05:4668)
 -	dw Func_14674 ; not used
 -	dw Func_14674 ; general AI for battles
 -	dw Func_14678 ; basic pokemon placement / cheater shuffling on better AI
 -	dw Func_1467f
 -	dw Func_14683
 -	dw Func_14687
 -
 -; when battle AI gets called
 -Func_14674: ; 14674 (5:4674)
 -	call Func_1468b
 -	ret
 -
 -Func_14678: ; 14678 (5:4678)
 -	call Func_15636
 -	call $4226
 -	ret
 -
 -Func_1467f: ; 1467f (5:467f)
 -	call $5b72
 -	ret
 -
 -Func_14683: ; 14683 (5:4683)
 -	call $5b72
 -	ret
 -
 -Func_14687: ; 14687 (5:4687)
 -	call $41e5
 -	ret
 -
 -; AI for general decks i think
 -Func_1468b: ; 1468b (5:468b)
 -	call Func_15649
 -	ld a, $1
 -	call Func_14663
 -	farcallx $8, $67d3
 -	jp nc, $4776
 -	farcallx $8, $6790
 -	farcallx $8, $66a3
 -	farcallx $8, $637f
 -	ret c
 -	farcallx $8, $662d
 -	ld a, $2
 -	call Func_14663
 -	ld a, $3
 -	call Func_14663
 -	ld a, $4
 -	call Func_14663
 -	call $5eae
 -	ret c
 -	ld a, $5
 -	call Func_14663
 -	ld a, $6
 -	call Func_14663
 -	ld a, $7
 -	call Func_14663
 -	ld a, $8
 -	call Func_14663
 -	call $4786
 -	ld a, $a
 -	call Func_14663
 -	ld a, $b
 -	call Func_14663
 -	ld a, $c
 -	call Func_14663
 -	ld a, [wAlreadyPlayedEnergy]
 -	or a
 -	jr nz, .asm_146ed
 -	call $64e8
 -
 -.asm_146ed
 -	call $5eae
 -	farcallx $8, $66a3
 -	farcallx $8, $637f
 -	ret c
 -	farcallx $8, $6790
 -	ld a, $d
 -	farcallx $8, $619b
 -	ld a, $d
 -	call Func_14663
 -	ld a, $f
 -	call Func_14663
 -	ld a, [$ce20]
 -	and $4
 -	jr z, .asm_14776
 -	ld a, $1
 -	call Func_14663
 -	ld a, $2
 -	call Func_14663
 -	ld a, $3
 -	call Func_14663
 -	ld a, $4
 -	call Func_14663
 -	call $5eae
 -	ret c
 -	ld a, $5
 -	call Func_14663
 -	ld a, $6
 -	call Func_14663
 -	ld a, $7
 -	call Func_14663
 -	ld a, $8
 -	call Func_14663
 -	call $4786
 -	ld a, $a
 -	call Func_14663
 -	ld a, $b
 -	call Func_14663
 -	ld a, $c
 -	call Func_14663
 -	ld a, [wAlreadyPlayedEnergy]
 -	or a
 -	jr nz, .asm_1475b
 -	call $64e8
 -
 -.asm_1475b
 -	call $5eae
 -	farcallx $8, $66a3
 -	farcallx $8, $637f
 -	ret c
 -	farcallx $8, $6790
 -	ld a, $d
 -	farcallx $8, $619b
 -	ld a, $d
 -	call Func_14663
 -
 -.asm_14776
 -	ld a, $e
 -	farcallx $8, $619b
 -	call $69f8
 -	ret c
 -	ld a, $5
 -	bank1call $67be
 -	ret
 -; 0x14786
 -
 -
 -	INCROM $14786, $15636
 -Func_15636: ; 15636 (5:5636)
 -	ld a, $10
 -	ld hl, $cda5
 -	call ZeroData
 -	ld a, $5
 -	ld [$cda6], a
 -	ld a, $ff
 -	ld [$cda5], a
 -	ret
 -
 -Func_15649: ; 15649 (5:5649)
 -	ld a, [$cda6]
 -	inc a
 -	ld [$cda6], a
 -	xor a
 -	ld [$ce20], a
 -	ld [$cddb], a
 -	ld [$cddc], a
 -	ld [$ce03], a
 -	ld a, [wcc10]
 -	cp $ff
 -	jr z, .asm_156b1
 -	or a
 -	jr z, .asm_156b1
 -	ld a, [wcc11]
 -	cp $ff
 -	jr z, .asm_156b1
 -	call SwapTurn
 -	call GetCardInDeckPosition
 -	call SwapTurn
 -	ld a, e
 -	cp MEWTWO1 ; I believe this is a check for Mewtwo1's Barrier move
 -	jr nz, .asm_156b1
 -	ld a, [$cda7]
 -	bit 7, a
 -	jr nz, .asm_156aa
 -	inc a
 -	ld [$cda7], a
 -	cp $3
 -	jr c, .asm_156c2
 -	ld a, (wPlayerArenaCard & $FF)
 -	call GetNonTurnDuelistVariable
 -	call SwapTurn
 -	call GetCardInDeckPosition
 -	call SwapTurn
 -	ld a, e
 -	cp MEWTWO1
 -	jr nz, .asm_156a4
 -	farcallx $8, $67a9
 -	jr nc, .asm_156aa
 -
 -.asm_156a4
 -	xor a
 -	ld [$cda7], a
 -	jr .asm_156c2
 -
 -.asm_156aa
 -	ld a, $80
 -	ld [$cda7], a
 -	jr .asm_156c2
 -
 -.asm_156b1
 -	ld a, [$cda7]
 -	bit 7, a
 -	jr z, .asm_156be
 -	inc a
 -	ld [$cda7], a
 -	jr .asm_156c2
 -
 -.asm_156be
 -	xor a
 -	ld [$cda7], a
 -
 -.asm_156c2
 -	ret
 -; 0x156c3
 -
 -	INCROM $156c3, $1575e
 -
 -; zeroes a bytes starting at hl
 -ZeroData: ; 1575e (5:575e)
 -	push af
 -	push bc
 -	push hl
 -	ld b, a
 -	xor a
 -.clearLoop
 -	ld [hli], a
 -	dec b
 -	jr nz, .clearLoop
 -	pop hl
 -	pop bc
 -	pop af
 -	ret
 -; 0x1576b
 -
 -	INCROM $1576b, $18000
 +PointerTable_14000: ; 14000 (05:4000) +	dw $47bd ; SAMS_PRACTICE_DECK +	dw PointerTable_14668 ; PRACTICE_PLAYER_DECK +	dw PointerTable_14668 ; SAMS_NORMAL_DECK +	dw PointerTable_14668 ; CHARMANDER_AND_FRIENDS_DECK +	dw PointerTable_14668 ; CHARMANDER_EXTRA_DECK +	dw PointerTable_14668 ; SQUIRTLE_AND_FRIENDS_DECK +	dw PointerTable_14668 ; SQUIRTLE_EXTRA_DECK +	dw PointerTable_14668 ; BULBASAUR_AND_FRIENDS_DECK +	dw PointerTable_14668 ; BULBASAUR_EXTRA_DECK +	dw PointerTable_14668 ; LIGHTNING_AND_FIRE_DECK +	dw PointerTable_14668 ; WATER_AND_FIGHTING_DECK +	dw PointerTable_14668 ; GRASS_AND_PSYCHIC_DECK +	dw $49e8 ; LEGENDARY_MOLTRES_DECK +	dw $4b0f ; LEGENDARY_ZAPDOS_DECK +	dw $4c0b ; LEGENDARY_ARTICUNO_DECK +	dw $4d60 ; LEGENDARY_DRAGONITE_DECK +	dw $4e89 ; FIRST_STRIKE_DECK +	dw $4f0e ; ROCK_CRUSHER_DECK +	dw $4f8f ; GO_GO_RAIN_DANCE_DECK +	dw $5019 ; ZAPPING_SELFDESTRUCT_DECK +	dw $509b ; FLOWER_POWER_DECK +	dw $5122 ; STRANGE_PSYSHOCK_DECK +	dw $51ad ; WONDERS_OF_SCIENCE_DECK +	dw $5232 ; FIRE_CHARGE_DECK +	dw $52bd ; IM_RONALD_DECK +	dw $534b ; POWERFUL_RONALD_DECK +	dw $53e8 ; INVINCIBLE_RONALD_DECK +	dw $546f ; LEGENDARY_RONALD_DECK +	dw $48dc ; MUSCLES_FOR_BRAINS_DECK +	dw PointerTable_14668 ; HEATED_BATTLE_DECK +	dw PointerTable_14668 ; LOVE_TO_BATTLE_DECK +	dw PointerTable_14668 ; EXCAVATION_DECK +	dw PointerTable_14668 ; BLISTERING_POKEMON_DECK +	dw PointerTable_14668 ; HARD_POKEMON_DECK +	dw PointerTable_14668 ; WATERFRONT_POKEMON_DECK +	dw PointerTable_14668 ; LONELY_FRIENDS_DECK +	dw PointerTable_14668 ; SOUND_OF_THE_WAVES_DECK +	dw PointerTable_14668 ; PIKACHU_DECK +	dw PointerTable_14668 ; BOOM_BOOM_SELFDESTRUCT_DECK +	dw PointerTable_14668 ; POWER_GENERATOR_DECK +	dw PointerTable_14668 ; ETCETERA_DECK +	dw PointerTable_14668 ; FLOWER_GARDEN_DECK +	dw PointerTable_14668 ; KALEIDOSCOPE_DECK +	dw PointerTable_14668 ; GHOST_DECK +	dw PointerTable_14668 ; NAP_TIME_DECK +	dw PointerTable_14668 ; STRANGE_POWER_DECK +	dw PointerTable_14668 ; FLYIN_POKEMON_DECK +	dw PointerTable_14668 ; LOVELY_NIDORAN_DECK +	dw PointerTable_14668 ; POISON_DECK +	dw PointerTable_14668 ; ANGER_DECK +	dw PointerTable_14668 ; FLAMETHROWER_DECK +	dw PointerTable_14668 ; RESHUFFLE_DECK +	dw $48dc ; IMAKUNI_DECK +; 1406a + +	INCROM $1406a, $14226 + +Func_14226: ; 14226 (5:4226) +	call CreateHandCardBuffer +	ld hl, wDuelCardOrAttackList +.checkForNextPokemon +	ld a, [hli] +	ld [$ff98], a +	cp $ff +	ret z +	call LoadDeckCardToBuffer1 +	ld a, [wLoadedCard1Type] +	cp FIRE_ENERGY_CARD +	jr nc, .checkForNextPokemon +	ld a, [wLoadedCard1Stage] +	or a +	jr nz, .checkForNextPokemon +	push hl +	ld a, [$ff98] +	call $1485 +	pop hl +	jr .checkForNextPokemon +; 0x1424b + +	INCROM $1424b, $14663 + +Func_14663: ; 14663 (5:4663) +	farcall Func_200e5 +	ret + +; GENERAL DECK POINTER LIST - Not sure on all of these. +; This is an example of an AI pointer table, there's one for each AI type. +PointerTable_14668: ; 14668 (05:4668) +	dw Func_14674 ; not used +	dw Func_14674 ; general AI for battles +	dw Func_14678 ; basic pokemon placement / cheater shuffling on better AI +	dw Func_1467f +	dw Func_14683 +	dw Func_14687 + +; when battle AI gets called +Func_14674: ; 14674 (5:4674) +	call Func_1468b +	ret + +Func_14678: ; 14678 (5:4678) +	call Func_15636 +	call $4226 +	ret + +Func_1467f: ; 1467f (5:467f) +	call $5b72 +	ret + +Func_14683: ; 14683 (5:4683) +	call $5b72 +	ret + +Func_14687: ; 14687 (5:4687) +	call $41e5 +	ret + +; AI for general decks i think +Func_1468b: ; 1468b (5:468b) +	call Func_15649 +	ld a, $1 +	call Func_14663 +	farcallx $8, $67d3 +	jp nc, $4776 +	farcallx $8, $6790 +	farcallx $8, $66a3 +	farcallx $8, $637f +	ret c +	farcallx $8, $662d +	ld a, $2 +	call Func_14663 +	ld a, $3 +	call Func_14663 +	ld a, $4 +	call Func_14663 +	call $5eae +	ret c +	ld a, $5 +	call Func_14663 +	ld a, $6 +	call Func_14663 +	ld a, $7 +	call Func_14663 +	ld a, $8 +	call Func_14663 +	call $4786 +	ld a, $a +	call Func_14663 +	ld a, $b +	call Func_14663 +	ld a, $c +	call Func_14663 +	ld a, [wAlreadyPlayedEnergy] +	or a +	jr nz, .asm_146ed +	call $64e8 + +.asm_146ed +	call $5eae +	farcallx $8, $66a3 +	farcallx $8, $637f +	ret c +	farcallx $8, $6790 +	ld a, $d +	farcallx $8, $619b +	ld a, $d +	call Func_14663 +	ld a, $f +	call Func_14663 +	ld a, [$ce20] +	and $4 +	jr z, .asm_14776 +	ld a, $1 +	call Func_14663 +	ld a, $2 +	call Func_14663 +	ld a, $3 +	call Func_14663 +	ld a, $4 +	call Func_14663 +	call $5eae +	ret c +	ld a, $5 +	call Func_14663 +	ld a, $6 +	call Func_14663 +	ld a, $7 +	call Func_14663 +	ld a, $8 +	call Func_14663 +	call $4786 +	ld a, $a +	call Func_14663 +	ld a, $b +	call Func_14663 +	ld a, $c +	call Func_14663 +	ld a, [wAlreadyPlayedEnergy] +	or a +	jr nz, .asm_1475b +	call $64e8 + +.asm_1475b +	call $5eae +	farcallx $8, $66a3 +	farcallx $8, $637f +	ret c +	farcallx $8, $6790 +	ld a, $d +	farcallx $8, $619b +	ld a, $d +	call Func_14663 + +.asm_14776 +	ld a, $e +	farcallx $8, $619b +	call $69f8 +	ret c +	ld a, $5 +	bank1call $67be +	ret +; 0x14786 + + +	INCROM $14786, $15636 +Func_15636: ; 15636 (5:5636) +	ld a, $10 +	ld hl, $cda5 +	call ZeroData +	ld a, $5 +	ld [$cda6], a +	ld a, $ff +	ld [$cda5], a +	ret + +Func_15649: ; 15649 (5:5649) +	ld a, [$cda6] +	inc a +	ld [$cda6], a +	xor a +	ld [$ce20], a +	ld [$cddb], a +	ld [$cddc], a +	ld [$ce03], a +	ld a, [wcc10] +	cp $ff +	jr z, .asm_156b1 +	or a +	jr z, .asm_156b1 +	ld a, [wcc11] +	cp $ff +	jr z, .asm_156b1 +	call SwapTurn +	call GetCardInDeckPosition +	call SwapTurn +	ld a, e +	cp MEWTWO1 ; I believe this is a check for Mewtwo1's Barrier move +	jr nz, .asm_156b1 +	ld a, [$cda7] +	bit 7, a +	jr nz, .asm_156aa +	inc a +	ld [$cda7], a +	cp $3 +	jr c, .asm_156c2 +	ld a, (wPlayerArenaCard & $FF) +	call GetNonTurnDuelistVariable +	call SwapTurn +	call GetCardInDeckPosition +	call SwapTurn +	ld a, e +	cp MEWTWO1 +	jr nz, .asm_156a4 +	farcallx $8, $67a9 +	jr nc, .asm_156aa + +.asm_156a4 +	xor a +	ld [$cda7], a +	jr .asm_156c2 + +.asm_156aa +	ld a, $80 +	ld [$cda7], a +	jr .asm_156c2 + +.asm_156b1 +	ld a, [$cda7] +	bit 7, a +	jr z, .asm_156be +	inc a +	ld [$cda7], a +	jr .asm_156c2 + +.asm_156be +	xor a +	ld [$cda7], a + +.asm_156c2 +	ret +; 0x156c3 + +	INCROM $156c3, $1575e + +; zeroes a bytes starting at hl +ZeroData: ; 1575e (5:575e) +	push af +	push bc +	push hl +	ld b, a +	xor a +.clearLoop +	ld [hli], a +	dec b +	jr nz, .clearLoop +	pop hl +	pop bc +	pop af +	ret +; 0x1576b + +	INCROM $1576b, $18000 diff --git a/src/engine/bank8.asm b/src/engine/bank8.asm index d052c43..478714b 100755 --- a/src/engine/bank8.asm +++ b/src/engine/bank8.asm @@ -1,132 +1,132 @@ -	INCROM $20000, $200e5
 -
 -; 0 - e4 is a big set of data, seems to be one entry for each card
 -
 -Func_200e5: ; 200e5 (8:40e5)
 -	ld [$ce18], a
 -	call CreateHandCardBuffer
 -	ld hl, wDuelCardOrAttackList
 -	ld de, wHandCardBuffer
 -	call CopyBuffer
 -	ld hl, wHandCardBuffer
 -	ld a, [hli]
 -	ld [$ce16], a
 -	cp $ff
 -	ret z
 -	push hl
 -	ld a, [$ce18]
 -	ld d, a
 -	ld hl, $4000
 -.asm_4106
 -	xor a
 -	ld [$ce21], a
 -	ld a, [hli]
 -	cp $ff
 -	jp z, $41b1
 -	cp d
 -	jp nz, .incHL5
 -	ld a, [hli]
 -	ld [$ce17], a
 -	ld a, [$ce16]
 -	call LoadDeckCardToBuffer1
 -	cp $d2
 -	jr nz, .asm_2012b
 -	ld b, a
 -	ld a, [$ce20]
 -	and $2
 -	jr nz, .incHL4
 -	ld a, b
 -
 -.asm_2012b
 -	ld b, a
 -	ld a, [$ce17]
 -	cp b
 -	jr nz, .incHL4
 -	push hl
 -	push de
 -	ld a, [$ce16]
 -	ld [$ff9f], a
 -	bank1call $35a9
 -	jp c, $41a8
 -	call $1944
 -	ld a, $1
 -	call TryExecuteEffectCommandFunction
 -	jp c, $41a8
 -	farcallx $5, $743b
 -	jr c, .asm_201a8
 -	pop de
 -	pop hl
 -	push hl
 -	call CallIndirect
 -	pop hl
 -	jr nc, .incHL4
 -	inc hl
 -	inc hl
 -	ld [$ce19], a
 -	push de
 -	push hl
 -	ld a, [$ce16]
 -	ld [$ff9f], a
 -	ld a, $6
 -	bank1call $67be
 -	pop hl
 -	pop de
 -	jr c, .incHL2
 -	push hl
 -	call CallIndirect
 -	pop hl
 -	inc hl
 -	inc hl
 -	ld a, [$ce20]
 -	ld b, a
 -	ld a, [$ce21]
 -	or b
 -	ld [$ce20], a
 -	pop hl
 -	and $8
 -	jp z, $40f7
 -	call $123b
 -	ld hl, wDuelCardOrAttackList
 -	ld de, $cf68
 -	call $697b
 -	ld hl, $cf68
 -	ld a, [$ce20]
 -	and $f7
 -	ld [$ce20], a
 -	jp $40f7
 -
 -.incHL5
 -	inc hl
 -
 -.incHL4
 -	inc hl
 -	inc hl
 -
 -.incHL2
 -	inc hl
 -	inc hl
 -	jp .asm_4106
 -
 -.asm_201a8
 -	pop de
 -	pop hl
 -	inc hl
 -	inc hl
 -	inc hl
 -	inc hl
 -	jp .asm_4106
 -; 0x201b1
 -
 -	INCROM $201b1, $2297b
 -
 -; copies $ff terminated buffer from hl to de
 -CopyBuffer: ; 2297b (8:697b)
 -	ld a, [hli]
 -	ld [de], a
 -	cp $ff
 -	ret z
 -	inc de
 -	jr CopyBuffer
 -; 0x22983
 -
 -	INCROM $22983, $24000
 +	INCROM $20000, $200e5 + +; 0 - e4 is a big set of data, seems to be one entry for each card + +Func_200e5: ; 200e5 (8:40e5) +	ld [$ce18], a +	call CreateHandCardBuffer +	ld hl, wDuelCardOrAttackList +	ld de, wHandCardBuffer +	call CopyBuffer +	ld hl, wHandCardBuffer +	ld a, [hli] +	ld [$ce16], a +	cp $ff +	ret z +	push hl +	ld a, [$ce18] +	ld d, a +	ld hl, $4000 +.asm_4106 +	xor a +	ld [$ce21], a +	ld a, [hli] +	cp $ff +	jp z, $41b1 +	cp d +	jp nz, .incHL5 +	ld a, [hli] +	ld [$ce17], a +	ld a, [$ce16] +	call LoadDeckCardToBuffer1 +	cp $d2 +	jr nz, .asm_2012b +	ld b, a +	ld a, [$ce20] +	and $2 +	jr nz, .incHL4 +	ld a, b + +.asm_2012b +	ld b, a +	ld a, [$ce17] +	cp b +	jr nz, .incHL4 +	push hl +	push de +	ld a, [$ce16] +	ld [$ff9f], a +	bank1call $35a9 +	jp c, $41a8 +	call $1944 +	ld a, $1 +	call TryExecuteEffectCommandFunction +	jp c, $41a8 +	farcallx $5, $743b +	jr c, .asm_201a8 +	pop de +	pop hl +	push hl +	call CallIndirect +	pop hl +	jr nc, .incHL4 +	inc hl +	inc hl +	ld [$ce19], a +	push de +	push hl +	ld a, [$ce16] +	ld [$ff9f], a +	ld a, $6 +	bank1call $67be +	pop hl +	pop de +	jr c, .incHL2 +	push hl +	call CallIndirect +	pop hl +	inc hl +	inc hl +	ld a, [$ce20] +	ld b, a +	ld a, [$ce21] +	or b +	ld [$ce20], a +	pop hl +	and $8 +	jp z, $40f7 +	call $123b +	ld hl, wDuelCardOrAttackList +	ld de, $cf68 +	call $697b +	ld hl, $cf68 +	ld a, [$ce20] +	and $f7 +	ld [$ce20], a +	jp $40f7 + +.incHL5 +	inc hl + +.incHL4 +	inc hl +	inc hl + +.incHL2 +	inc hl +	inc hl +	jp .asm_4106 + +.asm_201a8 +	pop de +	pop hl +	inc hl +	inc hl +	inc hl +	inc hl +	jp .asm_4106 +; 0x201b1 + +	INCROM $201b1, $2297b + +; copies $ff terminated buffer from hl to de +CopyBuffer: ; 2297b (8:697b) +	ld a, [hli] +	ld [de], a +	cp $ff +	ret z +	inc de +	jr CopyBuffer +; 0x22983 + +	INCROM $22983, $24000 diff --git a/src/engine/home.asm b/src/engine/home.asm index 072e5dd..b70afec 100755 --- a/src/engine/home.asm +++ b/src/engine/home.asm @@ -7959,8 +7959,10 @@ Func_3df3: ; 3df3 (0:3df3)  	ret  ; 0x3e10 -	INCROM $3e10, $3e17 - +Func_3e10: ; 3e10 (0:3e10) +	ld a, $1 +	ld [wd61e], a +	ld a, $62  Func_3e17: ; 3e17 (0:3e17)  	ld [wd131], a  	ldh a, [hBankROM] | 
