diff options
author | Marcus Huderle <huderlem@gmail.com> | 2017-06-30 15:55:42 -0700 |
---|---|---|
committer | Marcus Huderle <huderlem@gmail.com> | 2017-06-30 15:55:42 -0700 |
commit | a14fbdbaba3348c4952d4689d0ae342860b520bb (patch) | |
tree | a0327b172fab71384f9e46090571f1692d832ac1 | |
parent | 354dd03c4927bfe3f6c1bd75bc245063da68cc93 (diff) |
Move draw sprites routines to engine/main/draw_sprites/
-rwxr-xr-x | engine/main/draw_sprites/draw_blue_field_sprites.asm | 401 | ||||
-rwxr-xr-x | engine/main/draw_sprites/draw_diglett_bonus_sprites.asm | 28 | ||||
-rwxr-xr-x | engine/main/draw_sprites/draw_gengar_bonus_sprites.asm | 363 | ||||
-rwxr-xr-x | engine/main/draw_sprites/draw_meowth_bonus_sprites.asm | 305 | ||||
-rwxr-xr-x | engine/main/draw_sprites/draw_mewtwo_bonus_sprites.asm | 81 | ||||
-rwxr-xr-x | engine/main/draw_sprites/draw_red_field_sprites.asm | 759 | ||||
-rwxr-xr-x | engine/main/draw_sprites/draw_seel_bonus_sprites.asm | 129 | ||||
-rwxr-xr-x | engine/main/draw_sprites/draw_sprites.asm | 35 | ||||
-rwxr-xr-x | engine/main/draw_sprites/draw_unused_stage_sprites.asm | 8 | ||||
-rwxr-xr-x | home/text.asm | 2 | ||||
-rwxr-xr-x | main.asm | 2132 |
11 files changed, 2125 insertions, 2118 deletions
diff --git a/engine/main/draw_sprites/draw_blue_field_sprites.asm b/engine/main/draw_sprites/draw_blue_field_sprites.asm new file mode 100755 index 0000000..756971a --- /dev/null +++ b/engine/main/draw_sprites/draw_blue_field_sprites.asm @@ -0,0 +1,401 @@ +DrawSpritesBlueFieldTop: ; 0x1f330
+ ld bc, $7f00
+ callba DrawTimer
+ call Func_1f395
+ call Func_1f3e1
+ call Func_1f408
+ call Func_1f428
+ callba DrawPinball
+ call Func_1f48f
+ call Func_1f4f8
+ ret
+
+DrawSpritesBlueFieldBottom: ; 0x1f35a
+ ld bc, $7f00
+ callba DrawTimer
+ callba DrawMonCaptureAnimation
+ call DrawAnimatedMon_BlueStage
+ call DrawPikachuSavers_BlueStage
+ callba DrawFlippers
+ callba DrawPinball
+ call Func_1f4a3
+ call Func_1f509
+ call Func_1f55e
+ ret
+
+Func_1f395: ; 0x1f395
+ ld de, wd4cd
+ ld hl, Data_1f3cf
+ call Func_1f3ad
+ ld de, wd4d0
+ ld hl, Data_1f3d5
+ call Func_1f3ad
+ ld de, wd4d3
+ ld hl, Data_1f3db
+ ; fall through
+
+Func_1f3ad: ; 0x1f3ad
+ ld a, [hSCX]
+ ld b, a
+ ld a, [hli]
+ sub b
+ ld b, a
+ ld a, [hSCY]
+ ld c, a
+ ld a, [hli]
+ sub c
+ ld c, a
+ ld a, [wd4d7]
+ sub [hl]
+ inc hl
+ jr z, .asm_1f3c4
+ ld a, $0
+ jr .asm_1f3c6
+
+.asm_1f3c4
+ ld a, $1
+.asm_1f3c6
+ ld e, a
+ ld d, $0
+ add hl, de
+ ld a, [hl]
+ call LoadOAMData
+ ret
+
+Data_1f3cf:
+ db $48, $2D ; background scroll offsets (x, y)
+ db $01
+ db $E0, $E1, $E0 ; OAM ids
+
+Data_1f3d5:
+ db $33, $3E ; background scroll offsets (x, y)
+ db $00
+ db $E0, $E1, $E0 ; OAM ids
+
+Data_1f3db:
+ db $5D, $3E ; background scroll offsets (x, y)
+ db $02
+ db $E0, $E1, $E0 ; OAM ids
+
+Func_1f3e1: ; 0x1f3e1
+ ld a, $8a
+ ld hl, hSCX
+ sub [hl]
+ ld b, a
+ ld a, $53
+ ld hl, hSCY
+ sub [hl]
+ ld c, a
+ ld a, [wd50a]
+ srl a
+ srl a
+ ld e, a
+ ld d, $0
+ ld hl, OAMIds_1f402
+ add hl, de
+ ld a, [hl]
+ call LoadOAMData
+ ret
+
+OAMIds_1f402:
+ db $E8, $E9, $EA, $EB, $EC, $ED
+
+Func_1f408: ; 0x1f408
+ ld a, $18
+ ld hl, hSCX
+ sub [hl]
+ ld b, a
+ ld a, $5f
+ ld hl, hSCY
+ sub [hl]
+ ld c, a
+ ld a, [wd633]
+ ld e, a
+ ld d, $0
+ ld hl, OAMIds_1f425
+ add hl, de
+ ld a, [hl]
+ call LoadOAMData
+ ret
+
+OAMIds_1f425:
+ db $E2, $E3, $E4
+
+Func_1f428: ; 0x1f428
+ ld a, $70
+ ld hl, hSCX
+ sub [hl]
+ ld b, a
+ ld a, $59
+ ld hl, hSCY
+ sub [hl]
+ ld c, a
+ ld a, [wd638]
+ ld e, a
+ ld d, $0
+ ld hl, OAMIds_1f445
+ add hl, de
+ ld a, [hl]
+ call LoadOAMData
+ ret
+
+OAMIds_1f445:
+ db $E5, $E6, $E7
+
+DrawPikachuSavers_BlueStage: ; 0x1f448
+ ld a, [hSCX]
+ ld d, a
+ ld a, [hSCY]
+ ld e, a
+ ld a, [wd51d]
+ and a
+ ld a, [wd518]
+ jr z, .asm_1f473
+ ld a, [wd51c]
+ and a
+ jr nz, .asm_1f469
+ ld a, [hNumFramesDropped]
+ srl a
+ srl a
+ srl a
+ and $1
+ jr .asm_1f473
+
+.asm_1f469
+ ld a, [wd4b4]
+ cp $50
+ ld a, $1
+ jr nc, .asm_1f473
+ xor a
+.asm_1f473
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, PikachuSaverOAMOffsets_BlueStage
+ add hl, bc
+ ld a, [hli]
+ sub d
+ ld b, a
+ ld a, [hli]
+ sub e
+ ld c, a
+ ld a, [wPikachuSaverAnimationFrame]
+ add $e
+ call LoadOAMData
+ ret
+
+PikachuSaverOAMOffsets_BlueStage:
+ dw $7E0F
+ dw $7E92
+
+Func_1f48f: ; 0x1f48f
+ ld a, [wd551]
+ and a
+ ret nz
+ ld a, [hNumFramesDropped]
+ bit 4, a
+ ret z
+ ld de, wIndicatorStates + 5
+ ld hl, OAMDataTable_1f4ce
+ ld b, $6
+ jr asm_1f4b5
+
+Func_1f4a3: ; 0x1f4a3
+ ld a, [wd551]
+ and a
+ ret nz
+ ld a, [hNumFramesDropped]
+ bit 4, a
+ ret z
+ ld de, wIndicatorStates + 11
+ ld hl, OAMDataTable_1f4e0
+ ld b, $8
+asm_1f4b5:
+ push bc
+ ld a, [hSCX]
+ ld b, a
+ ld a, [hli]
+ sub b
+ ld b, a
+ ld a, [hSCY]
+ ld c, a
+ ld a, [hli]
+ sub c
+ ld c, a
+ ld a, [de]
+ and a
+ ld a, [hli]
+ call nz, LoadOAMData
+ pop bc
+ inc de
+ dec b
+ jr nz, asm_1f4b5
+ ret
+
+OAMDataTable_1f4ce: ; 0x1f4ce
+ ; Each entry is:
+ ; [OAM x/y Offsets],[OAM Id]
+ db $0D, $37
+ db $EE
+
+ db $35, $0D
+ db $F1
+
+ db $8E, $4E
+ db $F4
+
+ db $36, $64
+ db $EF
+
+ db $4C, $49
+ db $EE
+
+ db $61, $64
+ db $F0
+
+OAMDataTable_1f4e0: ; 0x1f4e0
+ ; Each entry is 3 bytes:
+ ; [OAM x/y Offsets],[OAM Id]
+ db $2D, $13
+ db $32
+
+ db $6A, $13
+ db $33
+
+ db $25, $2D
+ db $34
+
+ db $73, $2D
+ db $35
+
+ db $38, $14
+ db $36
+
+ db $66, $14
+ db $36
+
+ db $79, $40
+ db $37
+
+ db $89, $40
+ db $37
+
+Func_1f4f8: ; 0x1f4f8
+ ld a, [wd551]
+ and a
+ ret z
+ ld de, wd566
+ ld hl, OAMOffsetsTable_1f53a
+ ld b, $c
+ ld c, $47
+ jr asm_1f518
+
+Func_1f509: ; 0x1f509
+ ld a, [wd551]
+ and a
+ ret z
+ ld de, wd572
+ ld hl, OAMOffsetsTable_1f552
+ ld b, $6
+ ld c, $40
+asm_1f518: ; 0x1f518
+ push bc
+ ld a, [de]
+ add c
+ cp c
+ push af
+ ld a, [hSCX]
+ ld b, a
+ ld a, [hli]
+ sub b
+ ld b, a
+ ld a, [hSCY]
+ ld c, a
+ ld a, [hli]
+ sub c
+ ld c, a
+ ld a, [hNumFramesDropped]
+ and $e
+ jr nz, .asm_1f530
+ dec c
+.asm_1f530
+ pop af
+ call nz, LoadOAMData
+ pop bc
+ inc de
+ dec b
+ jr nz, asm_1f518
+ ret
+
+OAMOffsetsTable_1f53a: ; 0x1f53a
+; OAM data x, y offsets
+ db $4C, $08
+ db $2B, $12
+ db $6D, $12
+ db $15, $25
+ db $82, $25
+ db $0D, $3F
+ db $4C, $7F
+ db $8B, $3F
+ db $0A, $65
+ db $36, $7F
+ db $61, $7F
+ db $8D, $65
+
+OAMOffsetsTable_1f552: ; 0x1f552
+; OAM data x, y offsets
+ db $3B, $12
+ db $5D, $12
+ db $31, $16
+ db $67, $16
+ db $25, $2C
+ db $73, $2C
+
+Func_1f55e: ; 0x1f55e
+ ld a, [wd604]
+ and a
+ ret z
+ ld a, [wd606]
+ inc a
+ ld [wd606], a
+ ld a, $40
+ ld hl, hSCX
+ sub [hl]
+ ld b, a
+ ld a, $1
+ ld hl, hSCY
+ sub [hl]
+ ld c, a
+ ld a, [wd606]
+ srl a
+ srl a
+ srl a
+ and $3
+ add $4f
+ cp $52
+ call nz, LoadOAMData
+ ret
+
+DrawAnimatedMon_BlueStage: ; 0x1f58b
+ ld a, [wWildMonIsHittable]
+ and a
+ ret z
+ ld a, $50
+ ld hl, hSCX
+ sub [hl]
+ ld b, a
+ ld a, $3e
+ ld hl, hSCY
+ sub [hl]
+ ld c, a
+ ld a, [wd5bd]
+ ld e, a
+ ld d, $0
+ ld hl, AnimatedMonOAMIds_BlueStage
+ add hl, de
+ ld a, [hl]
+ call LoadOAMData
+ ret
+
+AnimatedMonOAMIds_BlueStage:
+ db $26, $27, $28, $29, $2A, $2B, $2C, $2D, $2E, $2F, $30, $31
diff --git a/engine/main/draw_sprites/draw_diglett_bonus_sprites.asm b/engine/main/draw_sprites/draw_diglett_bonus_sprites.asm new file mode 100755 index 0000000..a0dded5 --- /dev/null +++ b/engine/main/draw_sprites/draw_diglett_bonus_sprites.asm @@ -0,0 +1,28 @@ +DrawSpritesDiglettBonus: ; 0x1ac98
+ callba DrawFlippers
+ callba DrawPinball
+ call Func_1acb0
+ ret
+
+Func_1acb0: ; 0x1acb0
+ ld a, $40
+ ld hl, hSCX
+ sub [hl]
+ ld b, a
+ ld a, $0
+ ld hl, hSCY
+ sub [hl]
+ ld c, a
+ ld a, [wDugtrioAnimationFrame]
+ ld e, a
+ ld d, $0
+ ld hl, OAMIds_1accf
+ add hl, de
+ ld a, [hl]
+ bit 7, a
+ call z, LoadOAMData2
+ ret
+
+OAMIds_1accf:
+ db $46, $47, $48, $49, $4A, $4B, $4C, $4D, $4E, $4F, $50, $51, $52, $53
+ db $FF
diff --git a/engine/main/draw_sprites/draw_gengar_bonus_sprites.asm b/engine/main/draw_sprites/draw_gengar_bonus_sprites.asm new file mode 100755 index 0000000..212279d --- /dev/null +++ b/engine/main/draw_sprites/draw_gengar_bonus_sprites.asm @@ -0,0 +1,363 @@ +DrawSpritesGengarBonus: ; 0x18faf
+ ld bc, $7f00
+ callba DrawTimer
+ call Func_19020
+ call Func_190b9
+ call Func_19185
+ callba DrawFlippers
+ callba DrawPinball
+ ret
+
+Func_18fda:
+; unused
+ ld a, [hNewlyPressedButtons]
+ bit 6, a
+ ret z
+ ld a, [wd659]
+ and a
+ jr z, .asm_18ff8
+ ld a, $1
+ ld [wd67e], a
+ ld [wd687], a
+ xor a
+ ld [wd659], a
+ ld [wd662], a
+ ld [wd66b], a
+ ret
+
+.asm_18ff8
+ ld a, [wd67e]
+ and a
+ jr z, .asm_1900b
+ ld a, $1
+ ld [wd698], a
+ xor a
+ ld [wd67e], a
+ ld [wd687], a
+ ret
+
+.asm_1900b
+ ld a, [wd698]
+ and a
+ ret z
+ ld a, $1
+ ld [wd659], a
+ ld [wd662], a
+ ld [wd66b], a
+ xor a
+ ld [wd698], a
+ ret
+
+Func_19020: ; 0x19020
+ ld de, wd659
+ call Func_19033
+ ld de, wd662
+ call Func_19033
+ ld de, wd66b
+ call Func_19033
+ ret
+
+Func_19033: ; 0x19033
+ ld a, [de]
+ and a
+ ret z
+.asm_19036
+ call Func_19070
+ jr nc, .asm_19042
+ ld a, [rLCDC]
+ bit 7, a
+ jr z, .asm_19036
+ ret
+
+.asm_19042
+ inc de
+ inc de
+ inc de
+ inc de
+ inc de
+ inc de
+ ld a, [de]
+ ld hl, hSCX
+ sub [hl]
+ ld b, a
+ inc de
+ inc de
+ ld a, [de]
+ ld hl, hSCY
+ sub [hl]
+ ld c, a
+ dec de
+ dec de
+ dec de
+ dec de
+ dec de
+ dec de
+ ld a, [de]
+ ld e, a
+ ld d, $0
+ ld hl, OAMIds_1906b
+ add hl, de
+ ld a, [hl]
+ cp $ff
+ call nz, LoadOAMData2
+ ret
+
+OAMIds_1906b:
+ db $00, $01, $02, $03
+ db $FF
+
+Func_19070: ; 0x19070
+ ld a, [wd674]
+ and a
+ ret z
+ push de
+ dec a
+ ld [wd674], a
+ sla a
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, GastlyVideoData_190a9
+ add hl, bc
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, Bank(GengarBonusGastlyGfx)
+ ld bc, $0060
+ call LoadOrCopyVRAMData
+ ld a, $8
+ ld [wd690], a
+ ld [wd6a1], a
+ xor a
+ ld [wd67e], a
+ ld [wd687], a
+ ld [wd698], a
+ pop de
+ scf
+ ret
+
+GastlyVideoData_190a9:
+ dw vTilesSH tile $10, GengarBonusGastlyGfx
+ dw vTilesSH tile $16, GengarBonusGastlyGfx + $60
+ dw vTilesSH tile $1c, GengarBonusGastlyGfx + $c0
+ dw vTilesSH tile $22, GengarBonusGastlyGfx + $120
+
+Func_190b9: ; 0x190b9
+ ld de, wd67e
+ call Func_190c6
+ ld de, wd687
+ call Func_190c6
+ ret
+
+Func_190c6: ; 0x190c6
+ ld a, [de]
+ and a
+ ret z
+.asm_190c9
+ call Func_19104
+ jr nc, .asm_190d5
+ ld a, [rLCDC]
+ bit 7, a
+ jr z, .asm_190c9
+ ret
+
+.asm_190d5
+ inc de
+ inc de
+ inc de
+ inc de
+ inc de
+ inc de
+ ld a, [de]
+ ld hl, hSCX
+ sub [hl]
+ ld b, a
+ inc de
+ inc de
+ ld a, [de]
+ ld hl, hSCY
+ sub [hl]
+ ld c, a
+ dec de
+ dec de
+ dec de
+ dec de
+ dec de
+ dec de
+ ld a, [de]
+ ld e, a
+ ld d, $0
+ ld hl, OAMIds_190fe
+ add hl, de
+ ld a, [hl]
+ cp $ff
+ call nz, LoadOAMData2
+ ret
+
+OAMIds_190fe:
+ db $04, $05, $06, $07, $08
+ db $FF
+
+Func_19104: ; 0x19104
+ ld a, [wd690]
+ and a
+ ret z
+ push de
+ dec a
+ ld [wd690], a
+ sla a
+ sla a
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, GengarBonusStageHaunterGfxTable
+ add hl, bc
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, Bank(GengarBonusHaunterGfx)
+ call LoadOrCopyVRAMData
+ ld a, $4
+ ld [wd674], a
+ ld a, $8
+ ld [wd6a1], a
+ xor a
+ ld [wd659], a
+ ld [wd662], a
+ ld [wd66b], a
+ ld [wd698], a
+ pop de
+ scf
+ ret
+
+GengarBonusStageHaunterGfxTable: ; 0x19145
+; Graphics data for Haunter.
+; First word: length in bytes
+; Second word: destination VRAM address
+; Third word: graphics data
+; Fourth word: unused
+ dw $60, vTilesSH tile $10, GengarBonusHaunterGfx, $0000
+ dw $60, vTilesSH tile $16, GengarBonusHaunterGfx + $60, $0000
+ dw $60, vTilesSH tile $1c, GengarBonusHaunterGfx + $c0, $0000
+ dw $60, vTilesSH tile $22, GengarBonusHaunterGfx + $120, $0000
+ dw $20, vTilesSH tile $28, GengarBonusHaunterGfx + $180, $0000
+ dw $40, vTilesOB tile $1a, GengarBonusHaunterGfx + $1a0, $0000
+ dw $60, vTilesOB tile $1e, GengarBonusHaunterGfx + $1e0, $0000
+ dw $60, vTilesOB tile $24, GengarBonusHaunterGfx + $240, $0000
+
+Func_19185: ; 0x19185
+ ld de, wd698
+ call Func_1918c
+ ret
+
+Func_1918c: ; 0x1918c
+ ld a, [de]
+ and a
+ ret z
+.asm_1918f
+ call Func_191cb
+ jr nc, .asm_1919b
+ ld a, [rLCDC]
+ bit 7, a
+ jr z, .asm_1918f
+ ret
+
+.asm_1919b
+ inc de
+ inc de
+ inc de
+ inc de
+ inc de
+ inc de
+ ld a, [de]
+ ld hl, hSCX
+ sub [hl]
+ ld b, a
+ inc de
+ inc de
+ ld a, [de]
+ ld hl, hSCY
+ sub [hl]
+ ld c, a
+ dec de
+ dec de
+ dec de
+ dec de
+ dec de
+ dec de
+ ld a, [de]
+ ld e, a
+ ld d, $0
+ ld hl, OAMIds_191c4
+ add hl, de
+ ld a, [hl]
+ cp $ff
+ call nz, LoadOAMData2
+ ret
+
+OAMIds_191c4:
+ db $09, $0A, $0B, $0C, $0D, $0E
+ db $FF
+
+Func_191cb: ; 0x191cb
+ ld a, [wd6a1]
+ and a
+ ret z
+ push de
+ dec a
+ ld [wd6a1], a
+ sla a
+ sla a
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, GengarBonusStageGengarGfxTable
+ add hl, bc
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, $26
+ call LoadOrCopyVRAMData
+ ld a, $4
+ ld [wd674], a
+ ld a, $8
+ ld [wd690], a
+ xor a
+ ld [wd659], a
+ ld [wd662], a
+ ld [wd66b], a
+ ld [wd67e], a
+ ld [wd687], a
+ pop de
+ scf
+ ret
+
+GengarBonusStageGengarGfxTable:
+ dw $60, vTilesSH tile $10, GengarBonusGengarGfx, $0000
+ dw $60, vTilesSH tile $16, GengarBonusGengarGfx + $60, $0000
+ dw $60, vTilesSH tile $1c, GengarBonusGengarGfx + $c0, $0000
+ dw $60, vTilesSH tile $22, GengarBonusGengarGfx + $120, $0000
+ dw $20, vTilesSH tile $28, GengarBonusGengarGfx + $180, $0000
+ dw $40, vTilesOB tile $1a, GengarBonusGengarGfx + $1a0, $0000
+ dw $60, vTilesOB tile $1e, GengarBonusGengarGfx + $1e0, $0000
+ dw $60, vTilesOB tile $24, GengarBonusGengarGfx + $240, $0000
diff --git a/engine/main/draw_sprites/draw_meowth_bonus_sprites.asm b/engine/main/draw_sprites/draw_meowth_bonus_sprites.asm new file mode 100755 index 0000000..5d54a08 --- /dev/null +++ b/engine/main/draw_sprites/draw_meowth_bonus_sprites.asm @@ -0,0 +1,305 @@ +DrawSpritesMeowthBonus: ; 0x2583b
+ ld bc, $7f65
+ callba DrawTimer
+ callba DrawFlippers
+ call Func_259fe
+ call Func_25895
+ call Func_2595e
+ call Func_2586c
+ callba DrawPinball
+ call Func_25a39
+ ret
+
+Func_2586c: ; 0x2586c
+ ld a, [wMeowthXPosition]
+ ld hl, hSCX
+ sub [hl]
+ ld b, a
+ ld a, [wMeowthYPosition]
+ ld hl, hSCY
+ sub [hl]
+ ld c, a
+ ld a, [wMeowthAnimationFrame]
+ ld e, a
+ ld d, $0
+ ld hl, OAMIds_2588b
+ add hl, de
+ ld a, [hl]
+ call LoadOAMData2
+ ret
+
+OAMIds_2588b:
+ db $21, $22, $23, $24, $25, $26, $27, $28, $33, $34
+
+Func_25895: ; 0x25895
+ ld a, [wd714]
+ cp $b
+ jr nz, .asm_258a0
+ xor a
+ ld [wd714], a
+.asm_258a0
+ ld a, [wd715]
+ cp $b
+ jr nz, .asm_258ab
+ xor a
+ ld [wd715], a
+.asm_258ab
+ ld a, [wd716]
+ cp $b
+ jr nz, .asm_258b6
+ xor a
+ ld [wd716], a
+.asm_258b6
+ ld a, [wd71a]
+ ld hl, hSCX
+ sub [hl]
+ ld b, a
+ ld a, [wd727]
+ ld hl, hSCY
+ sub [hl]
+ ld c, a
+ ld a, [wd717]
+ sla a
+ ld e, a
+ ld d, $0
+ ld hl, OAMPointers_25935
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [wd714]
+ ld e, a
+ ld d, $0
+ add hl, de
+ ld a, [hl]
+ call LoadOAMData2
+ ld a, [wd71b]
+ ld hl, hSCX
+ sub [hl]
+ ld b, a
+ ld a, [wd728]
+ ld hl, hSCY
+ sub [hl]
+ ld c, a
+ ld a, [wd718]
+ sla a
+ ld e, a
+ ld d, $0
+ ld hl, OAMPointers_25935
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [wd715]
+ ld e, a
+ ld d, $0
+ add hl, de
+ ld a, [hl]
+ call LoadOAMData2
+ ld a, [wd71c]
+ ld hl, hSCX
+ sub [hl]
+ ld b, a
+ ld a, [wd729]
+ ld hl, hSCY
+ sub [hl]
+ ld c, a
+ ld a, [wd719]
+ sla a
+ ld e, a
+ ld d, $0
+ ld hl, OAMPointers_25935
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [wd716]
+ ld e, a
+ ld d, $0
+ add hl, de
+ ld a, [hl]
+ call LoadOAMData2
+ ret
+
+OAMPointers_25935:
+ dw OAMIds_2593d
+ dw OAMIds_2593d
+ dw OAMIds_25948
+ dw OAMIds_25953
+
+OAMIds_2593d:
+ db $29, $29, $29, $29, $2A, $2A, $2A, $2A, $2A, $2A, $2A
+
+OAMIds_25948:
+ db $2B, $2B, $2B, $2B, $2B, $2B, $2B, $2C, $2C, $2C, $2C
+
+OAMIds_25953:
+ db $2D, $32, $31, $30, $2F, $2E, $2F, $30, $31, $32, $32
+
+Func_2595e: ; 0x2595e
+ ld a, [wd71e]
+ cp $b
+ jr nz, .asm_25969
+ xor a
+ ld [wd71e], a
+.asm_25969
+ ld a, [wd71f]
+ cp $b
+ jr nz, .asm_25974
+ xor a
+ ld [wd71f], a
+.asm_25974
+ ld a, [wd720]
+ cp $b
+ jr nz, .asm_2597f
+ xor a
+ ld [wd720], a
+.asm_2597f
+ ld a, [wd724]
+ ld hl, hSCX
+ sub [hl]
+ ld b, a
+ ld a, [wd731]
+ ld hl, hSCY
+ sub [hl]
+ ld c, a
+ ld a, [wd721]
+ sla a
+ ld e, a
+ ld d, $0
+ ld hl, OAMPointers_25935
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [wd71e]
+ ld e, a
+ ld d, $0
+ add hl, de
+ ld a, [hl]
+ call LoadOAMData2
+ ld a, [wd725]
+ ld hl, hSCX
+ sub [hl]
+ ld b, a
+ ld a, [wd732]
+ ld hl, hSCY
+ sub [hl]
+ ld c, a
+ ld a, [wd722]
+ sla a
+ ld e, a
+ ld d, $0
+ ld hl, OAMPointers_25935
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [wd71f]
+ ld e, a
+ ld d, $0
+ add hl, de
+ ld a, [hl]
+ call LoadOAMData2
+ ld a, [wd726]
+ ld hl, hSCX
+ sub [hl]
+ ld b, a
+ ld a, [wd733]
+ ld hl, hSCY
+ sub [hl]
+ ld c, a
+ ld a, [wd723]
+ sla a
+ ld e, a
+ ld d, $0
+ ld hl, OAMPointers_25935
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [wd720]
+ ld e, a
+ ld d, $0
+ add hl, de
+ ld a, [hl]
+ call LoadOAMData2
+ ret
+
+Func_259fe: ; 0x259fe
+ ld a, [wd795]
+ and a
+ ret z
+ ld de, wd79c
+ ld a, [de]
+ ld hl, hSCX
+ sub [hl]
+ ld b, a
+ inc de
+ inc de
+ ld a, [de]
+ ld hl, hSCY
+ sub [hl]
+ ld c, a
+ dec de
+ dec de
+ dec de
+ dec de
+ dec de
+ dec de
+ ld a, [de]
+ ld e, a
+ ld d, $0
+ ld hl, OAMIds_25a29
+ add hl, de
+ ld a, [hl]
+ cp $ff
+ call nz, LoadOAMData2
+ ret
+
+OAMIds_25a29:
+ db $35, $36, $37, $38, $39, $3A, $3B, $3C, $3D, $3E, $3F, $40, $41, $42, $43
+ db $FF
+
+Func_25a39: ; 0x25a39
+ ld a, [wd64e]
+ and a
+ ret z
+ ld a, [wd652]
+ ld hl, hSCX
+ sub [hl]
+ ld b, a
+ xor a
+ ld hl, hSCY
+ sub [hl]
+ ld c, a
+ ld a, [wd64f]
+ cp $a
+ jr c, .asm_25a58
+ ld de, $0000
+ jr .asm_25a5b
+
+.asm_25a58
+ ld de, $0001
+.asm_25a5b
+ ld hl, OAMIds_25a7a
+ add hl, de
+ ld a, [hl]
+ call LoadOAMData2
+ ld hl, wd64f
+ inc [hl]
+ ld a, [hl]
+ cp $14
+ ret c
+ ld [hl], $0
+ ld hl, wd650
+ inc [hl]
+ ld a, [hl]
+ cp $a
+ ret nz
+ xor a
+ ld [wd64e], a
+ ret
+
+OAMIds_25a7a: ; 0x25a7a
+ db $44, $45
diff --git a/engine/main/draw_sprites/draw_mewtwo_bonus_sprites.asm b/engine/main/draw_sprites/draw_mewtwo_bonus_sprites.asm new file mode 100755 index 0000000..a4397a0 --- /dev/null +++ b/engine/main/draw_sprites/draw_mewtwo_bonus_sprites.asm @@ -0,0 +1,81 @@ +DrawSpritesMewtwoBonus: ; 0x1994e
+ ld bc, $7f65
+ callba DrawTimer
+ call Func_1999d
+ callba DrawFlippers
+ callba DrawPinball
+ call Func_19976
+ ret
+
+Func_19976: ; 0x19976
+ ld a, $40
+ ld hl, hSCX
+ sub [hl]
+ ld b, a
+ ld a, $0
+ ld hl, hSCY
+ sub [hl]
+ ld c, a
+ ld a, [wd6ad]
+ ld e, a
+ ld d, $0
+ ld hl, OAMIds_19995
+ add hl, de
+ ld a, [hl]
+ cp $ff
+ call nz, LoadOAMData2
+ ret
+
+OAMIds_19995:
+ db $0F, $10, $11, $12, $17, $18, $19
+ db $FF
+
+Func_1999d: ; 0x1999d
+ ld de, wd6b6
+ call Func_199be
+ ld de, wd6be
+ call Func_199be
+ ld de, wd6c6
+ call Func_199be
+ ld de, wd6ce
+ call Func_199be
+ ld de, wd6d6
+ call Func_199be
+ ld de, wd6de
+ ; fall through
+
+Func_199be: ; 0x199be
+ ld a, [de]
+ and a
+ ret z
+ inc de
+ inc de
+ inc de
+ inc de
+ inc de
+ ld a, [de]
+ ld hl, hSCX
+ sub [hl]
+ ld b, a
+ inc de
+ ld a, [de]
+ ld hl, hSCY
+ sub [hl]
+ ld c, a
+ dec de
+ dec de
+ dec de
+ dec de
+ ld a, [de]
+ ld e, a
+ ld d, $0
+ ld hl, OAMIds_199e6
+ add hl, de
+ ld a, [hl]
+ cp $ff
+ call nz, LoadOAMData2
+ ret
+
+OAMIds_199e6:
+ db $13, $14, $15, $16, $1A, $1B, $1C, $1D, $1E, $1F, $20
+ db $FF
diff --git a/engine/main/draw_sprites/draw_red_field_sprites.asm b/engine/main/draw_sprites/draw_red_field_sprites.asm new file mode 100755 index 0000000..d56e840 --- /dev/null +++ b/engine/main/draw_sprites/draw_red_field_sprites.asm @@ -0,0 +1,759 @@ +DrawSpritesRedFieldTop: ; 0x1755c
+ ld bc, $7f00
+ call DrawTimer
+ call Func_17cc4
+ call Func_17d34
+ call Func_17d59
+ call Func_17d7a
+ call Func_17d92
+ call Func_17de1
+ call DrawPinball
+ call Func_17efb
+ call Func_17f64
+ ret
+
+DrawSpritesRedFieldBottom: ; 0x1757e
+ ld bc, $7f00
+ call DrawTimer
+ call DrawMonCaptureAnimation
+ call DrawAnimatedMon_RedStage
+ call DrawPikachuSavers_RedStage
+ callba DrawFlippers
+ call DrawPinball
+ call Func_17f0f
+ call Func_17f75
+ call Func_17fca
+ ret
+
+DrawTimer: ; 0x175a4
+ ld a, [wd57d]
+ and a
+ ret z
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr nz, DrawTimer_GameBoyColor
+ ld a, [wd580]
+ and a
+ ret z
+ ld a, [wd581]
+ and a
+ jr z, .DrawTimer_GameBoy
+ dec a
+ ld [wd581], a
+ ret
+
+.DrawTimer_GameBoy
+ call Func_1762f
+ ld hl, wTimerDigits
+ ld a, [wTimerMinutes]
+ and $f
+ call LoadTimerDigitTiles
+ ld a, [wTimerSeconds]
+ swap a
+ and $f
+ call LoadTimerDigitTiles
+ ld a, [wTimerSeconds]
+ and $f
+ call LoadTimerDigitTiles
+ ld d, $0
+ ld hl, TimerOAMIds
+ add hl, de
+ ld a, [hli]
+ call DrawTimerDigit
+ ld a, [hli]
+ call DrawTimerDigit
+ ld a, [hli]
+ call DrawTimerDigit
+ ld a, [hli]
+ call DrawTimerDigit
+ ret
+
+DrawTimer_GameBoyColor: ; 0x175f5
+; Loads the OAM data for the timer in the top-right corner of the screen.
+ ld a, [wTimerMinutes]
+ and $f
+ call DrawTimerDigit_GameBoyColor
+ ld a, $a ; colon
+ call DrawTimerDigit_GameBoyColor
+ ld a, [wTimerSeconds]
+ swap a
+ and $f
+ call DrawTimerDigit_GameBoyColor ; tens digit of the minutes
+ ld a, [wTimerSeconds]
+ and $f
+ call DrawTimerDigit_GameBoyColor ; ones digit of the minutes
+ ret
+
+TimerOAMIds:
+ db $d7, $da, $d8, $d9
+ db $dc, $df, $dd, $de
+ db $dc, $db, $dd, $de
+ db $f5, $f8, $f6, $f7
+
+DrawTimerDigit_GameBoyColor: ; 0x17625
+ add $b1 ; the timer digits' OAM ids start at $b1
+DrawTimerDigit: ; 0x17627
+ call LoadOAMData
+ ld a, b
+ add $8
+ ld b, a
+ ret
+
+Func_1762f: ; 0x1762f
+ lb de, $60, $0c
+ ld a, [wCurrentStage]
+ cp $6
+ ret nc
+ lb de, $00, $00
+ bit 0, a
+ ret z
+ lb de, $30, $04
+ ld a, [wInSpecialMode]
+ and a
+ ret z
+ ld a, [wSpecialMode]
+ and a
+ ret nz
+ lb de, $30, $08
+ ret
+
+LoadTimerDigitTiles: ; 0x1764f
+ push bc
+ push de
+ cp [hl]
+ jr z, .skip
+ push af
+ push hl
+ add d
+ call Func_17665
+ pop hl
+ pop af
+ ld [hl], a
+.skip
+ inc hl
+ pop de
+ ld a, d
+ add $10
+ ld d, a
+ pop bc
+ ret
+
+Func_17665: ; 0x17665
+ ld c, a
+ ld b, $0
+ sla c
+ rl b
+ ld hl, TimerDigitsTileData
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, Bank(TimerDigitsTileData)
+ call Func_10aa
+ ret
+
+INCLUDE "data/timer_digits_tiledata.asm"
+
+DrawMonCaptureAnimation: ; 0x17c67
+ ld a, [wCapturingMon]
+ and a
+ ret z
+ ld a, $50
+ ld hl, hSCX
+ sub [hl]
+ ld b, a
+ ld a, $38
+ ld hl, hSCY
+ sub [hl]
+ ld c, a
+ ld a, [wBallCaptureAnimationFrame]
+ ld e, a
+ ld d, $0
+ ld hl, BallCaptureAnimationOAMIds
+ add hl, de
+ ld a, [hl]
+ call LoadOAMData
+ ret
+
+BallCaptureAnimationOAMIds:
+ db $19, $1A, $1B, $1C, $1D, $1E, $1F, $20, $21, $22, $23, $24, $25
+
+DrawAnimatedMon_RedStage: ; 0x17c96
+ ld a, [wWildMonIsHittable]
+ and a
+ ret z
+ ld a, $50
+ ld hl, hSCX
+ sub [hl]
+ ld b, a
+ ld a, $3e
+ ld hl, hSCY
+ sub [hl]
+ ld c, a
+ ld a, [wd5bd]
+ ld e, a
+ ld d, $0
+ ld hl, AnimatedMonOAMIds_RedStage
+ add hl, de
+ ld a, [hl]
+ call LoadOAMData
+ ret
+
+AnimatedMonOAMIds_RedStage:
+ db $26, $27, $28, $29, $2A, $2B, $2C, $2D, $2E, $2F, $30, $31
+
+Func_17cc4: ; 0x17cc4
+ ld de, wd4cd
+ ld hl, OAMData_17d15
+ call Func_17cdc
+ ld de, wd4d0
+ ld hl, OAMData_17d1b
+ call Func_17cdc
+ ld de, wd4d3
+ ld hl, OAMData_17d21
+ ; fall through
+
+Func_17cdc: ; 0x17cdc
+ push hl
+ ld hl, AnimationData_17d27
+ call UpdateAnimation
+ ld h, d
+ ld l, e
+ ld a, [hl]
+ and a
+ jr nz, .asm_17cf6
+ call GenRandom
+ and $7
+ add $1e
+ ld [hli], a
+ ld a, $1
+ ld [hli], a
+ xor a
+ ld [hl], a
+.asm_17cf6
+ pop hl
+ inc de
+ ld a, [hSCX]
+ ld b, a
+ ld a, [hli]
+ sub b
+ ld b, a
+ ld a, [hSCY]
+ ld c, a
+ ld a, [hli]
+ sub c
+ ld c, a
+ ld a, [wd4d7]
+ sub [hl]
+ inc hl
+ jr z, .asm_17d0c
+ ld a, [de]
+.asm_17d0c
+ ld e, a
+ ld d, $0
+ add hl, de
+ ld a, [hl]
+ call LoadOAMData
+ ret
+
+OAMData_17d15:
+ db $3A, $4E ; x, y offsets
+ db $00 ; ???
+ db $BD, $BC, $CE ; oam ids
+
+OAMData_17d1b:
+ db $53, $44 ; x, y offsets
+ db $01 ; ???
+ db $BD, $BC, $CD ; oam ids
+
+OAMData_17d21:
+ db $4D, $60 ; x, y offsets
+ db $02 ; ???
+ db $BD, $BC, $CF ; oam ids
+
+AnimationData_17d27:
+; Each entry is [duration][OAM id]
+ db $1E, $01
+ db $02, $02
+ db $03, $01
+ db $02, $02
+ db $03, $01
+ db $02, $02
+ db $00 ; terminator
+
+Func_17d34: ; 0x17d34
+ ld a, $0
+ ld hl, hSCX
+ sub [hl]
+ ld b, a
+ ld a, $10
+ ld hl, hSCY
+ sub [hl]
+ ld c, a
+ ld a, [wStageCollisionState]
+ ld e, a
+ ld d, $0
+ ld hl, OAMIds_17d51
+ add hl, de
+ ld a, [hl]
+ call LoadOAMData
+ ret
+
+OAMIds_17d51:
+ db $C9
+ db $C9
+ db $C9
+ db $C9
+ db $C8
+ db $C8
+ db $CA
+ db $CA
+
+Func_17d59: ; 0x17d59
+ ld a, $74
+ ld hl, hSCX
+ sub [hl]
+ ld b, a
+ ld a, $52
+ ld hl, hSCY
+ sub [hl]
+ ld c, a
+ ld a, [wBellsproutAnimationFrame]
+ ld e, a
+ ld d, $0
+ ld hl, BellsproutAnimationOAMIds
+ add hl, de
+ ld a, [hl]
+ call LoadOAMData
+ ret
+
+BellsproutAnimationOAMIds: ; 0x17d76
+ db $BE
+ db $BF
+ db $C0
+ db $C1
+
+Func_17d7a: ; 0x17d7a
+ ld a, [hGameBoyColorFlag]
+ and a
+ ret z
+ ld a, $67
+ ld hl, hSCX
+ sub [hl]
+ ld b, a
+ ld a, $54
+ ld hl, hSCY
+ sub [hl]
+ ld c, a
+ ld a, $cc
+ call LoadOAMData
+ ret
+
+Func_17d92: ; 0x17d92
+ ld a, [hGameBoyColorFlag]
+ and a
+ ret z
+ ld hl, AnimationData_17dd0
+ ld de, wd504
+ call UpdateAnimation
+ ld a, [wd504]
+ and a
+ jr nz, .asm_17db1
+ ld a, $13
+ ld [wd504], a
+ xor a
+ ld [wd505], a
+ ld [wd506], a
+.asm_17db1
+ ld a, $2b
+ ld hl, hSCX
+ sub [hl]
+ ld b, a
+ ld a, $69
+ ld hl, hSCY
+ sub [hl]
+ ld c, a
+ ld a, [wd505]
+ ld e, a
+ ld d, $0
+ ld hl, OAMIds_17dce
+ add hl, de
+ ld a, [hl]
+ call LoadOAMData
+ ret
+
+OAMIds_17dce: ; 0x17dce
+ db $CB
+ db $D0
+
+AnimationData_17dd0:
+; Each entry is [duration][OAM id]
+ db $14, $00
+ db $13, $01
+ db $15, $00
+ db $12, $01
+ db $14, $00
+ db $13, $01
+ db $16, $00
+ db $13, $01
+ db $0 ; terminator
+
+Func_17de1: ; 0x17de1
+ ld a, $88
+ ld hl, hSCX
+ sub [hl]
+ ld b, a
+ ld a, $5a
+ ld hl, hSCY
+ sub [hl]
+ ld c, a
+ ld a, [wd50a]
+ srl a
+ srl a
+ ld e, a
+ ld d, $0
+ ld hl, OAMIds_17e02
+ add hl, de
+ ld a, [hl]
+ call LoadOAMData
+ ret
+
+OAMIds_17e02: ; 0x17e02
+ db $C2
+ db $C3
+ db $C4
+ db $C5
+ db $C6
+ db $C7
+
+DrawPikachuSavers_RedStage: ; 0x17e08
+ ld a, [hSCX]
+ ld d, a
+ ld a, [hSCY]
+ ld e, a
+ ld a, [wd51d]
+ and a
+ ld a, [wd518]
+ jr z, .asm_17e33
+ ld a, [wd51c]
+ and a
+ jr nz, .asm_17e29
+ ld a, [hNumFramesDropped]
+ srl a
+ srl a
+ srl a
+ and $1
+ jr .asm_17e33
+
+.asm_17e29
+ ld a, [wd4b4]
+ cp $50
+ ld a, $1
+ jr nc, .asm_17e33
+ xor a
+.asm_17e33
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, PikachuSaverOAMOffsets_RedStage
+ add hl, bc
+ ld a, [hli]
+ sub d
+ ld b, a
+ ld a, [hli]
+ sub e
+ ld c, a
+ ld a, [wPikachuSaverAnimationFrame]
+ add $e
+ call LoadOAMData
+ ret
+
+PikachuSaverOAMOffsets_RedStage:
+ dw $7E0F
+ dw $7E92
+
+Func_17e4f: ; 0x17e4f
+; unused
+ ld hl, UnusedData_7e55
+ jp Func_17e5e
+
+UnusedData_7e55: ; 0x17e55
+ db $00, $2B, $69, $CB, $00, $67, $54, $CC
+ db $FF
+
+Func_17e5e: ; 0x17e5e
+; unused
+ ld a, [hGameBoyColorFlag]
+ ld e, a
+ ld a, [hSCX]
+ ld d, a
+.asm_17e64
+ ld a, [hli]
+ cp $ff
+ ret z
+ or e
+ jr nz, .asm_17e70
+ inc hl
+ inc hl
+ inc hl
+ jr .asm_17e64
+.asm_17e70
+ ld a, [hli]
+ sub d
+ ld b, a
+ ld a, [hSCY]
+ ld c, a
+ ld a, [hli]
+ sub c
+ ld c, a
+ ld a, [hli]
+ bit 0, e
+ call nz, LoadOAMData
+ jr .asm_17e64
+
+DrawPinball: ; 0x17e81
+ ld a, [wd548]
+ and a
+ ret z
+ ld hl, wBallSpin
+ ld a, [wBallRotation]
+ add [hl]
+ ld [wBallRotation], a
+ ld a, [wBallXPos + 1]
+ inc a
+ ld hl, hSCX
+ sub [hl]
+ ld b, a
+ ld a, [wBallYPos + 1]
+ inc a
+ sub $10
+ ld hl, hSCY
+ sub [hl]
+ ld c, a
+ ld a, [wBallRotation]
+ srl a
+ srl a
+ srl a ; divide wBallRotation by 8 because
+ srl a ; there are 8 frames of the ball spinning
+ and $7
+ add $0
+ call LoadOAMData
+ ld a, [hGameBoyColorFlag]
+ and a
+ ret nz
+ ld a, [hGameBoyColorFlag]
+ and a
+ ret nz
+ ld a, [hSGBFlag]
+ and a
+ ret nz
+ ld a, [wd4c5]
+ inc a
+ ld hl, hSCX
+ sub [hl]
+ ld b, a
+ ld a, [wd4c6]
+ inc a
+ sub $10
+ ld hl, hSCY
+ sub [hl]
+ ld c, a
+ ld a, [wd4c7]
+ srl a
+ srl a
+ srl a
+ srl a
+ and $7
+ add $0
+ call LoadOAMData
+ ld a, [wBallXPos + 1]
+ ld [wd4c5], a
+ ld a, [wBallYPos + 1]
+ ld [wd4c6], a
+ ld a, [wBallRotation]
+ ld [wd4c7], a
+ ret
+
+Func_17efb: ; 0x17efb
+ ld a, [wd551]
+ and a
+ ret nz
+ ld a, [hNumFramesDropped]
+ bit 4, a
+ ret z
+ ld de, wIndicatorStates + 5
+ ld hl, OAMData_17f3a
+ ld b, $6
+ jr asm_17f21
+
+Func_17f0f: ; 0x17f0f
+ ld a, [wd551]
+ and a
+ ret nz
+ ld a, [hNumFramesDropped]
+ bit 4, a
+ ret z
+ ld de, wIndicatorStates + 11
+ ld hl, OAMData_17f4c
+ ld b, $8
+asm_17f21: ; 0x17f21
+ push bc
+ ld a, [hSCX]
+ ld b, a
+ ld a, [hli]
+ sub b
+ ld b, a
+ ld a, [hSCY]
+ ld c, a
+ ld a, [hli]
+ sub c
+ ld c, a
+ ld a, [de]
+ and a
+ ld a, [hli]
+ call nz, LoadOAMData
+ pop bc
+ inc de
+ dec b
+ jr nz, asm_17f21
+ ret
+
+OAMData_17f3a:
+ db $0D, $37 ; x, y offsets
+ db $D1 ; oam id
+
+ db $46, $22 ; x, y offsets
+ db $D6 ; oam id
+
+ db $8A, $4A ; x, y offsets
+ db $D2 ; oam id
+
+ db $41, $81 ; x, y offsets
+ db $D3 ; oam id
+
+ db $3D, $65 ; x, y offsets
+ db $D5 ; oam id
+
+ db $73, $74 ; x, y offsets
+ db $D4 ; oam id
+
+OAMData_17f4c:
+ db $2D, $13 ; x, y offsets
+ db $32 ; oam id
+
+ db $6A, $13 ; x, y offsets
+ db $33 ; oam id
+
+ db $25, $2D ; x, y offsets
+ db $34 ; oam id
+
+ db $73, $2D ; x, y offsets
+ db $35 ; oam id
+
+ db $0F, $40 ; x, y offsets
+ db $36 ; oam id
+
+ db $1F, $40 ; x, y offsets
+ db $36 ; oam id
+
+ db $79, $40 ; x, y offsets
+ db $37 ; oam id
+
+ db $89, $40 ; x, y offsets
+ db $37 ; oam id
+
+Func_17f64: ; 0x17f64
+ ld a, [wd551]
+ and a
+ ret z
+ ld de, wd566
+ ld hl, OAMOffsets_17fa6
+ ld b, $c
+ ld c, $39
+ jr asm_17f84
+
+Func_17f75: ; 0x17f75
+ ld a, [wd551]
+ and a
+ ret z
+ ld de, wd572
+ ld hl, OAMOffsets_17fbe
+ ld b, $6
+ ld c, $40
+asm_17f84: ; 0x17f84
+ push bc
+ ld a, [de]
+ add c
+ cp c
+ push af
+ ld a, [hSCX]
+ ld b, a
+ ld a, [hli]
+ sub b
+ ld b, a
+ ld a, [hSCY]
+ ld c, a
+ ld a, [hli]
+ sub c
+ ld c, a
+ ld a, [hNumFramesDropped]
+ and $e
+ jr nz, .asm_17f9c
+ dec c
+.asm_17f9c
+ pop af
+ call nz, LoadOAMData
+ pop bc
+ inc de
+ dec b
+ jr nz, asm_17f84
+ ret
+
+OAMOffsets_17fa6:
+; x, y offsets
+ db $4C, $0C
+ db $32, $12
+ db $66, $12
+ db $19, $25
+ db $7F, $25
+ db $1E, $36
+ db $7F, $36
+ db $0E, $65
+ db $8B, $65
+ db $49, $7A
+ db $59, $7A
+ db $71, $7A
+
+OAMOffsets_17fbe:
+; x, y offsets
+ db $3D, $13
+ db $5B, $13
+ db $31, $17
+ db $67, $17
+ db $2E, $2C
+ db $6A, $2C
+
+Func_17fca: ; 0x17fca
+ ld a, [wd604]
+ and a
+ ret z
+ ld a, [wd606]
+ inc a
+ ld [wd606], a
+ ld a, $40
+ ld hl, hSCX
+ sub [hl]
+ ld b, a
+ ld a, $1
+ ld hl, hSCY
+ sub [hl]
+ ld c, a
+ ld a, [wd606]
+ srl a
+ srl a
+ srl a
+ and $3
+ add $4f
+ cp $52
+ call nz, LoadOAMData
+ ret
diff --git a/engine/main/draw_sprites/draw_seel_bonus_sprites.asm b/engine/main/draw_sprites/draw_seel_bonus_sprites.asm new file mode 100755 index 0000000..261de5b --- /dev/null +++ b/engine/main/draw_sprites/draw_seel_bonus_sprites.asm @@ -0,0 +1,129 @@ +DrawSpritesSeelBonus: ; 0x26b7e
+ ld bc, $7f65
+ callba DrawTimer
+ call Func_26bf7
+ callba DrawFlippers
+ callba DrawPinball
+ call Func_26ba9
+ call Func_26c3c
+ ret
+
+Func_26ba9: ; 0x26ba9
+ ld de, wd76e
+ call Func_26bbc
+ ld de, wd778
+ call Func_26bbc
+ ld de, wd782
+ call Func_26bbc
+ ret
+
+Func_26bbc: ; 0x26bbc
+ ld a, [de]
+ ld hl, hSCX
+ sub [hl]
+ ld b, a
+ inc de
+ inc de
+ ld a, [de]
+ ld hl, hSCY
+ sub [hl]
+ ld c, a
+ dec de
+ dec de
+ dec de
+ dec de
+ dec de
+ dec de
+ ld a, [de]
+ ld e, a
+ ld d, $0
+ ld hl, OAMIds_26bdf
+ add hl, de
+ ld a, [hl]
+ cp $ff
+ call nz, LoadOAMData2
+ ret
+
+OAMIds_26bdf:
+ db $54, $55, $56, $57, $58, $59, $5A, $5B, $5C, $5D, $5E, $5F, $60, $61, $62, $63
+ db $64, $65, $66, $67, $68, $69, $6A
+ db $FF
+
+Func_26bf7: ; 0x26bf7: ; 0x26bf7
+ ld a, [wd795]
+ cp $0
+ ret z
+ ld de, wd79c
+ ld a, [de]
+ ld hl, hSCX
+ sub [hl]
+ ld b, a
+ inc de
+ inc de
+ ld a, [de]
+ ld hl, hSCY
+ sub [hl]
+ ld c, a
+ dec de
+ dec de
+ dec de
+ dec de
+ dec de
+ dec de
+ ld a, [de]
+ ld e, a
+ ld d, $0
+ ld hl, OAMIds_26c23
+ add hl, de
+ ld a, [hl]
+ cp $ff
+ call nz, LoadOAMData2
+ ret
+
+OAMIds_26c23:
+ db $6B, $6C, $6D, $6E, $6F, $70, $71, $72, $73, $74, $75, $76, $77, $78, $79, $7A
+ db $7B, $7C, $7D, $7E, $7F, $80, $81, $82
+ db $FF
+
+Func_26c3c: ; 0x26c3c
+ ld a, [wd64e]
+ and a
+ ret z
+ ld a, [wd652]
+ ld hl, hSCX
+ sub [hl]
+ ld b, a
+ xor a
+ ld hl, hSCY
+ sub [hl]
+ ld c, a
+ ld a, [wd64f]
+ cp $a
+ jr c, .asm_26c5b
+ ld de, $0000
+ jr .asm_26c5e
+
+.asm_26c5b
+ ld de, $0001
+.asm_26c5e
+ ld hl, OAMIds_26c7d
+ add hl, de
+ ld a, [hl]
+ call LoadOAMData2
+ ld hl, wd64f
+ inc [hl]
+ ld a, [hl]
+ cp $14
+ ret c
+ ld [hl], $0
+ ld hl, wd650
+ inc [hl]
+ ld a, [hl]
+ cp $a
+ ret nz
+ xor a
+ ld [wd64e], a
+ ret
+
+OAMIds_26c7d:
+ db $83, $84
diff --git a/engine/main/draw_sprites/draw_sprites.asm b/engine/main/draw_sprites/draw_sprites.asm new file mode 100755 index 0000000..8e653bf --- /dev/null +++ b/engine/main/draw_sprites/draw_sprites.asm @@ -0,0 +1,35 @@ +DrawSpritesForStage: ; 0x84b7
+; Draw sprites (OAM data) for the current stage.
+ ld a, [wCurrentStage]
+ call CallInFollowingTable
+CallTable_84bd: ; 0x84bd
+ ; STAGE_RED_FIELD_TOP
+ padded_dab DrawSpritesRedFieldTop
+ ; STAGE_RED_FIELD_BOTTOM
+ padded_dab DrawSpritesRedFieldBottom
+ padded_dab Func_18079
+ padded_dab Func_18084
+ ; STAGE_BLUE_FIELD_TOP
+ padded_dab DrawSpritesBlueFieldTop
+ ; STAGE_BLUE_FIELD_BOTTOM
+ padded_dab DrawSpritesBlueFieldBottom
+ ; STAGE_GENGAR_BONUS
+ padded_dab DrawSpritesGengarBonus
+ ; STAGE_GENGAR_BONUS
+ padded_dab DrawSpritesGengarBonus
+ ; STAGE_MEWTWO_BONUS
+ padded_dab DrawSpritesMewtwoBonus
+ ; STAGE_MEWTWO_BONUS
+ padded_dab DrawSpritesMewtwoBonus
+ ; STAGE_MEOWTH_BONUS
+ padded_dab DrawSpritesMeowthBonus
+ ; STAGE_MEOWTH_BONUS
+ padded_dab DrawSpritesMeowthBonus
+ ; STAGE_DIGLETT_BONUS
+ padded_dab DrawSpritesDiglettBonus
+ ; STAGE_DIGLETT_BONUS
+ padded_dab DrawSpritesDiglettBonus
+ ; STAGE_SEEL_BONUS
+ padded_dab DrawSpritesSeelBonus
+ ; STAGE_SEEL_BONUS
+ padded_dab DrawSpritesSeelBonus
diff --git a/engine/main/draw_sprites/draw_unused_stage_sprites.asm b/engine/main/draw_sprites/draw_unused_stage_sprites.asm new file mode 100755 index 0000000..473a8c2 --- /dev/null +++ b/engine/main/draw_sprites/draw_unused_stage_sprites.asm @@ -0,0 +1,8 @@ +Func_18079: ; 0x18079
+ callba DrawPinball
+ ret
+
+Func_18084: ; 0x18084
+ callba DrawFlippers
+ callba DrawPinball
+ ret
diff --git a/home/text.asm b/home/text.asm index e0bc060..7740610 100755 --- a/home/text.asm +++ b/home/text.asm @@ -689,7 +689,7 @@ Func_3475: ; 0x3475 ld a, [wCurrentStage] bit 0, a callba nz, HandleFlippers - callba Func_84b7 + callba DrawSpritesForStage call Func_33e3 call CleanOAMBuffer rst AdvanceFrame @@ -15,43 +15,10 @@ INCLUDE "engine/copyright_screen.asm" INCLUDE "engine/main/stage_init/init_stages.asm" INCLUDE "engine/main/ball_init/ball_init.asm" INCLUDE "engine/main/load_stage_data/load_stage_data.asm" - -Func_84b7: ; 0x84b7 - ld a, [wCurrentStage] - call CallInFollowingTable -PointerTable_84bd: ; 0x84bd - ; STAGE_RED_FIELD_TOP - padded_dab Func_1755c - ; STAGE_RED_FIELD_BOTTOM - padded_dab Func_1757e - padded_dab Func_18079 - padded_dab Func_18084 - ; STAGE_BLUE_FIELD_TOP - padded_dab Func_1f330 - ; STAGE_BLUE_FIELD_BOTTOM - padded_dab Func_1f35a - ; STAGE_GENGAR_BONUS - padded_dab Func_18faf - ; STAGE_GENGAR_BONUS - padded_dab Func_18faf - ; STAGE_MEWTWO_BONUS - padded_dab Func_1994e - ; STAGE_MEWTWO_BONUS - padded_dab Func_1994e - ; STAGE_MEOWTH_BONUS - padded_dab Func_2583b - ; STAGE_MEOWTH_BONUS - padded_dab Func_2583b - ; STAGE_DIGLETT_BONUS - padded_dab Func_1ac98 - ; STAGE_DIGLETT_BONUS - padded_dab Func_1ac98 - ; STAGE_SEEL_BONUS - padded_dab Func_26b7e - ; STAGE_SEEL_BONUS - padded_dab Func_26b7e +INCLUDE "engine/main/draw_sprites/draw_sprites.asm" Func_84fd: +; unused? ld a, [hGameBoyColorFlag] and a jr z, .not_cgb @@ -1760,7 +1727,7 @@ GameScreenFunction_StartBall: ; 0xd87f callba LoadStageData callba Func_ed5e call ClearOAMBuffer - callba Func_84b7 + callba DrawSpritesForStage ld a, [wd849] and a call nz, Func_e5d @@ -1853,7 +1820,7 @@ GameScreenFunction_HandleBallPhysics: ; 0xd909 .skip_collision call MoveBallPosition callba CheckStageTransition - callba Func_84b7 + callba DrawSpritesForStage call Func_33e3 ld a, [wd5cb] and a @@ -1914,7 +1881,7 @@ GameScreenFunction_HandleBallLoss: ; 0xda36 ld a, [wCurrentStage] bit 0, a callba nz, HandleFlippers - callba Func_84b7 + callba DrawSpritesForStage call Func_33e3 callba Func_85c7 ld a, [wd5ca] @@ -3696,7 +3663,7 @@ FieldVerticalTransition: ; 0xe674 xor a ld [wd548], a ld [wd803], a - callba Func_84b7 + callba DrawSpritesForStage call CleanOAMBuffer pop af ld [wd548], a @@ -4195,7 +4162,7 @@ Func_ed8e: ; 0xed8e ld a, $3 ld hl, HandleFlippers call nz, BankSwitch - callba Func_84b7 + callba DrawSpritesForStage call Func_33e3 call CleanOAMBuffer rst AdvanceFrame @@ -17044,765 +17011,7 @@ TileData_17551: ; 0x17551 db $AE, $AF, $AE, $AF, $AE, $AF db $00 -Func_1755c: ; 0x1755c - ld bc, $7f00 - call DrawTimer - call Func_17cc4 - call Func_17d34 - call Func_17d59 - call Func_17d7a - call Func_17d92 - call Func_17de1 - call DrawPinball - call Func_17efb - call Func_17f64 - ret - -Func_1757e: ; 0x1757e - ld bc, $7f00 - call DrawTimer - call DrawMonCaptureAnimation - call DrawAnimatedMon_RedStage - call DrawPikachuSavers_RedStage - callba DrawFlippers - call DrawPinball - call Func_17f0f - call Func_17f75 - call Func_17fca - ret - -DrawTimer: ; 0x175a4 - ld a, [wd57d] - and a - ret z - ld a, [hGameBoyColorFlag] - and a - jr nz, DrawTimer_GameBoyColor - ld a, [wd580] - and a - ret z - ld a, [wd581] - and a - jr z, .DrawTimer_GameBoy - dec a - ld [wd581], a - ret - -.DrawTimer_GameBoy - call Func_1762f - ld hl, wTimerDigits - ld a, [wTimerMinutes] - and $f - call LoadTimerDigitTiles - ld a, [wTimerSeconds] - swap a - and $f - call LoadTimerDigitTiles - ld a, [wTimerSeconds] - and $f - call LoadTimerDigitTiles - ld d, $0 - ld hl, TimerOAMIds - add hl, de - ld a, [hli] - call DrawTimerDigit - ld a, [hli] - call DrawTimerDigit - ld a, [hli] - call DrawTimerDigit - ld a, [hli] - call DrawTimerDigit - ret - -DrawTimer_GameBoyColor: ; 0x175f5 -; Loads the OAM data for the timer in the top-right corner of the screen. - ld a, [wTimerMinutes] - and $f - call DrawTimerDigit_GameBoyColor - ld a, $a ; colon - call DrawTimerDigit_GameBoyColor - ld a, [wTimerSeconds] - swap a - and $f - call DrawTimerDigit_GameBoyColor ; tens digit of the minutes - ld a, [wTimerSeconds] - and $f - call DrawTimerDigit_GameBoyColor ; ones digit of the minutes - ret - -TimerOAMIds: - db $d7, $da, $d8, $d9 - db $dc, $df, $dd, $de - db $dc, $db, $dd, $de - db $f5, $f8, $f6, $f7 - -DrawTimerDigit_GameBoyColor: ; 0x17625 - add $b1 ; the timer digits' OAM ids start at $b1 -DrawTimerDigit: ; 0x17627 - call LoadOAMData - ld a, b - add $8 - ld b, a - ret - -Func_1762f: ; 0x1762f - lb de, $60, $0c - ld a, [wCurrentStage] - cp $6 - ret nc - lb de, $00, $00 - bit 0, a - ret z - lb de, $30, $04 - ld a, [wInSpecialMode] - and a - ret z - ld a, [wSpecialMode] - and a - ret nz - lb de, $30, $08 - ret - -LoadTimerDigitTiles: ; 0x1764f - push bc - push de - cp [hl] - jr z, .skip - push af - push hl - add d - call Func_17665 - pop hl - pop af - ld [hl], a -.skip - inc hl - pop de - ld a, d - add $10 - ld d, a - pop bc - ret - -Func_17665: ; 0x17665 - ld c, a - ld b, $0 - sla c - rl b - ld hl, TimerDigitsTileData - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - ld a, Bank(TimerDigitsTileData) - call Func_10aa - ret - -INCLUDE "data/timer_digits_tiledata.asm" - -DrawMonCaptureAnimation: ; 0x17c67 - ld a, [wCapturingMon] - and a - ret z - ld a, $50 - ld hl, hSCX - sub [hl] - ld b, a - ld a, $38 - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wBallCaptureAnimationFrame] - ld e, a - ld d, $0 - ld hl, BallCaptureAnimationOAMIds - add hl, de - ld a, [hl] - call LoadOAMData - ret - -BallCaptureAnimationOAMIds: - db $19, $1A, $1B, $1C, $1D, $1E, $1F, $20, $21, $22, $23, $24, $25 - -DrawAnimatedMon_RedStage: ; 0x17c96 - ld a, [wWildMonIsHittable] - and a - ret z - ld a, $50 - ld hl, hSCX - sub [hl] - ld b, a - ld a, $3e - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wd5bd] - ld e, a - ld d, $0 - ld hl, AnimatedMonOAMIds_RedStage - add hl, de - ld a, [hl] - call LoadOAMData - ret - -AnimatedMonOAMIds_RedStage: - db $26, $27, $28, $29, $2A, $2B, $2C, $2D, $2E, $2F, $30, $31 - -Func_17cc4: ; 0x17cc4 - ld de, wd4cd - ld hl, OAMData_17d15 - call Func_17cdc - ld de, wd4d0 - ld hl, OAMData_17d1b - call Func_17cdc - ld de, wd4d3 - ld hl, OAMData_17d21 - ; fall through - -Func_17cdc: ; 0x17cdc - push hl - ld hl, AnimationData_17d27 - call UpdateAnimation - ld h, d - ld l, e - ld a, [hl] - and a - jr nz, .asm_17cf6 - call GenRandom - and $7 - add $1e - ld [hli], a - ld a, $1 - ld [hli], a - xor a - ld [hl], a -.asm_17cf6 - pop hl - inc de - ld a, [hSCX] - ld b, a - ld a, [hli] - sub b - ld b, a - ld a, [hSCY] - ld c, a - ld a, [hli] - sub c - ld c, a - ld a, [wd4d7] - sub [hl] - inc hl - jr z, .asm_17d0c - ld a, [de] -.asm_17d0c - ld e, a - ld d, $0 - add hl, de - ld a, [hl] - call LoadOAMData - ret - -OAMData_17d15: - db $3A, $4E ; x, y offsets - db $00 ; ??? - db $BD, $BC, $CE ; oam ids - -OAMData_17d1b: - db $53, $44 ; x, y offsets - db $01 ; ??? - db $BD, $BC, $CD ; oam ids - -OAMData_17d21: - db $4D, $60 ; x, y offsets - db $02 ; ??? - db $BD, $BC, $CF ; oam ids - -AnimationData_17d27: -; Each entry is [duration][OAM id] - db $1E, $01 - db $02, $02 - db $03, $01 - db $02, $02 - db $03, $01 - db $02, $02 - db $00 ; terminator - -Func_17d34: ; 0x17d34 - ld a, $0 - ld hl, hSCX - sub [hl] - ld b, a - ld a, $10 - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wStageCollisionState] - ld e, a - ld d, $0 - ld hl, OAMIds_17d51 - add hl, de - ld a, [hl] - call LoadOAMData - ret - -OAMIds_17d51: - db $C9 - db $C9 - db $C9 - db $C9 - db $C8 - db $C8 - db $CA - db $CA - -Func_17d59: ; 0x17d59 - ld a, $74 - ld hl, hSCX - sub [hl] - ld b, a - ld a, $52 - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wBellsproutAnimationFrame] - ld e, a - ld d, $0 - ld hl, BellsproutAnimationOAMIds - add hl, de - ld a, [hl] - call LoadOAMData - ret - -BellsproutAnimationOAMIds: ; 0x17d76 - db $BE - db $BF - db $C0 - db $C1 - -Func_17d7a: ; 0x17d7a - ld a, [hGameBoyColorFlag] - and a - ret z - ld a, $67 - ld hl, hSCX - sub [hl] - ld b, a - ld a, $54 - ld hl, hSCY - sub [hl] - ld c, a - ld a, $cc - call LoadOAMData - ret - -Func_17d92: ; 0x17d92 - ld a, [hGameBoyColorFlag] - and a - ret z - ld hl, AnimationData_17dd0 - ld de, wd504 - call UpdateAnimation - ld a, [wd504] - and a - jr nz, .asm_17db1 - ld a, $13 - ld [wd504], a - xor a - ld [wd505], a - ld [wd506], a -.asm_17db1 - ld a, $2b - ld hl, hSCX - sub [hl] - ld b, a - ld a, $69 - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wd505] - ld e, a - ld d, $0 - ld hl, OAMIds_17dce - add hl, de - ld a, [hl] - call LoadOAMData - ret - -OAMIds_17dce: ; 0x17dce - db $CB - db $D0 - -AnimationData_17dd0: -; Each entry is [duration][OAM id] - db $14, $00 - db $13, $01 - db $15, $00 - db $12, $01 - db $14, $00 - db $13, $01 - db $16, $00 - db $13, $01 - db $0 ; terminator - -Func_17de1: ; 0x17de1 - ld a, $88 - ld hl, hSCX - sub [hl] - ld b, a - ld a, $5a - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wd50a] - srl a - srl a - ld e, a - ld d, $0 - ld hl, OAMIds_17e02 - add hl, de - ld a, [hl] - call LoadOAMData - ret - -OAMIds_17e02: ; 0x17e02 - db $C2 - db $C3 - db $C4 - db $C5 - db $C6 - db $C7 - -DrawPikachuSavers_RedStage: ; 0x17e08 - ld a, [hSCX] - ld d, a - ld a, [hSCY] - ld e, a - ld a, [wd51d] - and a - ld a, [wd518] - jr z, .asm_17e33 - ld a, [wd51c] - and a - jr nz, .asm_17e29 - ld a, [hNumFramesDropped] - srl a - srl a - srl a - and $1 - jr .asm_17e33 - -.asm_17e29 - ld a, [wd4b4] - cp $50 - ld a, $1 - jr nc, .asm_17e33 - xor a -.asm_17e33 - sla a - ld c, a - ld b, $0 - ld hl, PikachuSaverOAMOffsets_RedStage - add hl, bc - ld a, [hli] - sub d - ld b, a - ld a, [hli] - sub e - ld c, a - ld a, [wPikachuSaverAnimationFrame] - add $e - call LoadOAMData - ret - -PikachuSaverOAMOffsets_RedStage: - dw $7E0F - dw $7E92 - -Func_17e4f: ; 0x17e4f -; unused - ld hl, UnusedData_7e55 - jp Func_17e5e - -UnusedData_7e55: ; 0x17e55 - db $00, $2B, $69, $CB, $00, $67, $54, $CC - db $FF - -Func_17e5e: ; 0x17e5e -; unused - ld a, [hGameBoyColorFlag] - ld e, a - ld a, [hSCX] - ld d, a -.asm_17e64 - ld a, [hli] - cp $ff - ret z - or e - jr nz, .asm_17e70 - inc hl - inc hl - inc hl - jr .asm_17e64 -.asm_17e70 - ld a, [hli] - sub d - ld b, a - ld a, [hSCY] - ld c, a - ld a, [hli] - sub c - ld c, a - ld a, [hli] - bit 0, e - call nz, LoadOAMData - jr .asm_17e64 - -DrawPinball: ; 0x17e81 - ld a, [wd548] - and a - ret z - ld hl, wBallSpin - ld a, [wBallRotation] - add [hl] - ld [wBallRotation], a - ld a, [wBallXPos + 1] - inc a - ld hl, hSCX - sub [hl] - ld b, a - ld a, [wBallYPos + 1] - inc a - sub $10 - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wBallRotation] - srl a - srl a - srl a ; divide wBallRotation by 8 because - srl a ; there are 8 frames of the ball spinning - and $7 - add $0 - call LoadOAMData - ld a, [hGameBoyColorFlag] - and a - ret nz - ld a, [hGameBoyColorFlag] - and a - ret nz - ld a, [hSGBFlag] - and a - ret nz - ld a, [wd4c5] - inc a - ld hl, hSCX - sub [hl] - ld b, a - ld a, [wd4c6] - inc a - sub $10 - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wd4c7] - srl a - srl a - srl a - srl a - and $7 - add $0 - call LoadOAMData - ld a, [wBallXPos + 1] - ld [wd4c5], a - ld a, [wBallYPos + 1] - ld [wd4c6], a - ld a, [wBallRotation] - ld [wd4c7], a - ret - -Func_17efb: ; 0x17efb - ld a, [wd551] - and a - ret nz - ld a, [hNumFramesDropped] - bit 4, a - ret z - ld de, wIndicatorStates + 5 - ld hl, OAMData_17f3a - ld b, $6 - jr asm_17f21 - -Func_17f0f: ; 0x17f0f - ld a, [wd551] - and a - ret nz - ld a, [hNumFramesDropped] - bit 4, a - ret z - ld de, wIndicatorStates + 11 - ld hl, OAMData_17f4c - ld b, $8 -asm_17f21: ; 0x17f21 - push bc - ld a, [hSCX] - ld b, a - ld a, [hli] - sub b - ld b, a - ld a, [hSCY] - ld c, a - ld a, [hli] - sub c - ld c, a - ld a, [de] - and a - ld a, [hli] - call nz, LoadOAMData - pop bc - inc de - dec b - jr nz, asm_17f21 - ret - -OAMData_17f3a: - db $0D, $37 ; x, y offsets - db $D1 ; oam id - - db $46, $22 ; x, y offsets - db $D6 ; oam id - - db $8A, $4A ; x, y offsets - db $D2 ; oam id - - db $41, $81 ; x, y offsets - db $D3 ; oam id - - db $3D, $65 ; x, y offsets - db $D5 ; oam id - - db $73, $74 ; x, y offsets - db $D4 ; oam id - -OAMData_17f4c: - db $2D, $13 ; x, y offsets - db $32 ; oam id - - db $6A, $13 ; x, y offsets - db $33 ; oam id - - db $25, $2D ; x, y offsets - db $34 ; oam id - - db $73, $2D ; x, y offsets - db $35 ; oam id - - db $0F, $40 ; x, y offsets - db $36 ; oam id - - db $1F, $40 ; x, y offsets - db $36 ; oam id - - db $79, $40 ; x, y offsets - db $37 ; oam id - - db $89, $40 ; x, y offsets - db $37 ; oam id - -Func_17f64: ; 0x17f64 - ld a, [wd551] - and a - ret z - ld de, wd566 - ld hl, OAMOffsets_17fa6 - ld b, $c - ld c, $39 - jr asm_17f84 - -Func_17f75: ; 0x17f75 - ld a, [wd551] - and a - ret z - ld de, wd572 - ld hl, OAMOffsets_17fbe - ld b, $6 - ld c, $40 -asm_17f84: ; 0x17f84 - push bc - ld a, [de] - add c - cp c - push af - ld a, [hSCX] - ld b, a - ld a, [hli] - sub b - ld b, a - ld a, [hSCY] - ld c, a - ld a, [hli] - sub c - ld c, a - ld a, [hNumFramesDropped] - and $e - jr nz, .asm_17f9c - dec c -.asm_17f9c - pop af - call nz, LoadOAMData - pop bc - inc de - dec b - jr nz, asm_17f84 - ret - -OAMOffsets_17fa6: -; x, y offsets - db $4C, $0C - db $32, $12 - db $66, $12 - db $19, $25 - db $7F, $25 - db $1E, $36 - db $7F, $36 - db $0E, $65 - db $8B, $65 - db $49, $7A - db $59, $7A - db $71, $7A - -OAMOffsets_17fbe: -; x, y offsets - db $3D, $13 - db $5B, $13 - db $31, $17 - db $67, $17 - db $2E, $2C - db $6A, $2C - -Func_17fca: ; 0x17fca - ld a, [wd604] - and a - ret z - ld a, [wd606] - inc a - ld [wd606], a - ld a, $40 - ld hl, hSCX - sub [hl] - ld b, a - ld a, $1 - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wd606] - srl a - srl a - srl a - and $3 - add $4f - cp $52 - call nz, LoadOAMData - ret +INCLUDE "engine/main/draw_sprites/draw_red_field_sprites.asm" SECTION "bank6", ROMX, BANK[$6] @@ -17824,15 +17033,7 @@ Func_1806e: ; 0x1806e callba Func_1652d ret -Func_18079: ; 0x18079 - callba DrawPinball - ret - -Func_18084: ; 0x18084 - callba DrawFlippers - callba DrawPinball - ret - +INCLUDE "engine/main/draw_sprites/draw_unused_stage_sprites.asm" INCLUDE "engine/main/stage_init/init_gengar_bonus.asm" INCLUDE "engine/main/ball_init/ball_init_gengar_bonus.asm" INCLUDE "engine/main/load_stage_data/load_gengar_bonus.asm" @@ -19972,369 +19173,7 @@ TileData_18f93: ; 0x18f93 db $00 ; terminator -Func_18faf: ; 0x18faf - ld bc, $7f00 - callba DrawTimer - call Func_19020 - call Func_190b9 - call Func_19185 - callba DrawFlippers - callba DrawPinball - ret - -Func_18fda: - ld a, [hNewlyPressedButtons] - bit 6, a - ret z - ld a, [wd659] - and a - jr z, .asm_18ff8 - ld a, $1 - ld [wd67e], a - ld [wd687], a - xor a - ld [wd659], a - ld [wd662], a - ld [wd66b], a - ret - -.asm_18ff8 - ld a, [wd67e] - and a - jr z, .asm_1900b - ld a, $1 - ld [wd698], a - xor a - ld [wd67e], a - ld [wd687], a - ret - -.asm_1900b - ld a, [wd698] - and a - ret z - ld a, $1 - ld [wd659], a - ld [wd662], a - ld [wd66b], a - xor a - ld [wd698], a - ret - -Func_19020: ; 0x19020 - ld de, wd659 - call Func_19033 - ld de, wd662 - call Func_19033 - ld de, wd66b - call Func_19033 - ret - -Func_19033: ; 0x19033 - ld a, [de] - and a - ret z -.asm_19036 - call Func_19070 - jr nc, .asm_19042 - ld a, [rLCDC] - bit 7, a - jr z, .asm_19036 - ret - -.asm_19042 - inc de - inc de - inc de - inc de - inc de - inc de - ld a, [de] - ld hl, hSCX - sub [hl] - ld b, a - inc de - inc de - ld a, [de] - ld hl, hSCY - sub [hl] - ld c, a - dec de - dec de - dec de - dec de - dec de - dec de - ld a, [de] - ld e, a - ld d, $0 - ld hl, OAMIds_1906b - add hl, de - ld a, [hl] - cp $ff - call nz, LoadOAMData2 - ret - -OAMIds_1906b: - db $00, $01, $02, $03 - db $FF - -Func_19070: ; 0x19070 - ld a, [wd674] - and a - ret z - push de - dec a - ld [wd674], a - sla a - sla a - ld c, a - ld b, $0 - ld hl, GastlyVideoData_190a9 - add hl, bc - ld a, [hli] - ld e, a - ld a, [hli] - ld d, a - ld a, [hli] - ld h, [hl] - ld l, a - ld a, Bank(GengarBonusGastlyGfx) - ld bc, $0060 - call LoadOrCopyVRAMData - ld a, $8 - ld [wd690], a - ld [wd6a1], a - xor a - ld [wd67e], a - ld [wd687], a - ld [wd698], a - pop de - scf - ret - -GastlyVideoData_190a9: - dw vTilesSH tile $10, GengarBonusGastlyGfx - dw vTilesSH tile $16, GengarBonusGastlyGfx + $60 - dw vTilesSH tile $1c, GengarBonusGastlyGfx + $c0 - dw vTilesSH tile $22, GengarBonusGastlyGfx + $120 - -Func_190b9: ; 0x190b9 - ld de, wd67e - call Func_190c6 - ld de, wd687 - call Func_190c6 - ret - -Func_190c6: ; 0x190c6 - ld a, [de] - and a - ret z -.asm_190c9 - call Func_19104 - jr nc, .asm_190d5 - ld a, [rLCDC] - bit 7, a - jr z, .asm_190c9 - ret - -.asm_190d5 - inc de - inc de - inc de - inc de - inc de - inc de - ld a, [de] - ld hl, hSCX - sub [hl] - ld b, a - inc de - inc de - ld a, [de] - ld hl, hSCY - sub [hl] - ld c, a - dec de - dec de - dec de - dec de - dec de - dec de - ld a, [de] - ld e, a - ld d, $0 - ld hl, OAMIds_190fe - add hl, de - ld a, [hl] - cp $ff - call nz, LoadOAMData2 - ret - -OAMIds_190fe: - db $04, $05, $06, $07, $08 - db $FF - -Func_19104: ; 0x19104 - ld a, [wd690] - and a - ret z - push de - dec a - ld [wd690], a - sla a - sla a - sla a - ld c, a - ld b, $0 - ld hl, GengarBonusStageHaunterGfxTable - add hl, bc - ld a, [hli] - ld c, a - ld a, [hli] - ld b, a - ld a, [hli] - ld e, a - ld a, [hli] - ld d, a - ld a, [hli] - ld h, [hl] - ld l, a - ld a, Bank(GengarBonusHaunterGfx) - call LoadOrCopyVRAMData - ld a, $4 - ld [wd674], a - ld a, $8 - ld [wd6a1], a - xor a - ld [wd659], a - ld [wd662], a - ld [wd66b], a - ld [wd698], a - pop de - scf - ret - -GengarBonusStageHaunterGfxTable: ; 0x19145 -; Graphics data for Haunter. -; First word: length in bytes -; Second word: destination VRAM address -; Third word: graphics data -; Fourth word: unused - dw $60, vTilesSH tile $10, GengarBonusHaunterGfx, $0000 - dw $60, vTilesSH tile $16, GengarBonusHaunterGfx + $60, $0000 - dw $60, vTilesSH tile $1c, GengarBonusHaunterGfx + $c0, $0000 - dw $60, vTilesSH tile $22, GengarBonusHaunterGfx + $120, $0000 - dw $20, vTilesSH tile $28, GengarBonusHaunterGfx + $180, $0000 - dw $40, vTilesOB tile $1a, GengarBonusHaunterGfx + $1a0, $0000 - dw $60, vTilesOB tile $1e, GengarBonusHaunterGfx + $1e0, $0000 - dw $60, vTilesOB tile $24, GengarBonusHaunterGfx + $240, $0000 - -Func_19185: ; 0x19185 - ld de, wd698 - call Func_1918c - ret - -Func_1918c: ; 0x1918c - ld a, [de] - and a - ret z -.asm_1918f - call Func_191cb - jr nc, .asm_1919b - ld a, [rLCDC] - bit 7, a - jr z, .asm_1918f - ret - -.asm_1919b - inc de - inc de - inc de - inc de - inc de - inc de - ld a, [de] - ld hl, hSCX - sub [hl] - ld b, a - inc de - inc de - ld a, [de] - ld hl, hSCY - sub [hl] - ld c, a - dec de - dec de - dec de - dec de - dec de - dec de - ld a, [de] - ld e, a - ld d, $0 - ld hl, OAMIds_191c4 - add hl, de - ld a, [hl] - cp $ff - call nz, LoadOAMData2 - ret - -OAMIds_191c4: - db $09, $0A, $0B, $0C, $0D, $0E - db $FF - -Func_191cb: ; 0x191cb - ld a, [wd6a1] - and a - ret z - push de - dec a - ld [wd6a1], a - sla a - sla a - sla a - ld c, a - ld b, $0 - ld hl, GengarBonusStageGengarGfxTable - add hl, bc - ld a, [hli] - ld c, a - ld a, [hli] - ld b, a - ld a, [hli] - ld e, a - ld a, [hli] - ld d, a - ld a, [hli] - ld h, [hl] - ld l, a - ld a, $26 - call LoadOrCopyVRAMData - ld a, $4 - ld [wd674], a - ld a, $8 - ld [wd690], a - xor a - ld [wd659], a - ld [wd662], a - ld [wd66b], a - ld [wd67e], a - ld [wd687], a - pop de - scf - ret - -GengarBonusStageGengarGfxTable: - dw $60, vTilesSH tile $10, GengarBonusGengarGfx, $0000 - dw $60, vTilesSH tile $16, GengarBonusGengarGfx + $60, $0000 - dw $60, vTilesSH tile $1c, GengarBonusGengarGfx + $c0, $0000 - dw $60, vTilesSH tile $22, GengarBonusGengarGfx + $120, $0000 - dw $20, vTilesSH tile $28, GengarBonusGengarGfx + $180, $0000 - dw $40, vTilesOB tile $1a, GengarBonusGengarGfx + $1a0, $0000 - dw $60, vTilesOB tile $1e, GengarBonusGengarGfx + $1e0, $0000 - dw $60, vTilesOB tile $24, GengarBonusGengarGfx + $240, $0000 - +INCLUDE "engine/main/draw_sprites/draw_gengar_bonus_sprites.asm" INCLUDE "engine/main/stage_init/init_mewtwo_bonus.asm" INCLUDE "engine/main/ball_init/ball_init_mewtwo_bonus.asm" INCLUDE "engine/main/load_stage_data/load_mewtwo_bonus.asm" @@ -21280,88 +20119,7 @@ OrbitingBallAnimation4: ; 0x1994b db $0C, $0B db $00 ; terminator -Func_1994e: ; 0x1994e - ld bc, $7f65 - callba DrawTimer - call Func_1999d - callba DrawFlippers - callba DrawPinball - call Func_19976 - ret - -Func_19976: ; 0x19976 - ld a, $40 - ld hl, hSCX - sub [hl] - ld b, a - ld a, $0 - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wd6ad] - ld e, a - ld d, $0 - ld hl, OAMIds_19995 - add hl, de - ld a, [hl] - cp $ff - call nz, LoadOAMData2 - ret - -OAMIds_19995: - db $0F, $10, $11, $12, $17, $18, $19 - db $FF - -Func_1999d: ; 0x1999d - ld de, wd6b6 - call Func_199be - ld de, wd6be - call Func_199be - ld de, wd6c6 - call Func_199be - ld de, wd6ce - call Func_199be - ld de, wd6d6 - call Func_199be - ld de, wd6de - ; fall through - -Func_199be: ; 0x199be - ld a, [de] - and a - ret z - inc de - inc de - inc de - inc de - inc de - ld a, [de] - ld hl, hSCX - sub [hl] - ld b, a - inc de - ld a, [de] - ld hl, hSCY - sub [hl] - ld c, a - dec de - dec de - dec de - dec de - ld a, [de] - ld e, a - ld d, $0 - ld hl, OAMIds_199e6 - add hl, de - ld a, [hl] - cp $ff - call nz, LoadOAMData2 - ret - -OAMIds_199e6: - db $13, $14, $15, $16, $1A, $1B, $1C, $1D, $1E, $1F, $20 - db $FF - +INCLUDE "engine/main/draw_sprites/draw_mewtwo_bonus_sprites.asm" INCLUDE "engine/main/stage_init/init_diglett_bonus.asm" INCLUDE "engine/main/ball_init/ball_init_diglett_bonus.asm" INCLUDE "engine/main/load_stage_data/load_diglett_bonus.asm" @@ -22267,34 +21025,7 @@ AnimationData_1ac93: ; 0x1ac93 db $40, $0D db $00 ; terminator -Func_1ac98: ; 0x1ac98 - callba DrawFlippers - callba DrawPinball - call Func_1acb0 - ret - -Func_1acb0: ; 0x1acb0 - ld a, $40 - ld hl, hSCX - sub [hl] - ld b, a - ld a, $0 - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wDugtrioAnimationFrame] - ld e, a - ld d, $0 - ld hl, OAMIds_1accf - add hl, de - ld a, [hl] - bit 7, a - call z, LoadOAMData2 - ret - -OAMIds_1accf: - db $46, $47, $48, $49, $4A, $4B, $4C, $4D, $4E, $4F, $50, $51, $52, $53 - db $FF +INCLUDE "engine/main/draw_sprites/draw_diglett_bonus_sprites.asm" SECTION "bank7", ROMX, BANK[$7] @@ -30409,407 +29140,7 @@ Func_1f2ff: ; 0x1f2ff ld [wIndicatorStates + 1], a ret -Func_1f330: ; 0x1f330 - ld bc, $7f00 - callba DrawTimer - call Func_1f395 - call Func_1f3e1 - call Func_1f408 - call Func_1f428 - callba DrawPinball - call Func_1f48f - call Func_1f4f8 - ret - -Func_1f35a: ; 0x1f35a - ld bc, $7f00 - callba DrawTimer - callba DrawMonCaptureAnimation - call DrawAnimatedMon_BlueStage - call DrawPikachuSavers_BlueStage - callba DrawFlippers - callba DrawPinball - call Func_1f4a3 - call Func_1f509 - call Func_1f55e - ret - -Func_1f395: ; 0x1f395 - ld de, wd4cd - ld hl, Data_1f3cf - call Func_1f3ad - ld de, wd4d0 - ld hl, Data_1f3d5 - call Func_1f3ad - ld de, wd4d3 - ld hl, Data_1f3db - ; fall through - -Func_1f3ad: ; 0x1f3ad - ld a, [hSCX] - ld b, a - ld a, [hli] - sub b - ld b, a - ld a, [hSCY] - ld c, a - ld a, [hli] - sub c - ld c, a - ld a, [wd4d7] - sub [hl] - inc hl - jr z, .asm_1f3c4 - ld a, $0 - jr .asm_1f3c6 - -.asm_1f3c4 - ld a, $1 -.asm_1f3c6 - ld e, a - ld d, $0 - add hl, de - ld a, [hl] - call LoadOAMData - ret - -Data_1f3cf: - db $48, $2D ; background scroll offsets (x, y) - db $01 - db $E0, $E1, $E0 ; OAM ids - -Data_1f3d5: - db $33, $3E ; background scroll offsets (x, y) - db $00 - db $E0, $E1, $E0 ; OAM ids - -Data_1f3db: - db $5D, $3E ; background scroll offsets (x, y) - db $02 - db $E0, $E1, $E0 ; OAM ids - -Func_1f3e1: ; 0x1f3e1 - ld a, $8a - ld hl, hSCX - sub [hl] - ld b, a - ld a, $53 - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wd50a] - srl a - srl a - ld e, a - ld d, $0 - ld hl, OAMIds_1f402 - add hl, de - ld a, [hl] - call LoadOAMData - ret - -OAMIds_1f402: - db $E8, $E9, $EA, $EB, $EC, $ED - -Func_1f408: ; 0x1f408 - ld a, $18 - ld hl, hSCX - sub [hl] - ld b, a - ld a, $5f - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wd633] - ld e, a - ld d, $0 - ld hl, OAMIds_1f425 - add hl, de - ld a, [hl] - call LoadOAMData - ret - -OAMIds_1f425: - db $E2, $E3, $E4 - -Func_1f428: ; 0x1f428 - ld a, $70 - ld hl, hSCX - sub [hl] - ld b, a - ld a, $59 - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wd638] - ld e, a - ld d, $0 - ld hl, OAMIds_1f445 - add hl, de - ld a, [hl] - call LoadOAMData - ret - -OAMIds_1f445: - db $E5, $E6, $E7 - -DrawPikachuSavers_BlueStage: ; 0x1f448 - ld a, [hSCX] - ld d, a - ld a, [hSCY] - ld e, a - ld a, [wd51d] - and a - ld a, [wd518] - jr z, .asm_1f473 - ld a, [wd51c] - and a - jr nz, .asm_1f469 - ld a, [hNumFramesDropped] - srl a - srl a - srl a - and $1 - jr .asm_1f473 - -.asm_1f469 - ld a, [wd4b4] - cp $50 - ld a, $1 - jr nc, .asm_1f473 - xor a -.asm_1f473 - sla a - ld c, a - ld b, $0 - ld hl, PikachuSaverOAMOffsets_BlueStage - add hl, bc - ld a, [hli] - sub d - ld b, a - ld a, [hli] - sub e - ld c, a - ld a, [wPikachuSaverAnimationFrame] - add $e - call LoadOAMData - ret - -PikachuSaverOAMOffsets_BlueStage: - dw $7E0F - dw $7E92 - -Func_1f48f: ; 0x1f48f - ld a, [wd551] - and a - ret nz - ld a, [hNumFramesDropped] - bit 4, a - ret z - ld de, wIndicatorStates + 5 - ld hl, OAMDataTable_1f4ce - ld b, $6 - jr asm_1f4b5 - -Func_1f4a3: ; 0x1f4a3 - ld a, [wd551] - and a - ret nz - ld a, [hNumFramesDropped] - bit 4, a - ret z - ld de, wIndicatorStates + 11 - ld hl, OAMDataTable_1f4e0 - ld b, $8 -asm_1f4b5: - push bc - ld a, [hSCX] - ld b, a - ld a, [hli] - sub b - ld b, a - ld a, [hSCY] - ld c, a - ld a, [hli] - sub c - ld c, a - ld a, [de] - and a - ld a, [hli] - call nz, LoadOAMData - pop bc - inc de - dec b - jr nz, asm_1f4b5 - ret - -OAMDataTable_1f4ce: ; 0x1f4ce - ; Each entry is: - ; [OAM x/y Offsets],[OAM Id] - db $0D, $37 - db $EE - - db $35, $0D - db $F1 - - db $8E, $4E - db $F4 - - db $36, $64 - db $EF - - db $4C, $49 - db $EE - - db $61, $64 - db $F0 - -OAMDataTable_1f4e0: ; 0x1f4e0 - ; Each entry is 3 bytes: - ; [OAM x/y Offsets],[OAM Id] - db $2D, $13 - db $32 - - db $6A, $13 - db $33 - - db $25, $2D - db $34 - - db $73, $2D - db $35 - - db $38, $14 - db $36 - - db $66, $14 - db $36 - - db $79, $40 - db $37 - - db $89, $40 - db $37 - -Func_1f4f8: ; 0x1f4f8 - ld a, [wd551] - and a - ret z - ld de, wd566 - ld hl, OAMOffsetsTable_1f53a - ld b, $c - ld c, $47 - jr asm_1f518 - -Func_1f509: ; 0x1f509 - ld a, [wd551] - and a - ret z - ld de, wd572 - ld hl, OAMOffsetsTable_1f552 - ld b, $6 - ld c, $40 -asm_1f518: ; 0x1f518 - push bc - ld a, [de] - add c - cp c - push af - ld a, [hSCX] - ld b, a - ld a, [hli] - sub b - ld b, a - ld a, [hSCY] - ld c, a - ld a, [hli] - sub c - ld c, a - ld a, [hNumFramesDropped] - and $e - jr nz, .asm_1f530 - dec c -.asm_1f530 - pop af - call nz, LoadOAMData - pop bc - inc de - dec b - jr nz, asm_1f518 - ret - -OAMOffsetsTable_1f53a: ; 0x1f53a -; OAM data x, y offsets - db $4C, $08 - db $2B, $12 - db $6D, $12 - db $15, $25 - db $82, $25 - db $0D, $3F - db $4C, $7F - db $8B, $3F - db $0A, $65 - db $36, $7F - db $61, $7F - db $8D, $65 - -OAMOffsetsTable_1f552: ; 0x1f552 -; OAM data x, y offsets - db $3B, $12 - db $5D, $12 - db $31, $16 - db $67, $16 - db $25, $2C - db $73, $2C - -Func_1f55e: ; 0x1f55e - ld a, [wd604] - and a - ret z - ld a, [wd606] - inc a - ld [wd606], a - ld a, $40 - ld hl, hSCX - sub [hl] - ld b, a - ld a, $1 - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wd606] - srl a - srl a - srl a - and $3 - add $4f - cp $52 - call nz, LoadOAMData - ret - -DrawAnimatedMon_BlueStage: ; 0x1f58b - ld a, [wWildMonIsHittable] - and a - ret z - ld a, $50 - ld hl, hSCX - sub [hl] - ld b, a - ld a, $3e - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wd5bd] - ld e, a - ld d, $0 - ld hl, AnimatedMonOAMIds_BlueStage - add hl, de - ld a, [hl] - call LoadOAMData - ret - -AnimatedMonOAMIds_BlueStage: - db $26, $27, $28, $29, $2A, $2B, $2C, $2D, $2E, $2F, $30, $31 +INCLUDE "engine/main/draw_sprites/draw_blue_field_sprites.asm" SECTION "bank8", ROMX, BANK[$8] @@ -36693,312 +35024,7 @@ TileData_2580e: ; 0x2580e db $00 ; terminator -Func_2583b: ; 0x2583b - ld bc, $7f65 - callba DrawTimer - callba DrawFlippers - call Func_259fe - call Func_25895 - call Func_2595e - call Func_2586c - callba DrawPinball - call Func_25a39 - ret - -Func_2586c: ; 0x2586c - ld a, [wMeowthXPosition] - ld hl, hSCX - sub [hl] - ld b, a - ld a, [wMeowthYPosition] - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wMeowthAnimationFrame] - ld e, a - ld d, $0 - ld hl, OAMIds_2588b - add hl, de - ld a, [hl] - call LoadOAMData2 - ret - -OAMIds_2588b: - db $21, $22, $23, $24, $25, $26, $27, $28, $33, $34 - -Func_25895: ; 0x25895 - ld a, [wd714] - cp $b - jr nz, .asm_258a0 - xor a - ld [wd714], a -.asm_258a0 - ld a, [wd715] - cp $b - jr nz, .asm_258ab - xor a - ld [wd715], a -.asm_258ab - ld a, [wd716] - cp $b - jr nz, .asm_258b6 - xor a - ld [wd716], a -.asm_258b6 - ld a, [wd71a] - ld hl, hSCX - sub [hl] - ld b, a - ld a, [wd727] - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wd717] - sla a - ld e, a - ld d, $0 - ld hl, OAMPointers_25935 - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - ld a, [wd714] - ld e, a - ld d, $0 - add hl, de - ld a, [hl] - call LoadOAMData2 - ld a, [wd71b] - ld hl, hSCX - sub [hl] - ld b, a - ld a, [wd728] - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wd718] - sla a - ld e, a - ld d, $0 - ld hl, OAMPointers_25935 - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - ld a, [wd715] - ld e, a - ld d, $0 - add hl, de - ld a, [hl] - call LoadOAMData2 - ld a, [wd71c] - ld hl, hSCX - sub [hl] - ld b, a - ld a, [wd729] - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wd719] - sla a - ld e, a - ld d, $0 - ld hl, OAMPointers_25935 - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - ld a, [wd716] - ld e, a - ld d, $0 - add hl, de - ld a, [hl] - call LoadOAMData2 - ret - -OAMPointers_25935: - dw OAMIds_2593d - dw OAMIds_2593d - dw OAMIds_25948 - dw OAMIds_25953 - -OAMIds_2593d: - db $29, $29, $29, $29, $2A, $2A, $2A, $2A, $2A, $2A, $2A - -OAMIds_25948: - db $2B, $2B, $2B, $2B, $2B, $2B, $2B, $2C, $2C, $2C, $2C - -OAMIds_25953: - db $2D, $32, $31, $30, $2F, $2E, $2F, $30, $31, $32, $32 - -Func_2595e: ; 0x2595e - ld a, [wd71e] - cp $b - jr nz, .asm_25969 - xor a - ld [wd71e], a -.asm_25969 - ld a, [wd71f] - cp $b - jr nz, .asm_25974 - xor a - ld [wd71f], a -.asm_25974 - ld a, [wd720] - cp $b - jr nz, .asm_2597f - xor a - ld [wd720], a -.asm_2597f - ld a, [wd724] - ld hl, hSCX - sub [hl] - ld b, a - ld a, [wd731] - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wd721] - sla a - ld e, a - ld d, $0 - ld hl, OAMPointers_25935 - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - ld a, [wd71e] - ld e, a - ld d, $0 - add hl, de - ld a, [hl] - call LoadOAMData2 - ld a, [wd725] - ld hl, hSCX - sub [hl] - ld b, a - ld a, [wd732] - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wd722] - sla a - ld e, a - ld d, $0 - ld hl, OAMPointers_25935 - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - ld a, [wd71f] - ld e, a - ld d, $0 - add hl, de - ld a, [hl] - call LoadOAMData2 - ld a, [wd726] - ld hl, hSCX - sub [hl] - ld b, a - ld a, [wd733] - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wd723] - sla a - ld e, a - ld d, $0 - ld hl, OAMPointers_25935 - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - ld a, [wd720] - ld e, a - ld d, $0 - add hl, de - ld a, [hl] - call LoadOAMData2 - ret - -Func_259fe: ; 0x259fe - ld a, [wd795] - and a - ret z - ld de, wd79c - ld a, [de] - ld hl, hSCX - sub [hl] - ld b, a - inc de - inc de - ld a, [de] - ld hl, hSCY - sub [hl] - ld c, a - dec de - dec de - dec de - dec de - dec de - dec de - ld a, [de] - ld e, a - ld d, $0 - ld hl, OAMIds_25a29 - add hl, de - ld a, [hl] - cp $ff - call nz, LoadOAMData2 - ret - -OAMIds_25a29: - db $35, $36, $37, $38, $39, $3A, $3B, $3C, $3D, $3E, $3F, $40, $41, $42, $43 - db $FF - -Func_25a39: ; 0x25a39 - ld a, [wd64e] - and a - ret z - ld a, [wd652] - ld hl, hSCX - sub [hl] - ld b, a - xor a - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wd64f] - cp $a - jr c, .asm_25a58 - ld de, $0000 - jr .asm_25a5b - -.asm_25a58 - ld de, $0001 -.asm_25a5b - ld hl, OAMIds_25a7a - add hl, de - ld a, [hl] - call LoadOAMData2 - ld hl, wd64f - inc [hl] - ld a, [hl] - cp $14 - ret c - ld [hl], $0 - ld hl, wd650 - inc [hl] - ld a, [hl] - cp $a - ret nz - xor a - ld [wd64e], a - ret - -OAMIds_25a7a: ; 0x25a7a - db $44, $45 - +INCLUDE "engine/main/draw_sprites/draw_meowth_bonus_sprites.asm" INCLUDE "engine/main/stage_init/init_seel_bonus.asm" INCLUDE "engine/main/ball_init/ball_init_seel_bonus.asm" INCLUDE "engine/main/load_stage_data/load_seel_bonus.asm" @@ -39903,135 +37929,7 @@ TileData_26b51: ; 0x26b51 db $00 ; terminator -Func_26b7e: ; 0x26b7e - ld bc, $7f65 - callba DrawTimer - call Func_26bf7 - callba DrawFlippers - callba DrawPinball - call Func_26ba9 - call Func_26c3c - ret - -Func_26ba9: ; 0x26ba9 - ld de, wd76e - call Func_26bbc - ld de, wd778 - call Func_26bbc - ld de, wd782 - call Func_26bbc - ret - -Func_26bbc: ; 0x26bbc - ld a, [de] - ld hl, hSCX - sub [hl] - ld b, a - inc de - inc de - ld a, [de] - ld hl, hSCY - sub [hl] - ld c, a - dec de - dec de - dec de - dec de - dec de - dec de - ld a, [de] - ld e, a - ld d, $0 - ld hl, OAMIds_26bdf - add hl, de - ld a, [hl] - cp $ff - call nz, LoadOAMData2 - ret - -OAMIds_26bdf: - db $54, $55, $56, $57, $58, $59, $5A, $5B, $5C, $5D, $5E, $5F, $60, $61, $62, $63 - db $64, $65, $66, $67, $68, $69, $6A - db $FF - -Func_26bf7: ; 0x26bf7: ; 0x26bf7 - ld a, [wd795] - cp $0 - ret z - ld de, wd79c - ld a, [de] - ld hl, hSCX - sub [hl] - ld b, a - inc de - inc de - ld a, [de] - ld hl, hSCY - sub [hl] - ld c, a - dec de - dec de - dec de - dec de - dec de - dec de - ld a, [de] - ld e, a - ld d, $0 - ld hl, OAMIds_26c23 - add hl, de - ld a, [hl] - cp $ff - call nz, LoadOAMData2 - ret - -OAMIds_26c23: - db $6B, $6C, $6D, $6E, $6F, $70, $71, $72, $73, $74, $75, $76, $77, $78, $79, $7A - db $7B, $7C, $7D, $7E, $7F, $80, $81, $82 - db $FF - -Func_26c3c: ; 0x26c3c - ld a, [wd64e] - and a - ret z - ld a, [wd652] - ld hl, hSCX - sub [hl] - ld b, a - xor a - ld hl, hSCY - sub [hl] - ld c, a - ld a, [wd64f] - cp $a - jr c, .asm_26c5b - ld de, $0000 - jr .asm_26c5e - -.asm_26c5b - ld de, $0001 -.asm_26c5e - ld hl, OAMIds_26c7d - add hl, de - ld a, [hl] - call LoadOAMData2 - ld hl, wd64f - inc [hl] - ld a, [hl] - cp $14 - ret c - ld [hl], $0 - ld hl, wd650 - inc [hl] - ld a, [hl] - cp $a - ret nz - xor a - ld [wd64e], a - ret - -OAMIds_26c7d: - db $83, $84 +INCLUDE "engine/main/draw_sprites/draw_seel_bonus_sprites.asm" SECTION "banka", ROMX, BANK[$a] |