diff options
Diffstat (limited to 'data')
-rw-r--r-- | data/battle_tower.asm | 121 |
1 files changed, 67 insertions, 54 deletions
diff --git a/data/battle_tower.asm b/data/battle_tower.asm index 025807ac8..f6d7b95de 100644 --- a/data/battle_tower.asm +++ b/data/battle_tower.asm @@ -1,24 +1,31 @@ -Function1f8000: ; 1f8000 +Function_LoadOpponentTrainerAndPokemons: ; 1f8000 ld a, [rSVBK] push af ld a, $3 ld [rSVBK], a + + ; Fill BT_OTrainer with zeros xor a - ld hl, w3_d100 - ld bc, $00e0 + ld hl, BT_OTrainer + ld bc, BT_OTrainerEnd - BT_OTrainer call ByteFill + + ; Write $ff into the Item-Slots ld a, $ff - ld [w3_d100 + $0c], a - ld [w3_d100 + $47], a - ld [w3_d100 + $82], a - ld de, w3_d100 + ld [BT_OTPkmn1Item], a + ld [BT_OTPkmn2Item], a + ld [BT_OTPkmn3Item], a + + ; Set BT_OTTrainer as start address to write the following data to + ld de, BT_OTrainer + ld a, [hRandomAdd] ld b, a -.asm_1f8022 +.asm_1f8022 ; loop to find a random trainer call Random ld a, [hRandomAdd] add b - ld b, a + ld b, a ; b contains the nr of the trainer IF DEF(CRYSTAL11) and $7f cp $46 @@ -31,14 +38,14 @@ ENDC ld a, BANK(sbe46) call GetSRAMBank ld c, $7 - ld hl, sbe48 + ld hl, sBTTrainers .asm_1f803a ld a, [hli] cp b jr z, .asm_1f8022 dec c - jr nz, .asm_1f803a - ld hl, sbe48 + jr nz, .asm_1f803a ; c <= 7 initialise all 7 trainers? + ld hl, sBTTrainers ld a, [sbe46] ld c, a ld a, b @@ -52,14 +59,14 @@ ENDC call AddNTimes ld bc, 11 call CopyBytes - call Function1f8081 + call Function_LoadRandomBattleTowerPkmn pop af - ld hl, Unknown_1f0000 + ld hl, BattleTowerTrainerData ld bc, $0024 call AddNTimes ld bc, $0024 .asm_1f8070 - ld a, BANK(Unknown_1f0000) + ld a, BANK(BattleTowerTrainerData) call GetFarByte ld [de], a inc hl @@ -73,14 +80,16 @@ ENDC ret ; 1f8081 -Function1f8081: ; 1f8081 +Function_LoadRandomBattleTowerPkmn: ; 1f8081 ld c, $3 .loop push bc - ld a, BANK(sbe51) + ld a, BANK(sBTPkmnPrevTrainer1) call GetSRAMBank -.asm_1f8089 +.FindARandomBattleTowerPkmn + ; From Which LevelGroup are the Pkmn loaded + ; a = 1..10 ld a, [$d800] dec a ld hl, BattleTowerMons @@ -97,49 +106,53 @@ Function1f8081: ; 1f8081 and $1f cp (BattleTowerMons2 - BattleTowerMons1) / ($3b) jr nc, .asm_1f8099 + ; in register 'a' is the chosen Pkmn of the LevelGroup + ; Check if Pkmn was already loaded before + ; Check current and the 2 previous teams + ; includes check if item is double at the current team ld bc, $3b call AddNTimes ld a, [hli] ld b, a ld a, [hld] ld c, a - ld a, [w3_d100 + $0b] + ld a, [BT_OTPkmn1] cp b - jr z, .asm_1f8089 - ld a, [w3_d100 + $0c] + jr z, .FindARandomBattleTowerPkmn + ld a, [BT_OTPkmn1Item] cp c - jr z, .asm_1f8089 - ld a, [w3_d100 + $46] + jr z, .FindARandomBattleTowerPkmn + ld a, [BT_OTPkmn2] cp b - jr z, .asm_1f8089 - ld a, [w3_d100 + $47] + jr z, .FindARandomBattleTowerPkmn + ld a, [BT_OTPkmn2Item] cp c - jr z, .asm_1f8089 - ld a, [w3_d100 + $81] + jr z, .FindARandomBattleTowerPkmn + ld a, [BT_OTPkmn3] cp b - jr z, .asm_1f8089 - ld a, [w3_d100 + $82] + jr z, .FindARandomBattleTowerPkmn + ld a, [BT_OTPkmn3Item] cp c - jr z, .asm_1f8089 - ld a, [sbe51] + jr z, .FindARandomBattleTowerPkmn + ld a, [sBTPkmnPrevTrainer1] cp b - jr z, .asm_1f8089 - ld a, [sbe52] + jr z, .FindARandomBattleTowerPkmn + ld a, [sBTPkmnPrevTrainer2] cp b - jr z, .asm_1f8089 - ld a, [sbe53] + jr z, .FindARandomBattleTowerPkmn + ld a, [sBTPkmnPrevTrainer3] cp b - jr z, .asm_1f8089 - ld a, [sbe54] + jr z, .FindARandomBattleTowerPkmn + ld a, [sBTPkmnPrevPrevTrainer1] cp b - jr z, .asm_1f8089 - ld a, [sbe55] + jr z, .FindARandomBattleTowerPkmn + ld a, [sBTPkmnPrevPrevTrainer2] cp b - jr z, .asm_1f8089 - ld a, [sbe56] + jr z, .FindARandomBattleTowerPkmn + ld a, [sBTPkmnPrevPrevTrainer3] cp b - jr z, .asm_1f8089 + jr z, .FindARandomBattleTowerPkmn ld bc, $3b call CopyBytes @@ -166,18 +179,18 @@ Function1f8081: ; 1f8081 dec c jp nz, .loop - ld a, [sbe51] - ld [sbe54], a - ld a, [sbe52] - ld [sbe55], a - ld a, [sbe53] - ld [sbe56], a - ld a, [w3_d100 + $0b] - ld [sbe51], a - ld a, [w3_d100 + $46] - ld [sbe52], a - ld a, [w3_d100 + $81] - ld [sbe53], a + ld a, [sBTPkmnPrevTrainer1] + ld [sBTPkmnPrevPrevTrainer1], a + ld a, [sBTPkmnPrevTrainer2] + ld [sBTPkmnPrevPrevTrainer2], a + ld a, [sBTPkmnPrevTrainer3] + ld [sBTPkmnPrevPrevTrainer3], a + ld a, [BT_OTPkmn1] + ld [sBTPkmnPrevTrainer1], a + ld a, [BT_OTPkmn2] + ld [sBTPkmnPrevTrainer2], a + ld a, [BT_OTPkmn3] + ld [sBTPkmnPrevTrainer3], a call CloseSRAM ret ; 1f814e |