mirror of
https://github.com/pret/pokegold-spaceworld.git
synced 2026-03-21 17:45:52 -05:00
Split and label Trainer Gear code (#89)
Split and label Trainer Gear code
This commit is contained in:
parent
000e98b235
commit
5251fe1ec1
|
|
@ -19,7 +19,7 @@
|
|||
const SGB_POKEDEX_SEARCH_OPTION
|
||||
const SGB_BETA_POKER
|
||||
const SGB_POKEPIC
|
||||
const SGB_13
|
||||
const SGB_TRAINER_GEAR
|
||||
const SGB_PACKPALS
|
||||
const SGB_TRAINER_CARD
|
||||
const SGB_POKEDEX_UNOWN_MODE
|
||||
|
|
|
|||
|
|
@ -20,8 +20,9 @@ SPRITEANIMSTRUCT_LENGTH EQU const_value
|
|||
NUM_SPRITE_ANIM_STRUCTS EQU 10 ; see wSpriteAnimationStructs
|
||||
|
||||
; wSpriteAnimDict keys
|
||||
SPRITE_ANIM_DICT_DEFAULT EQU $00
|
||||
SPRITE_ANIM_DICT_DEFAULT EQU $00
|
||||
SPRITE_ANIM_DICT_GS_SPLASH EQU $27
|
||||
SPRITE_ANIM_DICT_29 EQU $29
|
||||
|
||||
; wSpriteAnimDict size (see ram/wram.asm)
|
||||
NUM_SPRITEANIMDICT_ENTRIES EQU 10
|
||||
|
|
@ -56,5 +57,6 @@ SPRITE_ANIM_INDEX_GS_INTRO_STAR EQU $3b
|
|||
SPRITE_ANIM_INDEX_GS_INTRO_SPARKLE EQU $3c
|
||||
SPRITE_ANIM_INDEX_40 EQU $40
|
||||
SPRITE_ANIM_INDEX_41 EQU $41
|
||||
SPRITE_ANIM_INDEX_44 EQU $44
|
||||
SPRITE_ANIM_INDEX_4B EQU $4b
|
||||
SPRITE_ANIM_INDEX_TRAINERGEAR_POINTER EQU $44
|
||||
SPRITE_ANIM_INDEX_RADIO_TUNING_KNOB EQU $4b
|
||||
|
||||
|
|
|
|||
|
|
@ -900,7 +900,7 @@ Function86a0:
|
|||
ld hl, InitEffectObject
|
||||
ld a, BANK(InitEffectObject)
|
||||
call FarCall_hl
|
||||
call Function886a
|
||||
call PlaceGoldInMap
|
||||
call WaitBGMap
|
||||
call SetPalettes
|
||||
.sub_86b4
|
||||
|
|
@ -924,7 +924,7 @@ FlyMap:
|
|||
ld hl, InitEffectObject
|
||||
ld a, BANK(InitEffectObject)
|
||||
call FarCall_hl
|
||||
call Function886a
|
||||
call PlaceGoldInMap
|
||||
call Function88b3
|
||||
ld hl, wcb60
|
||||
ld [hl], c
|
||||
|
|
@ -1141,7 +1141,7 @@ DecompTownMapTilemap:
|
|||
inc de
|
||||
jr .sub_8859
|
||||
|
||||
Function886a:
|
||||
PlaceGoldInMap:
|
||||
ld de, GoldSpriteGFX
|
||||
ld hl, vChars0
|
||||
lb bc, BANK(GoldSpriteGFX), $04
|
||||
|
|
@ -1252,666 +1252,7 @@ Data8a53:
|
|||
db $3c, $14, $3c, $20, $48, $14, $54, $1c
|
||||
db $54, $2c, $54, $38, $3c, $44, $48, $2c
|
||||
|
||||
OpenTrainerGear:
|
||||
ld hl, wce5f
|
||||
ld a, [hl]
|
||||
push af
|
||||
set 4, [hl]
|
||||
ldh a, [hMapAnims]
|
||||
push af
|
||||
xor a
|
||||
ldh [hMapAnims], a
|
||||
ldh a, [hJoypadSum]
|
||||
push af
|
||||
ld a, [wVramState]
|
||||
push af
|
||||
xor a
|
||||
ld [wVramState], a
|
||||
call Function8ae0
|
||||
call DelayFrame
|
||||
.sub_8ac9
|
||||
call Function8ba3
|
||||
jr nc, .sub_8ac9
|
||||
pop af
|
||||
ld [wVramState], a
|
||||
pop af
|
||||
ldh [hJoypadSum], a
|
||||
pop af
|
||||
ldh [hMapAnims], a
|
||||
pop af
|
||||
ld [wce5f], a
|
||||
call ClearJoypad
|
||||
ret
|
||||
|
||||
Function8ae0:
|
||||
call ClearBGPalettes
|
||||
call DisableLCD
|
||||
call ClearSprites
|
||||
ld b, $13
|
||||
call GetSGBLayout
|
||||
ld hl, TrainerGearGFX
|
||||
ld de, vChars2
|
||||
ld bc, $0200
|
||||
ld a, $02
|
||||
call FarCopyData
|
||||
call Function8b2a
|
||||
call Function8b7e
|
||||
xor a
|
||||
ldh [hSCY], a
|
||||
ldh [hSCX], a
|
||||
ld [wJumptableIndex], a
|
||||
ld [wFlyDestination], a
|
||||
ld a, $ff
|
||||
ld [wcb60], a
|
||||
ld a, $07
|
||||
ldh [hWX], a
|
||||
ld a, $08
|
||||
call UpdateSoundNTimes
|
||||
ld a, $e3
|
||||
ldh [rLCDC], a
|
||||
call WaitBGMap
|
||||
call SetPalettes
|
||||
ld a, $e0
|
||||
ldh [rOBP1], a
|
||||
ret
|
||||
|
||||
Function8b2a:
|
||||
ld hl, wTileMap
|
||||
ld bc, $0168
|
||||
ld a, $7f
|
||||
call ByteFill
|
||||
ld de, wTileMap
|
||||
ld hl, Data8b42
|
||||
ld bc, $003c
|
||||
call CopyBytes
|
||||
ret
|
||||
|
||||
Data8b42:
|
||||
db $0d, $1c, $1d, $0b, $1c, $1d, $0b, $1c
|
||||
db $1d, $0c, $01, $05, $05, $05, $05, $05
|
||||
db $05, $05, $05, $02, $08, $1e, $1f, $0a
|
||||
db $1e, $1f, $0a, $1e, $1f, $07, $08, $7f
|
||||
db $7f, $0f, $7f, $7f, $0f, $7f, $7f, $07
|
||||
db $03, $06, $06, $09, $06, $06, $09, $06
|
||||
db $06, $04, $03, $06, $06, $06, $06, $06
|
||||
db $06, $06, $06, $04
|
||||
|
||||
Function8b7e:
|
||||
coord hl, 1, 0
|
||||
ld a, $10
|
||||
call Function8b97
|
||||
coord hl, 4, 0
|
||||
ld a, $14
|
||||
call Function8b97
|
||||
coord hl, 7, 0
|
||||
ld a, $18
|
||||
call Function8b97
|
||||
ret
|
||||
|
||||
Function8b97:
|
||||
ld [hli], a
|
||||
inc a
|
||||
ld [hld], a
|
||||
ld bc, $0014
|
||||
add hl, bc
|
||||
inc a
|
||||
ld [hli], a
|
||||
inc a
|
||||
ld [hld], a
|
||||
ret
|
||||
|
||||
Function8ba3:
|
||||
call UpdateTime
|
||||
call GetJoypadDebounced
|
||||
ld a, [wJumptableIndex]
|
||||
bit 7, a
|
||||
jr nz, .sub_8bc3
|
||||
call Function8bfd
|
||||
ld a, BANK(EffectObjectJumpNoDelay)
|
||||
ld hl, EffectObjectJumpNoDelay
|
||||
call FarCall_hl
|
||||
call Function8bd5
|
||||
call DelayFrame
|
||||
and a
|
||||
ret
|
||||
.sub_8bc3
|
||||
ld hl, InitEffectObject
|
||||
ld a, BANK(InitEffectObject)
|
||||
call FarCall_hl
|
||||
call ClearSprites
|
||||
xor a
|
||||
ldh [hSCX], a
|
||||
ldh [hSCY], a
|
||||
scf
|
||||
ret
|
||||
|
||||
Function8bd5:
|
||||
coord hl, 11, 1
|
||||
ld a, $7f
|
||||
ld [hli], a
|
||||
ld [hl], a
|
||||
ld de, hRTCHours
|
||||
coord hl, 11, 1
|
||||
ld bc, $0102
|
||||
call PrintNumber
|
||||
inc hl
|
||||
ld de, hRTCMinutes
|
||||
ld bc, $8102
|
||||
call PrintNumber
|
||||
inc hl
|
||||
ld de, hRTCSeconds
|
||||
ld bc, $8102
|
||||
call PrintNumber
|
||||
ret
|
||||
|
||||
Function8bfd:
|
||||
ld a, [wJumptableIndex]
|
||||
ld e, a
|
||||
ld d, $00
|
||||
ld hl, Table8c0c
|
||||
add hl, de
|
||||
add hl, de
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
jp hl
|
||||
|
||||
Table8c0c:
|
||||
dw Function8c21
|
||||
dw Function8c49
|
||||
dw DrawMap
|
||||
dw Function8cab
|
||||
dw Function8cb7
|
||||
dw Function8d62
|
||||
dw Function8e6c
|
||||
dw Function8e9e
|
||||
|
||||
Function8c1c:
|
||||
ld hl, wJumptableIndex
|
||||
inc [hl]
|
||||
ret
|
||||
|
||||
Function8c21:
|
||||
ld hl, InitEffectObject
|
||||
ld a, BANK(InitEffectObject)
|
||||
call FarCall_hl
|
||||
ld de, PointerGFX
|
||||
ld hl, vChars0 + $7c0
|
||||
lb bc, BANK(PointerGFX), $04
|
||||
call Request2bpp
|
||||
ld a, $29
|
||||
ld hl, wTileMapBackup
|
||||
ld [hli], a
|
||||
ld [hl], $7c
|
||||
depixel 4, 3, 4, 4
|
||||
ld a, SPRITE_ANIM_INDEX_44
|
||||
call InitSpriteAnimStruct
|
||||
call Function8c1c
|
||||
ret
|
||||
|
||||
Function8c49:
|
||||
ld hl, hJoySum
|
||||
ld a, [hl]
|
||||
and $02
|
||||
jr nz, .sub_8c59
|
||||
ld a, [hl]
|
||||
and $01
|
||||
ret z
|
||||
call Function8c5f
|
||||
ret
|
||||
.sub_8c59
|
||||
ld hl, wJumptableIndex
|
||||
set 7, [hl]
|
||||
ret
|
||||
|
||||
Function8c5f:
|
||||
ld a, [wFlyDestination]
|
||||
ld hl, wcb60
|
||||
cp [hl]
|
||||
ret z
|
||||
ld [wcb60], a
|
||||
and $03
|
||||
ld e, a
|
||||
ld d, $00
|
||||
ld hl, Unknown8c78
|
||||
add hl, de
|
||||
ld a, [hl]
|
||||
ld [wJumptableIndex], a
|
||||
ret
|
||||
|
||||
Unknown8c78:
|
||||
db $02, $04, $06, $02
|
||||
|
||||
DrawMap:
|
||||
call Function8c1c
|
||||
call Function8eaa
|
||||
call WaitForAutoBgMapTransfer
|
||||
ld b, $14
|
||||
call GetSGBLayout
|
||||
ld de, TownMapGFX
|
||||
ld hl, vTilesetEnd
|
||||
lb bc, BANK(TownMapGFX), ((TownMapGFX.End - TownMapGFX) / LEN_2BPP_TILE - 1)
|
||||
call Request2bpp
|
||||
coord hl, 0, 3
|
||||
call DecompTownMapTilemap
|
||||
call WaitBGMap
|
||||
call Function886a
|
||||
ld hl, $0005
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
add $18
|
||||
ld [hl], a
|
||||
ret
|
||||
|
||||
Function8cab:
|
||||
ld hl, hJoyDown
|
||||
ld a, [hl]
|
||||
and $02
|
||||
ret z
|
||||
xor a
|
||||
ld [wJumptableIndex], a
|
||||
ret
|
||||
|
||||
Function8cb7:
|
||||
call Function8c1c
|
||||
call Function8eaa
|
||||
call WaitForAutoBgMapTransfer
|
||||
ld b, $15
|
||||
call GetSGBLayout
|
||||
ld de, RadioGFX
|
||||
ld hl, vTilesetEnd
|
||||
lb bc, BANK(RadioGFX), $09
|
||||
call Request2bpp
|
||||
ld de, VerticalPipeGFX
|
||||
ld hl, vChars0
|
||||
lb bc, BANK(VerticalPipeGFX), $01
|
||||
call Request2bpp
|
||||
coord hl, 0, 3
|
||||
ld bc, $00b4
|
||||
ld a, $0e
|
||||
call ByteFill
|
||||
coord hl, 1, 8
|
||||
ld bc, $0412
|
||||
call Function8ef9
|
||||
coord hl, 4, 3
|
||||
ld bc, $060e
|
||||
call Function8ef9
|
||||
ld a, $05
|
||||
coord hl, 0, 11
|
||||
ld [hl], a
|
||||
coord hl, 19, 11
|
||||
ld [hl], a
|
||||
coord hl, 2, 5
|
||||
ld a, $60
|
||||
ld [hli], a
|
||||
inc a
|
||||
ld [hld], a
|
||||
inc a
|
||||
ld bc, $0014
|
||||
add hl, bc
|
||||
ld [hli], a
|
||||
inc a
|
||||
ld [hld], a
|
||||
coord hl, 2, 4
|
||||
ld a, $64
|
||||
ld [hli], a
|
||||
inc a
|
||||
ld [hl], a
|
||||
coord hl, 5, 5
|
||||
ld bc, $000c
|
||||
ld a, $66
|
||||
call ByteFill
|
||||
coord hl, 5, 6
|
||||
ld bc, $000c
|
||||
ld a, $67
|
||||
call ByteFill
|
||||
ld hl, Text91c2
|
||||
call PrintText
|
||||
call WaitBGMap
|
||||
depixel 9, 4, 4, 3
|
||||
ld a, SPRITE_ANIM_INDEX_44
|
||||
call InitSpriteAnimStruct
|
||||
ld hl, $0002
|
||||
add hl, bc
|
||||
ld [hl], $00
|
||||
ld hl, $0003
|
||||
add hl, bc
|
||||
ld [hl], $7c
|
||||
depixel 8, 6
|
||||
ld a, SPRITE_ANIM_INDEX_4B
|
||||
call InitSpriteAnimStruct
|
||||
ld hl, $0003
|
||||
add hl, bc
|
||||
ld [hl], $00
|
||||
xor a
|
||||
ld [wcb61], a
|
||||
ret
|
||||
|
||||
Function8d62:
|
||||
ld hl, hJoyDown
|
||||
ld a, [hl]
|
||||
and $02
|
||||
ret z
|
||||
xor a
|
||||
ld [wJumptableIndex], a
|
||||
ret
|
||||
|
||||
Function8d6e:
|
||||
ld hl, wcb61
|
||||
ld e, [hl]
|
||||
ld d, $00
|
||||
ld hl, Table8d7d
|
||||
add hl, de
|
||||
add hl, de
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
jp hl
|
||||
|
||||
Table8d7d:
|
||||
dw Function8d85
|
||||
dw Function8d91
|
||||
dw Function8d85
|
||||
dw Function8db9
|
||||
|
||||
Function8d85:
|
||||
ld hl, hJoyDown
|
||||
ld a, [hl]
|
||||
and $01
|
||||
ret z
|
||||
ld hl, wcb61
|
||||
inc [hl]
|
||||
ret
|
||||
|
||||
Function8d91:
|
||||
ld hl, $000c
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
and a
|
||||
jr nz, .sub_8da6
|
||||
call Function8dfd
|
||||
jr c, .sub_8db1
|
||||
ld hl, $0006
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
and a
|
||||
jr z, .sub_8dab
|
||||
.sub_8da6
|
||||
ld hl, hFFC0
|
||||
jr Function8de3
|
||||
.sub_8dab
|
||||
ld a, $03
|
||||
ld [wcb61], a
|
||||
ret
|
||||
.sub_8db1
|
||||
call .sub_8da6
|
||||
xor a
|
||||
ld [wcb61], a
|
||||
ret
|
||||
|
||||
Function8db9:
|
||||
ld hl, $000c
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
and a
|
||||
jr nz, .sub_8dcf
|
||||
call Function8dfd
|
||||
jr c, .sub_8dda
|
||||
ld hl, $0006
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
cp $60
|
||||
jr z, .sub_8dd4
|
||||
.sub_8dcf
|
||||
ld hl, $0040
|
||||
jr Function8de3
|
||||
.sub_8dd4
|
||||
ld a, $01
|
||||
ld [wcb61], a
|
||||
ret
|
||||
.sub_8dda
|
||||
call .sub_8dcf
|
||||
ld a, $02
|
||||
ld [wcb61], a
|
||||
ret
|
||||
|
||||
Function8de3:
|
||||
push hl
|
||||
ld hl, $0006
|
||||
add hl, bc
|
||||
ld d, [hl]
|
||||
ld hl, $000c
|
||||
add hl, bc
|
||||
ld e, [hl]
|
||||
pop hl
|
||||
add hl, de
|
||||
ld e, l
|
||||
ld d, h
|
||||
ld hl, $000c
|
||||
add hl, bc
|
||||
ld [hl], e
|
||||
ld hl, $0006
|
||||
add hl, bc
|
||||
ld [hl], d
|
||||
ret
|
||||
|
||||
Function8dfd:
|
||||
ld hl, $0006
|
||||
add hl, bc
|
||||
push bc
|
||||
ld c, [hl]
|
||||
ld a, [wMapGroup]
|
||||
ld e, a
|
||||
ld d, $00
|
||||
ld hl, Table8e2f
|
||||
add hl, de
|
||||
add hl, de
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
.sub_8e11
|
||||
ld a, [hl]
|
||||
and a
|
||||
jr z, .sub_8e1e
|
||||
cp c
|
||||
jr z, .sub_8e21
|
||||
ld de, $0006
|
||||
add hl, de
|
||||
jr .sub_8e11
|
||||
.sub_8e1e
|
||||
pop bc
|
||||
and a
|
||||
ret
|
||||
.sub_8e21
|
||||
ld de, Function8e2c
|
||||
push de
|
||||
inc hl
|
||||
ld e, [hl]
|
||||
inc hl
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
jp hl
|
||||
|
||||
Function8e2c:
|
||||
pop bc
|
||||
scf
|
||||
ret
|
||||
|
||||
Table8e2f:
|
||||
dw Data8e4d
|
||||
dw Data8e4d
|
||||
dw Data8e4d
|
||||
dw Data8e4d
|
||||
dw Data8e4d
|
||||
dw Data8e4d
|
||||
dw Data8e4d
|
||||
dw Data8e4d
|
||||
dw Data8e4d
|
||||
dw Data8e4d
|
||||
dw Data8e4d
|
||||
dw Data8e4d
|
||||
dw Data8e4d
|
||||
dw Data8e4d
|
||||
dw Data8e4d
|
||||
|
||||
Data8e4d:
|
||||
db $10, $02
|
||||
dw Function8e66
|
||||
dw Function8e66
|
||||
|
||||
db $20, $05
|
||||
dw Function8e66
|
||||
dw Function8e66
|
||||
|
||||
db $40, $07
|
||||
dw Function8e66
|
||||
dw Function8e66
|
||||
|
||||
db $48, $09
|
||||
dw Function8e66
|
||||
dw Function8e66
|
||||
|
||||
db $00
|
||||
|
||||
Function8e66:
|
||||
ld d, $00
|
||||
call PlayMusic
|
||||
ret
|
||||
|
||||
Function8e6c:
|
||||
call Function8c1c
|
||||
call Function8eaa
|
||||
call WaitForAutoBgMapTransfer
|
||||
ld b, $13
|
||||
call GetSGBLayout
|
||||
call LoadFontExtra
|
||||
ld de, Text8e90
|
||||
coord hl, 7, 7
|
||||
call PlaceString
|
||||
ld hl, Text8e95
|
||||
call PrintText
|
||||
call WaitBGMap
|
||||
ret
|
||||
|
||||
Text8e90:
|
||||
db "けんがい@"
|
||||
|
||||
Text8e95:
|
||||
text "ちぇっ⋯⋯⋯⋯"
|
||||
done
|
||||
|
||||
Function8e9e:
|
||||
ld hl, hJoyDown
|
||||
ld a, [hl]
|
||||
and $02
|
||||
ret z
|
||||
xor a
|
||||
ld [wJumptableIndex], a
|
||||
ret
|
||||
|
||||
Function8eaa:
|
||||
ld hl, InitEffectObject
|
||||
ld a, BANK(InitEffectObject)
|
||||
call FarCall_hl
|
||||
call ClearSprites
|
||||
call WaitForAutoBgMapTransfer
|
||||
coord hl, 0, 3
|
||||
ld bc, $012c
|
||||
ld a, $7f
|
||||
call ByteFill
|
||||
call WaitBGMap
|
||||
call WaitBGMap
|
||||
ret
|
||||
|
||||
Function8eca:
|
||||
ld hl, wFlyDestination
|
||||
ld de, hJoySum
|
||||
ld a, [de]
|
||||
and $20
|
||||
jr nz, .sub_8edc
|
||||
ld a, [de]
|
||||
and $10
|
||||
jr nz, .sub_8ee2
|
||||
jr .sub_8ee7
|
||||
.sub_8edc
|
||||
ld a, [hl]
|
||||
and a
|
||||
ret z
|
||||
dec [hl]
|
||||
jr .sub_8ee7
|
||||
.sub_8ee2
|
||||
ld a, [hl]
|
||||
cp $02
|
||||
ret nc
|
||||
inc [hl]
|
||||
.sub_8ee7
|
||||
ld e, [hl]
|
||||
ld d, $00
|
||||
ld hl, Data8ef5
|
||||
add hl, de
|
||||
ld a, [hl]
|
||||
ld hl, $0006
|
||||
add hl, bc
|
||||
ld [hl], a
|
||||
ret
|
||||
|
||||
Data8ef5:
|
||||
db $00, $18, $30, $00
|
||||
|
||||
Function8ef9:
|
||||
dec c
|
||||
dec c
|
||||
dec b
|
||||
dec b
|
||||
ld de, $0014
|
||||
push bc
|
||||
push hl
|
||||
ld a, $01
|
||||
ld [hli], a
|
||||
ld a, $05
|
||||
.sub_8f07
|
||||
ld [hli], a
|
||||
dec c
|
||||
jr nz, .sub_8f07
|
||||
ld a, $02
|
||||
ld [hl], a
|
||||
pop hl
|
||||
pop bc
|
||||
add hl, de
|
||||
.sub_8f11
|
||||
push bc
|
||||
push hl
|
||||
ld a, $08
|
||||
ld [hli], a
|
||||
ld a, $7f
|
||||
.sub_8f18
|
||||
ld [hli], a
|
||||
dec c
|
||||
jr nz, .sub_8f18
|
||||
ld a, $07
|
||||
ld [hli], a
|
||||
pop hl
|
||||
add hl, de
|
||||
pop bc
|
||||
dec b
|
||||
jr nz, .sub_8f11
|
||||
ld a, $03
|
||||
ld [hli], a
|
||||
ld a, $06
|
||||
.sub_8f2a
|
||||
ld [hli], a
|
||||
dec c
|
||||
jr nz, .sub_8f2a
|
||||
ld a, $04
|
||||
ld [hli], a
|
||||
ret
|
||||
|
||||
SECTION "engine/dumps/bank02.asm@Text91c2", ROMX
|
||||
|
||||
Text91c2:
|
||||
text "エーボタンで チューニング!"
|
||||
done
|
||||
SECTION "engine/dumps/bank02.asm@SetTitleBGDecorationBorder", ROMX
|
||||
|
||||
SetTitleBGDecorationBorder:
|
||||
ld de, TitleBGDecorationBorder
|
||||
|
|
|
|||
726
engine/trainer_gear.asm
Normal file
726
engine/trainer_gear.asm
Normal file
|
|
@ -0,0 +1,726 @@
|
|||
INCLUDE "constants.asm"
|
||||
|
||||
SECTION "engine/trainer_gear.asm@OpenTrainerGear", ROMX
|
||||
|
||||
TRAINERGEAR_GFX_VERTICAL_PIPE EQU $00
|
||||
TRAINERGEAR_GFX_POINTER EQU $7c
|
||||
|
||||
TRAINERGEAR_GFX_BORDER_TOPLEFT EQU $01
|
||||
TRAINERGEAR_GFX_BORDER_TOPRIGHT EQU $02
|
||||
TRAINERGEAR_GFX_BORDER_BOTTOMLEFT EQU $03
|
||||
TRAINERGEAR_GFX_BORDER_BOTTOMRIGHT EQU $04
|
||||
TRAINERGEAR_GFX_BORDER_TOP EQU $05
|
||||
TRAINERGEAR_GFX_BORDER_BOTTOM EQU $06
|
||||
TRAINERGEAR_GFX_BORDER_RIGHT EQU $07
|
||||
TRAINERGEAR_GFX_BORDER_LEFT EQU $08
|
||||
|
||||
TRAINERGEAR_GFX_GRAYTILE EQU $0e
|
||||
TRAINERGEAR_GFX_BLANKTILE EQU $7f
|
||||
|
||||
TRAINERGEAR_GFX_MAP_ICON EQU $10
|
||||
TRAINERGEAR_GFX_RADIO_ICON EQU $14
|
||||
TRAINERGEAR_GFX_PHONE_ICON EQU $18
|
||||
|
||||
TRAINERGEAR_GFX_TUNE_BUTTON EQU $60
|
||||
TRAINERGEAR_GFX_TUNE_TEXT EQU $64
|
||||
TRAINERGEAR_GFX_RADIO_TOPHALF EQU $66
|
||||
TRAINERGEAR_GFX_RADIO_BOTTOMHALF EQU $67
|
||||
|
||||
; Trainer Gear cards
|
||||
const_def
|
||||
const TRAINERGEARCARD_MAP
|
||||
const TRAINERGEARCARD_RADIO
|
||||
const TRAINERGEARCARD_PHONE
|
||||
NUM_TRAINERGEAR_CARDS EQU const_value
|
||||
|
||||
; TrainerGear_Jumptable.Jumptable indices
|
||||
const_def
|
||||
const TRAINERGEARSTATE_INIT
|
||||
const TRAINERGEARSTATE_JOYPAD
|
||||
const TRAINERGEARSTATE_MAPINIT
|
||||
const TRAINERGEARSTATE_MAPJOYPAD
|
||||
const TRAINERGEARSTATE_RADIOINIT
|
||||
const TRAINERGEARSTATE_RADIOJOYPAD
|
||||
const TRAINERGEARSTATE_PHONEINIT
|
||||
const TRAINERGEARSTATE_PHONEJOYPAD
|
||||
TRAINERGEAR_END_LOOP_F EQU 7
|
||||
|
||||
; TrainerGear_RadioJumptable.Jumptable indices
|
||||
const_def
|
||||
const TRAINERGEAR_RADIOSTATE_WAITINPUT_1
|
||||
const TRAINERGEAR_RADIOSTATE_ADVANCEDIAL
|
||||
const TRAINERGEAR_RADIOSTATE_WAITINPUT_2
|
||||
const TRAINERGEAR_RADIOSTATE_TURNBACKDIAL
|
||||
|
||||
OpenTrainerGear:
|
||||
ld hl, wce5f
|
||||
ld a, [hl]
|
||||
push af
|
||||
set 4, [hl]
|
||||
ldh a, [hMapAnims]
|
||||
push af
|
||||
xor a
|
||||
ldh [hMapAnims], a
|
||||
ldh a, [hJoypadSum]
|
||||
push af
|
||||
|
||||
ld a, [wVramState]
|
||||
push af
|
||||
xor a
|
||||
ld [wVramState], a
|
||||
call TrainerGear_Init
|
||||
call DelayFrame
|
||||
.loop
|
||||
call TrainerGear_Loop
|
||||
jr nc, .loop
|
||||
pop af
|
||||
ld [wVramState], a
|
||||
|
||||
pop af
|
||||
ldh [hJoypadSum], a
|
||||
pop af
|
||||
ldh [hMapAnims], a
|
||||
pop af
|
||||
ld [wce5f], a
|
||||
call ClearJoypad
|
||||
ret
|
||||
|
||||
TrainerGear_Init:
|
||||
call ClearBGPalettes
|
||||
call DisableLCD
|
||||
call ClearSprites
|
||||
ld b, SGB_TRAINER_GEAR
|
||||
call GetSGBLayout
|
||||
|
||||
ld hl, TrainerGearGFX
|
||||
ld de, vChars2
|
||||
ld bc, $20 tiles
|
||||
ld a, BANK(TrainerGearGFX)
|
||||
call FarCopyData
|
||||
|
||||
call TrainerGear_InitTilemap
|
||||
call TrainerGear_PlaceIcons
|
||||
|
||||
xor a
|
||||
ldh [hSCY], a
|
||||
ldh [hSCX], a
|
||||
ld [wJumptableIndex], a
|
||||
ld [wTrainerGearPointerPosition], a
|
||||
ld a, $ff
|
||||
ld [wTrainerGearCard], a
|
||||
ld a, 7
|
||||
ldh [hWX], a
|
||||
ld a, 8
|
||||
call UpdateSoundNTimes
|
||||
|
||||
ld a, LCDC_DEFAULT
|
||||
ldh [rLCDC], a
|
||||
call WaitBGMap
|
||||
call SetPalettes
|
||||
ld a, %11100000
|
||||
ldh [rOBP1], a
|
||||
ret
|
||||
|
||||
TrainerGear_InitTilemap:
|
||||
ld hl, wTileMap
|
||||
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
|
||||
ld a, TRAINERGEAR_GFX_BLANKTILE
|
||||
call ByteFill
|
||||
ld de, wTileMap
|
||||
ld hl, TrainerGearTilemap
|
||||
ld bc, TrainerGearTilemap.End - TrainerGearTilemap
|
||||
call CopyBytes
|
||||
ret
|
||||
|
||||
TrainerGearTilemap:
|
||||
INCBIN "gfx/trainer_gear/trainer_gear.tilemap"
|
||||
.End:
|
||||
|
||||
TrainerGear_PlaceIcons:
|
||||
coord hl, 1, 0
|
||||
ld a, TRAINERGEAR_GFX_MAP_ICON
|
||||
call .PlaceIcon
|
||||
|
||||
coord hl, 4, 0
|
||||
ld a, TRAINERGEAR_GFX_RADIO_ICON
|
||||
call .PlaceIcon
|
||||
|
||||
coord hl, 7, 0
|
||||
ld a, TRAINERGEAR_GFX_PHONE_ICON
|
||||
call .PlaceIcon
|
||||
ret
|
||||
|
||||
.PlaceIcon:
|
||||
ld [hli], a
|
||||
inc a
|
||||
ld [hld], a
|
||||
ld bc, SCREEN_WIDTH
|
||||
add hl, bc
|
||||
inc a
|
||||
ld [hli], a
|
||||
inc a
|
||||
ld [hld], a
|
||||
ret
|
||||
|
||||
TrainerGear_Loop:
|
||||
call UpdateTime
|
||||
call GetJoypadDebounced
|
||||
ld a, [wJumptableIndex]
|
||||
bit TRAINERGEAR_END_LOOP_F, a
|
||||
jr nz, .done
|
||||
call TrainerGear_Jumptable
|
||||
callba EffectObjectJumpNoDelay
|
||||
call TrainerGear_UpdateTime
|
||||
call DelayFrame
|
||||
and a
|
||||
ret
|
||||
.done
|
||||
callab InitEffectObject
|
||||
call ClearSprites
|
||||
xor a
|
||||
ldh [hSCX], a
|
||||
ldh [hSCY], a
|
||||
scf
|
||||
ret
|
||||
|
||||
TrainerGear_UpdateTime:
|
||||
coord hl, 11, 1
|
||||
ld a, TRAINERGEAR_GFX_BLANKTILE
|
||||
ld [hli], a
|
||||
ld [hl], a
|
||||
|
||||
ld de, hRTCHours
|
||||
coord hl, 11, 1
|
||||
lb bc, 1, 2
|
||||
call PrintNumber
|
||||
inc hl
|
||||
|
||||
ld de, hRTCMinutes
|
||||
lb bc, PRINTNUM_LEADINGZEROS | 1, 2
|
||||
call PrintNumber
|
||||
inc hl
|
||||
|
||||
ld de, hRTCSeconds
|
||||
lb bc, PRINTNUM_LEADINGZEROS | 1, 2
|
||||
call PrintNumber
|
||||
ret
|
||||
|
||||
TrainerGear_Jumptable:
|
||||
jumptable .Jumptable, wJumptableIndex
|
||||
|
||||
.Jumptable:
|
||||
dw TrainerGear_InitPointerSprite
|
||||
dw TrainerGear_Joypad
|
||||
dw TrainerGear_Map
|
||||
dw TrainerGear_MapJoypad
|
||||
dw TrainerGear_Radio
|
||||
dw TrainerGear_RadioJoypad
|
||||
dw TrainerGear_Phone
|
||||
dw TrainerGear_PhoneJoypad
|
||||
|
||||
TrainerGear_Next:
|
||||
ld hl, wJumptableIndex
|
||||
inc [hl]
|
||||
ret
|
||||
|
||||
TrainerGear_InitPointerSprite:
|
||||
callab InitEffectObject
|
||||
ld de, PointerGFX
|
||||
ld hl, vChars0 tile TRAINERGEAR_GFX_POINTER
|
||||
lb bc, BANK(PointerGFX), 4
|
||||
call Request2bpp
|
||||
ld a, SPRITE_ANIM_DICT_29
|
||||
ld hl, wSpriteAnimDict
|
||||
ld [hli], a
|
||||
ld [hl], TRAINERGEAR_GFX_POINTER
|
||||
depixel 4, 3, 4, 4
|
||||
ld a, SPRITE_ANIM_INDEX_TRAINERGEAR_POINTER
|
||||
call InitSpriteAnimStruct
|
||||
call TrainerGear_Next
|
||||
ret
|
||||
|
||||
TrainerGear_Joypad:
|
||||
ld hl, hJoySum
|
||||
ld a, [hl]
|
||||
and B_BUTTON
|
||||
jr nz, .exit
|
||||
ld a, [hl]
|
||||
and A_BUTTON
|
||||
ret z
|
||||
call TrainerGear_DetermineView
|
||||
ret
|
||||
.exit
|
||||
ld hl, wJumptableIndex
|
||||
set TRAINERGEAR_END_LOOP_F, [hl]
|
||||
ret
|
||||
|
||||
TrainerGear_DetermineView:
|
||||
; don't attempt to reload the view if we're already in it
|
||||
ld a, [wTrainerGearPointerPosition]
|
||||
ld hl, wTrainerGearCard
|
||||
cp [hl]
|
||||
ret z
|
||||
|
||||
; load a new view by jumping to its init routine
|
||||
ld [wTrainerGearCard], a
|
||||
maskbits NUM_TRAINERGEAR_CARDS
|
||||
ld e, a
|
||||
ld d, 0
|
||||
ld hl, .Views
|
||||
add hl, de
|
||||
ld a, [hl]
|
||||
ld [wJumptableIndex], a
|
||||
ret
|
||||
|
||||
.Views:
|
||||
db TRAINERGEARSTATE_MAPINIT
|
||||
db TRAINERGEARSTATE_RADIOINIT
|
||||
db TRAINERGEARSTATE_PHONEINIT
|
||||
db TRAINERGEARSTATE_MAPINIT ; unused
|
||||
|
||||
TrainerGear_Map:
|
||||
call TrainerGear_Next
|
||||
call TrainerGear_ClearView
|
||||
call WaitForAutoBgMapTransfer
|
||||
ld b, SGB_PACKPALS
|
||||
call GetSGBLayout
|
||||
ld de, TownMapGFX
|
||||
ld hl, vTilesetEnd
|
||||
lb bc, BANK(TownMapGFX), ((TownMapGFX.End - TownMapGFX) / LEN_2BPP_TILE - 1)
|
||||
call Request2bpp
|
||||
coord hl, 0, 3
|
||||
call DecompTownMapTilemap
|
||||
call WaitBGMap
|
||||
call PlaceGoldInMap
|
||||
ld hl, SPRITEANIMSTRUCT_YCOORD
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
add 3 * TILE_WIDTH ; shift sprite down past the Trainer Gear UI
|
||||
ld [hl], a
|
||||
ret
|
||||
|
||||
TrainerGear_MapJoypad:
|
||||
ld hl, hJoyDown
|
||||
ld a, [hl]
|
||||
and B_BUTTON
|
||||
ret z
|
||||
xor a
|
||||
ld [wJumptableIndex], a
|
||||
ret
|
||||
|
||||
TrainerGear_Radio:
|
||||
call TrainerGear_Next
|
||||
call TrainerGear_ClearView
|
||||
call WaitForAutoBgMapTransfer
|
||||
ld b, SGB_TRAINER_CARD
|
||||
call GetSGBLayout
|
||||
|
||||
ld de, RadioGFX
|
||||
ld hl, vChars2 tile TRAINERGEAR_GFX_TUNE_BUTTON
|
||||
lb bc, BANK(RadioGFX), 9
|
||||
call Request2bpp
|
||||
ld de, VerticalPipeGFX
|
||||
ld hl, vChars0
|
||||
lb bc, BANK(VerticalPipeGFX), 1
|
||||
call Request2bpp
|
||||
|
||||
coord hl, 0, 3
|
||||
ld bc, SCREEN_WIDTH * 9
|
||||
ld a, TRAINERGEAR_GFX_GRAYTILE
|
||||
call ByteFill
|
||||
|
||||
coord hl, 1, 8
|
||||
lb bc, 4, 18
|
||||
call TrainerGear_DrawBox
|
||||
coord hl, 4, 3
|
||||
lb bc, 6, 14
|
||||
call TrainerGear_DrawBox
|
||||
ld a, TRAINERGEAR_GFX_BORDER_TOP
|
||||
coord hl, 0, 11
|
||||
ld [hl], a
|
||||
coord hl, 19, 11
|
||||
ld [hl], a
|
||||
|
||||
coord hl, 2, 5
|
||||
ld a, TRAINERGEAR_GFX_TUNE_BUTTON
|
||||
ld [hli], a
|
||||
inc a
|
||||
ld [hld], a
|
||||
inc a
|
||||
ld bc, SCREEN_WIDTH
|
||||
add hl, bc
|
||||
ld [hli], a
|
||||
inc a
|
||||
ld [hld], a
|
||||
coord hl, 2, 4
|
||||
ld a, TRAINERGEAR_GFX_TUNE_TEXT
|
||||
ld [hli], a
|
||||
inc a
|
||||
ld [hl], a
|
||||
|
||||
coord hl, 5, 5
|
||||
ld bc, 12
|
||||
ld a, TRAINERGEAR_GFX_RADIO_TOPHALF
|
||||
call ByteFill
|
||||
coord hl, 5, 6
|
||||
ld bc, 12
|
||||
ld a, TRAINERGEAR_GFX_RADIO_BOTTOMHALF
|
||||
call ByteFill
|
||||
|
||||
ld hl, TrainerGear_RadioText
|
||||
call PrintText
|
||||
|
||||
call WaitBGMap
|
||||
|
||||
depixel 9, 4, 4, 3
|
||||
ld a, SPRITE_ANIM_INDEX_TRAINERGEAR_POINTER
|
||||
call InitSpriteAnimStruct
|
||||
ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
|
||||
add hl, bc
|
||||
ld [hl], 0
|
||||
ld hl, SPRITEANIMSTRUCT_TILE_ID
|
||||
add hl, bc
|
||||
ld [hl], TRAINERGEAR_GFX_POINTER
|
||||
depixel 8, 6
|
||||
ld a, SPRITE_ANIM_INDEX_RADIO_TUNING_KNOB
|
||||
call InitSpriteAnimStruct
|
||||
ld hl, SPRITEANIMSTRUCT_TILE_ID
|
||||
add hl, bc
|
||||
ld [hl], TRAINERGEAR_GFX_VERTICAL_PIPE
|
||||
xor a
|
||||
ld [wTrainerGearRadioIndex], a
|
||||
ret
|
||||
|
||||
TrainerGear_RadioJoypad:
|
||||
ld hl, hJoyDown
|
||||
ld a, [hl]
|
||||
and B_BUTTON
|
||||
ret z
|
||||
xor a
|
||||
ld [wJumptableIndex], a
|
||||
ret
|
||||
|
||||
TrainerGear_RadioJumptable:
|
||||
ld hl, wTrainerGearRadioIndex
|
||||
ld e, [hl]
|
||||
ld d, 0
|
||||
ld hl, .Jumptable
|
||||
add hl, de
|
||||
add hl, de
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
jp hl
|
||||
|
||||
.Jumptable:
|
||||
dw .WaitInput
|
||||
dw .AdvanceDial
|
||||
dw .WaitInput
|
||||
dw .TurnBackDial
|
||||
|
||||
.WaitInput:
|
||||
ld hl, hJoyDown
|
||||
ld a, [hl]
|
||||
and A_BUTTON
|
||||
ret z
|
||||
ld hl, wTrainerGearRadioIndex
|
||||
inc [hl]
|
||||
ret
|
||||
|
||||
.AdvanceDial:
|
||||
ld hl, SPRITEANIMSTRUCT_0C
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
and a
|
||||
jr nz, .advance_save_pos
|
||||
call .GetRadioEvents
|
||||
jr c, .advance_wait_input
|
||||
ld hl, SPRITEANIMSTRUCT_XOFFSET
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
and a
|
||||
jr z, .reached_end
|
||||
|
||||
.advance_save_pos
|
||||
ld hl, -$40
|
||||
jr .SaveCursorPosition
|
||||
|
||||
.reached_end
|
||||
ld a, TRAINERGEAR_RADIOSTATE_TURNBACKDIAL
|
||||
ld [wTrainerGearRadioIndex], a
|
||||
ret
|
||||
|
||||
.advance_wait_input
|
||||
call .advance_save_pos
|
||||
xor a ; TRAINERGEAR_RADIOSTATE_WAITINPUT_1
|
||||
ld [wTrainerGearRadioIndex], a
|
||||
ret
|
||||
|
||||
.TurnBackDial:
|
||||
ld hl, SPRITEANIMSTRUCT_0C
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
and a
|
||||
jr nz, .turnback_save_pos
|
||||
call .GetRadioEvents
|
||||
jr c, .turnback_wait_input
|
||||
ld hl, SPRITEANIMSTRUCT_XOFFSET
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
cp $60
|
||||
jr z, .reached_beginning
|
||||
.turnback_save_pos
|
||||
ld hl, $40
|
||||
jr .SaveCursorPosition
|
||||
.reached_beginning
|
||||
ld a, TRAINERGEAR_RADIOSTATE_ADVANCEDIAL
|
||||
ld [wTrainerGearRadioIndex], a
|
||||
ret
|
||||
.turnback_wait_input
|
||||
call .turnback_save_pos
|
||||
ld a, TRAINERGEAR_RADIOSTATE_WAITINPUT_2
|
||||
ld [wTrainerGearRadioIndex], a
|
||||
ret
|
||||
|
||||
.SaveCursorPosition:
|
||||
push hl
|
||||
ld hl, SPRITEANIMSTRUCT_XOFFSET
|
||||
add hl, bc
|
||||
ld d, [hl]
|
||||
ld hl, SPRITEANIMSTRUCT_0C
|
||||
add hl, bc
|
||||
ld e, [hl]
|
||||
pop hl
|
||||
add hl, de
|
||||
ld e, l
|
||||
ld d, h
|
||||
ld hl, SPRITEANIMSTRUCT_0C
|
||||
add hl, bc
|
||||
ld [hl], e
|
||||
ld hl, SPRITEANIMSTRUCT_XOFFSET
|
||||
add hl, bc
|
||||
ld [hl], d
|
||||
ret
|
||||
|
||||
.GetRadioEvents:
|
||||
ld hl, SPRITEANIMSTRUCT_XOFFSET
|
||||
add hl, bc
|
||||
push bc
|
||||
ld c, [hl]
|
||||
ld a, [wMapGroup]
|
||||
ld e, a
|
||||
ld d, 0
|
||||
ld hl, TrainerGear_RadioAreas
|
||||
add hl, de
|
||||
add hl, de
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
.find_matches
|
||||
; Finds an event corresponding to the radio cursor's X offset
|
||||
ld a, [hl]
|
||||
and a
|
||||
jr z, .no_match
|
||||
cp c
|
||||
jr z, .found
|
||||
ld de, 6
|
||||
add hl, de
|
||||
jr .find_matches
|
||||
|
||||
.no_match
|
||||
; No associated event found, quit the routine
|
||||
pop bc
|
||||
and a
|
||||
ret
|
||||
|
||||
.found
|
||||
; Execute associated event with a parameter stored in e
|
||||
; Returns carry upon exiting event
|
||||
ld de, .AfterEvent
|
||||
push de
|
||||
inc hl
|
||||
ld e, [hl]
|
||||
inc hl
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
jp hl
|
||||
|
||||
.AfterEvent:
|
||||
pop bc
|
||||
scf
|
||||
ret
|
||||
|
||||
TrainerGear_RadioAreas:
|
||||
; one set of radio stations per map group
|
||||
dw TrainerGear_RadioStations_Music
|
||||
dw TrainerGear_RadioStations_Music
|
||||
dw TrainerGear_RadioStations_Music
|
||||
dw TrainerGear_RadioStations_Music
|
||||
dw TrainerGear_RadioStations_Music
|
||||
dw TrainerGear_RadioStations_Music
|
||||
dw TrainerGear_RadioStations_Music
|
||||
dw TrainerGear_RadioStations_Music
|
||||
dw TrainerGear_RadioStations_Music
|
||||
dw TrainerGear_RadioStations_Music
|
||||
dw TrainerGear_RadioStations_Music
|
||||
dw TrainerGear_RadioStations_Music
|
||||
dw TrainerGear_RadioStations_Music
|
||||
dw TrainerGear_RadioStations_Music
|
||||
dw TrainerGear_RadioStations_Music
|
||||
|
||||
radio_station: MACRO
|
||||
; \1 = "frequency" (tuning knob's X position)
|
||||
; \2 = parameter (loaded onto E)
|
||||
; \3 = subroutine to call
|
||||
; \4 = unused
|
||||
db \1, \2
|
||||
dw \3, \4
|
||||
ENDM
|
||||
|
||||
TrainerGear_RadioStations_Music:
|
||||
; list of radio stations associated with the map group
|
||||
radio_station $10, MUSIC_ROUTE_1, .PlayMusic, .PlayMusic
|
||||
radio_station $20, MUSIC_TRAINER_BATTLE, .PlayMusic, .PlayMusic
|
||||
radio_station $40, MUSIC_VIRIDIAN_CITY, .PlayMusic, .PlayMusic
|
||||
radio_station $48, MUSIC_BICYCLE, .PlayMusic, .PlayMusic
|
||||
db 0 ; list terminator
|
||||
|
||||
.PlayMusic:
|
||||
ld d, 0
|
||||
call PlayMusic
|
||||
ret
|
||||
|
||||
TrainerGear_Phone:
|
||||
call TrainerGear_Next
|
||||
call TrainerGear_ClearView
|
||||
call WaitForAutoBgMapTransfer
|
||||
ld b, SGB_TRAINER_GEAR
|
||||
call GetSGBLayout
|
||||
call LoadFontExtra
|
||||
ld de, .OutOfRangeText
|
||||
coord hl, 7, 7
|
||||
call PlaceString
|
||||
ld hl, .DarnText
|
||||
call PrintText
|
||||
call WaitBGMap
|
||||
ret
|
||||
|
||||
.OutOfRangeText:
|
||||
db "けんがい@"
|
||||
|
||||
.DarnText:
|
||||
text "ちぇっ⋯⋯⋯⋯"
|
||||
done
|
||||
|
||||
TrainerGear_PhoneJoypad:
|
||||
ld hl, hJoyDown
|
||||
ld a, [hl]
|
||||
and B_BUTTON
|
||||
ret z
|
||||
xor a
|
||||
ld [wJumptableIndex], a
|
||||
ret
|
||||
|
||||
TrainerGear_ClearView:
|
||||
callab InitEffectObject
|
||||
call ClearSprites
|
||||
call WaitForAutoBgMapTransfer
|
||||
coord hl, 0, 3
|
||||
ld bc, SCREEN_WIDTH * 15
|
||||
ld a, TRAINERGEAR_GFX_BLANKTILE
|
||||
call ByteFill
|
||||
call WaitBGMap
|
||||
call WaitBGMap
|
||||
ret
|
||||
|
||||
; called from sprite animation routine
|
||||
|
||||
AnimateTrainerGearModeIndicatorPointer::
|
||||
ld hl, wTrainerGearPointerPosition
|
||||
ld de, hJoySum
|
||||
ld a, [de]
|
||||
and D_LEFT
|
||||
jr nz, .move_left
|
||||
ld a, [de]
|
||||
and D_RIGHT
|
||||
jr nz, .move_right
|
||||
jr .update_position
|
||||
.move_left
|
||||
ld a, [hl]
|
||||
and a
|
||||
ret z
|
||||
dec [hl]
|
||||
jr .update_position
|
||||
.move_right
|
||||
ld a, [hl]
|
||||
cp NUM_TRAINERGEAR_CARDS - 1
|
||||
ret nc
|
||||
inc [hl]
|
||||
.update_position
|
||||
ld e, [hl]
|
||||
ld d, 0
|
||||
ld hl, .CursorPositions
|
||||
add hl, de
|
||||
ld a, [hl]
|
||||
ld hl, SPRITEANIMSTRUCT_XOFFSET
|
||||
add hl, bc
|
||||
ld [hl], a
|
||||
ret
|
||||
|
||||
.CursorPositions:
|
||||
db $00, $18, $30, $00
|
||||
|
||||
TrainerGear_DrawBox:
|
||||
dec c
|
||||
dec c
|
||||
dec b
|
||||
dec b
|
||||
ld de, SCREEN_WIDTH
|
||||
push bc
|
||||
push hl
|
||||
ld a, TRAINERGEAR_GFX_BORDER_TOPLEFT
|
||||
ld [hli], a
|
||||
ld a, TRAINERGEAR_GFX_BORDER_TOP
|
||||
.draw_separator
|
||||
ld [hli], a
|
||||
dec c
|
||||
jr nz, .draw_separator
|
||||
ld a, TRAINERGEAR_GFX_BORDER_TOPRIGHT
|
||||
ld [hl], a
|
||||
pop hl
|
||||
pop bc
|
||||
add hl, de
|
||||
.draw_row
|
||||
push bc
|
||||
push hl
|
||||
ld a, TRAINERGEAR_GFX_BORDER_LEFT
|
||||
ld [hli], a
|
||||
ld a, TRAINERGEAR_GFX_BLANKTILE
|
||||
.loop
|
||||
ld [hli], a
|
||||
dec c
|
||||
jr nz, .loop
|
||||
ld a, TRAINERGEAR_GFX_BORDER_RIGHT
|
||||
ld [hli], a
|
||||
pop hl
|
||||
add hl, de
|
||||
pop bc
|
||||
dec b
|
||||
jr nz, .draw_row
|
||||
ld a, TRAINERGEAR_GFX_BORDER_BOTTOMLEFT
|
||||
ld [hli], a
|
||||
ld a, TRAINERGEAR_GFX_BORDER_BOTTOM
|
||||
.draw_bottom
|
||||
ld [hli], a
|
||||
dec c
|
||||
jr nz, .draw_bottom
|
||||
ld a, TRAINERGEAR_GFX_BORDER_BOTTOMRIGHT
|
||||
ld [hli], a
|
||||
ret
|
||||
|
||||
SECTION "engine/trainer_gear.asm@TrainerGear_RadioText", ROMX
|
||||
|
||||
TrainerGear_RadioText:
|
||||
text "エーボタンで チューニング!"
|
||||
done
|
||||
3
gfx/trainer_gear/trainer_gear.tilemap
Normal file
3
gfx/trainer_gear/trainer_gear.tilemap
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
|
||||
|
||||
|
||||
|
|
@ -124,8 +124,10 @@ ROMX $02
|
|||
"engine/dumps/bank02.asm@QueueFollowerFirstStep"
|
||||
"gfx.asm@Mon Nest Icon"
|
||||
"engine/dumps/bank02.asm@Data8a17"
|
||||
"engine/trainer_gear.asm@OpenTrainerGear"
|
||||
"gfx.asm@Trainer Gear GFX"
|
||||
"engine/dumps/bank02.asm@Text91c2"
|
||||
"engine/trainer_gear.asm@TrainerGear_RadioText"
|
||||
"engine/dumps/bank02.asm@SetTitleBGDecorationBorder"
|
||||
"gfx.asm@Title Screen BG Decoration Border"
|
||||
"engine/dumps/bank02.asm@Function928b"
|
||||
"gfx.asm@SGB GFX"
|
||||
|
|
|
|||
|
|
@ -436,13 +436,16 @@ wJumptableIndex:: db
|
|||
|
||||
wFlyDestination::
|
||||
wIntroSceneFrameCounter::
|
||||
wTrainerGearPointerPosition::
|
||||
wBattleTransitionCounter:: db
|
||||
|
||||
wBattleTransitionSineWaveOffset::
|
||||
wBattleTransitionSpinQuadrant::
|
||||
wIntroSceneTimer::
|
||||
wTrainerGearCard::
|
||||
wcb60:: ds 1
|
||||
|
||||
wTrainerGearRadioIndex::
|
||||
wcb61:: ds 1
|
||||
|
||||
wVBCopySize:: ds 1
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user