mirror of
https://github.com/pret/pokepinball.git
synced 2026-10-02 06:06:36 -05:00
Move draw sprites routines to engine/main/draw_sprites/
This commit is contained in:
401
engine/main/draw_sprites/draw_blue_field_sprites.asm
Executable file
401
engine/main/draw_sprites/draw_blue_field_sprites.asm
Executable file
@@ -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
|
||||
28
engine/main/draw_sprites/draw_diglett_bonus_sprites.asm
Executable file
28
engine/main/draw_sprites/draw_diglett_bonus_sprites.asm
Executable file
@@ -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
|
||||
363
engine/main/draw_sprites/draw_gengar_bonus_sprites.asm
Executable file
363
engine/main/draw_sprites/draw_gengar_bonus_sprites.asm
Executable file
@@ -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
|
||||
305
engine/main/draw_sprites/draw_meowth_bonus_sprites.asm
Executable file
305
engine/main/draw_sprites/draw_meowth_bonus_sprites.asm
Executable file
@@ -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
|
||||
81
engine/main/draw_sprites/draw_mewtwo_bonus_sprites.asm
Executable file
81
engine/main/draw_sprites/draw_mewtwo_bonus_sprites.asm
Executable file
@@ -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
|
||||
759
engine/main/draw_sprites/draw_red_field_sprites.asm
Executable file
759
engine/main/draw_sprites/draw_red_field_sprites.asm
Executable file
@@ -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
|
||||
129
engine/main/draw_sprites/draw_seel_bonus_sprites.asm
Executable file
129
engine/main/draw_sprites/draw_seel_bonus_sprites.asm
Executable file
@@ -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
|
||||
35
engine/main/draw_sprites/draw_sprites.asm
Executable file
35
engine/main/draw_sprites/draw_sprites.asm
Executable file
@@ -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
|
||||
8
engine/main/draw_sprites/draw_unused_stage_sprites.asm
Executable file
8
engine/main/draw_sprites/draw_unused_stage_sprites.asm
Executable file
@@ -0,0 +1,8 @@
|
||||
Func_18079: ; 0x18079
|
||||
callba DrawPinball
|
||||
ret
|
||||
|
||||
Func_18084: ; 0x18084
|
||||
callba DrawFlippers
|
||||
callba DrawPinball
|
||||
ret
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user