Merge branch 'master' of https://github.com/pret/pokecrystal
This commit is contained in:
1692
engine/games/card_flip.asm
Normal file
1692
engine/games/card_flip.asm
Normal file
File diff suppressed because it is too large
Load Diff
612
engine/games/dummy_game.asm
Normal file
612
engine/games/dummy_game.asm
Normal file
@@ -0,0 +1,612 @@
|
||||
_DummyGame: ; e1e5b (38:5e5b)
|
||||
call .LoadGFXAndPals
|
||||
call DelayFrame
|
||||
.loop
|
||||
call .JumptableLoop
|
||||
jr nc, .loop
|
||||
ret
|
||||
|
||||
.LoadGFXAndPals:
|
||||
call DisableLCD
|
||||
ld b, SCGB_DIPLOMA
|
||||
call GetSGBLayout
|
||||
callfar ClearSpriteAnims
|
||||
ld hl, LZ_e2221
|
||||
ld de, vTiles2 tile $00
|
||||
call Decompress
|
||||
ld hl, Unknown_e00ed
|
||||
ld de, vTiles0 tile $00
|
||||
ld bc, 4 tiles
|
||||
ld a, BANK(Unknown_e00ed)
|
||||
call FarCopyBytes
|
||||
ld a, $8
|
||||
ld hl, wc300
|
||||
ld [hli], a
|
||||
ld [hl], $0
|
||||
hlcoord 0, 0
|
||||
ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
|
||||
xor a
|
||||
call ByteFill
|
||||
xor a
|
||||
ld [hSCY], a
|
||||
ld [hSCX], a
|
||||
ld [rWY], a
|
||||
ld [wJumptableIndex], a
|
||||
ld a, $1
|
||||
ld [hBGMapMode], a
|
||||
ld a, LCDC_DEFAULT
|
||||
ld [rLCDC], a
|
||||
ld a, $e4
|
||||
call DmgToCgbBGPals
|
||||
ld a, $e0
|
||||
call DmgToCgbObjPal0
|
||||
ret
|
||||
|
||||
.JumptableLoop:
|
||||
ld a, [wJumptableIndex]
|
||||
bit 7, a
|
||||
jr nz, .quit
|
||||
call .ExecuteJumptable
|
||||
callfar PlaySpriteAnimations
|
||||
call DelayFrame
|
||||
and a
|
||||
ret
|
||||
|
||||
.quit
|
||||
scf
|
||||
ret
|
||||
|
||||
.ExecuteJumptable:
|
||||
jumptable .Jumptable, wJumptableIndex
|
||||
|
||||
.Jumptable:
|
||||
dw .RestartGame
|
||||
dw .ResetBoard
|
||||
dw .InitBoardTilemapAndCursorObject
|
||||
dw .CheckTriesRemaining
|
||||
dw .PickCard1
|
||||
dw .PickCard2
|
||||
dw .DelayPickAgain
|
||||
dw .RevealAll
|
||||
dw .AskPlayAgain
|
||||
|
||||
.RestartGame:
|
||||
call DummyGame_InitStrings
|
||||
ld hl, wJumptableIndex
|
||||
inc [hl]
|
||||
ret
|
||||
|
||||
.ResetBoard:
|
||||
call ret_e00ed
|
||||
jr nc, .proceed
|
||||
ld hl, wJumptableIndex
|
||||
set 7, [hl]
|
||||
ret
|
||||
|
||||
.proceed
|
||||
call DummyGame_InitBoard
|
||||
ld hl, wJumptableIndex
|
||||
inc [hl]
|
||||
xor a
|
||||
ld [wDummyGameCounter], a
|
||||
ld hl, wDummyGameLastMatches
|
||||
rept 4
|
||||
ld [hli], a
|
||||
endr
|
||||
ld [hl], a
|
||||
ld [wDummyGameNumCardsMatched], a
|
||||
.InitBoardTilemapAndCursorObject:
|
||||
ld hl, wDummyGameCounter
|
||||
ld a, [hl]
|
||||
cp 45
|
||||
jr nc, .spawn_object
|
||||
inc [hl]
|
||||
call DummyGame_Card2Coord
|
||||
xor a
|
||||
ld [wDummyGameLastCardPicked], a
|
||||
call DummyGame_PlaceCard
|
||||
ret
|
||||
|
||||
.spawn_object
|
||||
depixel 6, 3, 4, 4
|
||||
ld a, SPRITE_ANIM_INDEX_DUMMY_GAME
|
||||
call _InitSpriteAnimStruct
|
||||
ld a, 5
|
||||
ld [wDummyGameNumberTriesRemaining], a
|
||||
ld hl, wJumptableIndex
|
||||
inc [hl]
|
||||
ret
|
||||
|
||||
.CheckTriesRemaining:
|
||||
ld a, [wDummyGameNumberTriesRemaining]
|
||||
hlcoord 17, 0
|
||||
add "0"
|
||||
ld [hl], a
|
||||
ld hl, wDummyGameNumberTriesRemaining
|
||||
ld a, [hl]
|
||||
and a
|
||||
jr nz, .next_try
|
||||
ld a, $7
|
||||
ld [wJumptableIndex], a
|
||||
ret
|
||||
|
||||
.next_try
|
||||
dec [hl]
|
||||
xor a
|
||||
ld [wcf64], a
|
||||
ld hl, wJumptableIndex
|
||||
inc [hl]
|
||||
.PickCard1:
|
||||
ld a, [wcf64]
|
||||
and a
|
||||
ret z
|
||||
dec a
|
||||
ld e, a
|
||||
ld d, 0
|
||||
ld hl, wDummyGameCards
|
||||
add hl, de
|
||||
ld a, [hl]
|
||||
cp -1
|
||||
ret z
|
||||
ld [wDummyGameLastCardPicked], a
|
||||
ld [wDummyGameCard1], a
|
||||
ld a, e
|
||||
ld [wDummyGameCard1Location], a
|
||||
call DummyGame_Card2Coord
|
||||
call DummyGame_PlaceCard
|
||||
xor a
|
||||
ld [wcf64], a
|
||||
ld hl, wJumptableIndex
|
||||
inc [hl]
|
||||
ret
|
||||
|
||||
.PickCard2:
|
||||
ld a, [wcf64]
|
||||
and a
|
||||
ret z
|
||||
dec a
|
||||
ld hl, wDummyGameCard1Location
|
||||
cp [hl]
|
||||
ret z
|
||||
ld e, a
|
||||
ld d, 0
|
||||
ld hl, wDummyGameCards
|
||||
add hl, de
|
||||
ld a, [hl]
|
||||
cp -1
|
||||
ret z
|
||||
ld [wDummyGameLastCardPicked], a
|
||||
ld [wDummyGameCard2], a
|
||||
ld a, e
|
||||
ld [wDummyGameCard2Location], a
|
||||
call DummyGame_Card2Coord
|
||||
call DummyGame_PlaceCard
|
||||
ld a, 64
|
||||
ld [wDummyGameCounter], a
|
||||
ld hl, wJumptableIndex
|
||||
inc [hl]
|
||||
.DelayPickAgain:
|
||||
ld hl, wDummyGameCounter
|
||||
ld a, [hl]
|
||||
and a
|
||||
jr z, .PickAgain
|
||||
dec [hl]
|
||||
ret
|
||||
|
||||
.PickAgain:
|
||||
call DummyGame_CheckMatch
|
||||
ld a, $3
|
||||
ld [wJumptableIndex], a
|
||||
ret
|
||||
|
||||
.RevealAll:
|
||||
ld a, [hJoypadPressed]
|
||||
and A_BUTTON
|
||||
ret z
|
||||
xor a
|
||||
ld [wDummyGameCounter], a
|
||||
.RevelationLoop:
|
||||
ld hl, wDummyGameCounter
|
||||
ld a, [hl]
|
||||
cp 45
|
||||
jr nc, .finish_round
|
||||
inc [hl]
|
||||
push af
|
||||
call DummyGame_Card2Coord
|
||||
pop af
|
||||
push hl
|
||||
ld e, a
|
||||
ld d, $0
|
||||
ld hl, wDummyGameCards
|
||||
add hl, de
|
||||
ld a, [hl]
|
||||
pop hl
|
||||
cp -1
|
||||
jr z, .RevelationLoop
|
||||
ld [wDummyGameLastCardPicked], a
|
||||
call DummyGame_PlaceCard
|
||||
jr .RevelationLoop
|
||||
|
||||
.finish_round
|
||||
call WaitPressAorB_BlinkCursor
|
||||
ld hl, wJumptableIndex
|
||||
inc [hl]
|
||||
.AskPlayAgain:
|
||||
call ret_e00ed
|
||||
jr nc, .restart
|
||||
ld hl, wJumptableIndex
|
||||
set 7, [hl]
|
||||
ret
|
||||
|
||||
.restart
|
||||
xor a
|
||||
ld [wJumptableIndex], a
|
||||
ret
|
||||
|
||||
; e2010
|
||||
|
||||
DummyGame_CheckMatch: ; e2010
|
||||
ld hl, wDummyGameCard1
|
||||
ld a, [hli]
|
||||
cp [hl]
|
||||
jr nz, .no_match
|
||||
|
||||
ld a, [wDummyGameCard1Location]
|
||||
call DummyGame_Card2Coord
|
||||
call DummyGame_DeleteCard
|
||||
|
||||
ld a, [wDummyGameCard2Location]
|
||||
call DummyGame_Card2Coord
|
||||
call DummyGame_DeleteCard
|
||||
|
||||
ld a, [wDummyGameCard1Location]
|
||||
ld e, a
|
||||
ld d, $0
|
||||
ld hl, wDummyGameCards
|
||||
add hl, de
|
||||
ld [hl], -1
|
||||
|
||||
ld a, [wDummyGameCard2Location]
|
||||
ld e, a
|
||||
ld d, 0
|
||||
ld hl, wDummyGameCards
|
||||
add hl, de
|
||||
ld [hl], -1
|
||||
|
||||
ld hl, wDummyGameLastMatches
|
||||
.find_empty_slot
|
||||
ld a, [hli]
|
||||
and a
|
||||
jr nz, .find_empty_slot
|
||||
dec hl
|
||||
ld a, [wDummyGameCard1]
|
||||
ld [hl], a
|
||||
ld [wDummyGameLastCardPicked], a
|
||||
ld hl, wDummyGameNumCardsMatched
|
||||
ld e, [hl]
|
||||
inc [hl]
|
||||
inc [hl]
|
||||
ld d, 0
|
||||
hlcoord 5, 0
|
||||
add hl, de
|
||||
call DummyGame_PlaceCard
|
||||
ld hl, .VictoryText
|
||||
call PrintText
|
||||
ret
|
||||
|
||||
.no_match
|
||||
xor a
|
||||
ld [wDummyGameLastCardPicked], a
|
||||
|
||||
ld a, [wDummyGameCard1Location]
|
||||
call DummyGame_Card2Coord
|
||||
call DummyGame_PlaceCard
|
||||
|
||||
ld a, [wDummyGameCard2Location]
|
||||
call DummyGame_Card2Coord
|
||||
call DummyGame_PlaceCard
|
||||
|
||||
ld hl, DummyGameText_Darn
|
||||
call PrintText
|
||||
ret
|
||||
|
||||
.VictoryText:
|
||||
start_asm
|
||||
push bc
|
||||
hlcoord 2, 13
|
||||
call DummyGame_PlaceCard
|
||||
ld hl, DummyGameText_Yeah
|
||||
pop bc
|
||||
inc bc
|
||||
inc bc
|
||||
inc bc
|
||||
ret
|
||||
|
||||
; e2093
|
||||
|
||||
DummyGameText_Yeah: ; 0xe2093
|
||||
; , yeah!
|
||||
text_jump UnknownText_0x1c1a5b
|
||||
db "@"
|
||||
; 0xe2098
|
||||
|
||||
DummyGameText_Darn: ; 0xe2098
|
||||
; Darn…
|
||||
text_jump UnknownText_0x1c1a65
|
||||
db "@"
|
||||
; 0xe209d
|
||||
|
||||
DummyGame_InitBoard: ; e209d
|
||||
ld hl, wDummyGameCards
|
||||
ld bc, wDummyGameCardsEnd - wDummyGameCards
|
||||
xor a
|
||||
call ByteFill
|
||||
call DummyGame_GetDistributionOfTiles
|
||||
|
||||
ld c, 2
|
||||
ld b, [hl]
|
||||
call DummyGame_SampleTilePlacement
|
||||
|
||||
ld c, 8
|
||||
ld b, [hl]
|
||||
call DummyGame_SampleTilePlacement
|
||||
|
||||
ld c, 4
|
||||
ld b, [hl]
|
||||
call DummyGame_SampleTilePlacement
|
||||
|
||||
ld c, 7
|
||||
ld b, [hl]
|
||||
call DummyGame_SampleTilePlacement
|
||||
|
||||
ld c, 3
|
||||
ld b, [hl]
|
||||
call DummyGame_SampleTilePlacement
|
||||
|
||||
ld c, 6
|
||||
ld b, [hl]
|
||||
call DummyGame_SampleTilePlacement
|
||||
|
||||
ld c, 1
|
||||
ld b, [hl]
|
||||
call DummyGame_SampleTilePlacement
|
||||
|
||||
ld c, 5
|
||||
ld hl, wDummyGameCards
|
||||
ld b, wDummyGameCardsEnd - wDummyGameCards
|
||||
.loop
|
||||
ld a, [hl]
|
||||
and a
|
||||
jr nz, .no_load
|
||||
ld [hl], c
|
||||
.no_load
|
||||
inc hl
|
||||
dec b
|
||||
jr nz, .loop
|
||||
ret
|
||||
|
||||
; e20e5
|
||||
|
||||
DummyGame_SampleTilePlacement: ; e20e5
|
||||
push hl
|
||||
ld de, wDummyGameCards
|
||||
.loop
|
||||
call Random
|
||||
and %00111111
|
||||
cp 45
|
||||
jr nc, .loop
|
||||
ld l, a
|
||||
ld h, 0
|
||||
add hl, de
|
||||
ld a, [hl]
|
||||
and a
|
||||
jr nz, .loop
|
||||
ld [hl], c
|
||||
dec b
|
||||
jr nz, .loop
|
||||
pop hl
|
||||
inc hl
|
||||
ret
|
||||
|
||||
; e2101
|
||||
|
||||
DummyGame_GetDistributionOfTiles: ; e2101
|
||||
ld a, [wMenuCursorY]
|
||||
dec a
|
||||
ld l, a
|
||||
ld h, 0
|
||||
add hl, hl
|
||||
add hl, hl
|
||||
add hl, hl
|
||||
ld de, .distributions
|
||||
add hl, de
|
||||
ret
|
||||
|
||||
.distributions
|
||||
db $02, $03, $06, $06, $06, $08, $08, $06
|
||||
db $02, $02, $04, $06, $06, $08, $08, $09
|
||||
db $02, $02, $02, $04, $07, $08, $08, $0c
|
||||
; e2128
|
||||
|
||||
DummyGame_PlaceCard: ; e2128
|
||||
ld a, [wDummyGameLastCardPicked]
|
||||
sla a
|
||||
sla a
|
||||
add 4
|
||||
ld [hli], a
|
||||
inc a
|
||||
ld [hld], a
|
||||
inc a
|
||||
ld bc, SCREEN_WIDTH
|
||||
add hl, bc
|
||||
ld [hli], a
|
||||
inc a
|
||||
ld [hl], a
|
||||
ld c, 3
|
||||
call DelayFrames
|
||||
ret
|
||||
|
||||
; e2142
|
||||
|
||||
DummyGame_DeleteCard: ; e2142
|
||||
ld a, $1
|
||||
ld [hli], a
|
||||
ld [hld], a
|
||||
ld bc, SCREEN_WIDTH
|
||||
add hl, bc
|
||||
ld [hli], a
|
||||
ld [hl], a
|
||||
ld c, 3
|
||||
call DelayFrames
|
||||
ret
|
||||
|
||||
; e2152
|
||||
|
||||
DummyGame_InitStrings: ; e2152
|
||||
hlcoord 0, 0
|
||||
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
|
||||
ld a, $1
|
||||
call ByteFill
|
||||
hlcoord 0, 0
|
||||
ld de, .japstr1
|
||||
call PlaceString
|
||||
hlcoord 15, 0
|
||||
ld de, .japstr2
|
||||
call PlaceString
|
||||
ld hl, .dummy_text
|
||||
call PrintText
|
||||
ret
|
||||
|
||||
.dummy_text
|
||||
db "@"
|
||||
.japstr1
|
||||
db "とったもの@"
|
||||
.japstr2
|
||||
db "あと かい@"
|
||||
; e2183
|
||||
|
||||
DummyGame_Card2Coord: ; e2183
|
||||
ld d, 0
|
||||
.find_row
|
||||
sub 9
|
||||
jr c, .found_row
|
||||
inc d
|
||||
jr .find_row
|
||||
|
||||
.found_row
|
||||
add 9
|
||||
ld e, a
|
||||
hlcoord 1, 2
|
||||
ld bc, 2 * SCREEN_WIDTH
|
||||
.loop2
|
||||
ld a, d
|
||||
and a
|
||||
jr z, .done
|
||||
add hl, bc
|
||||
dec d
|
||||
jr .loop2
|
||||
|
||||
.done
|
||||
sla e
|
||||
add hl, de
|
||||
ret
|
||||
|
||||
; e21a1
|
||||
|
||||
DummyGame_InterpretJoypad_AnimateCursor: ; e21a1 (38:61a1)
|
||||
ld a, [wJumptableIndex]
|
||||
cp $7
|
||||
jr nc, .quit
|
||||
call JoyTextDelay
|
||||
ld hl, hJoypadPressed ; $ffa3
|
||||
ld a, [hl]
|
||||
and A_BUTTON
|
||||
jr nz, .pressed_a
|
||||
ld a, [hl]
|
||||
and D_LEFT
|
||||
jr nz, .pressed_left
|
||||
ld a, [hl]
|
||||
and D_RIGHT
|
||||
jr nz, .pressed_right
|
||||
ld a, [hl]
|
||||
and D_UP
|
||||
jr nz, .pressed_up
|
||||
ld a, [hl]
|
||||
and D_DOWN
|
||||
jr nz, .pressed_down
|
||||
ret
|
||||
|
||||
.quit
|
||||
ld hl, SPRITEANIMSTRUCT_INDEX
|
||||
add hl, bc
|
||||
ld [hl], $0
|
||||
ret
|
||||
|
||||
.pressed_a
|
||||
ld hl, SPRITEANIMSTRUCT_0C
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
inc a
|
||||
ld [wcf64], a
|
||||
ret
|
||||
|
||||
.pressed_left
|
||||
ld hl, SPRITEANIMSTRUCT_XOFFSET
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
and a
|
||||
ret z
|
||||
sub 1 tiles
|
||||
ld [hl], a
|
||||
ld hl, SPRITEANIMSTRUCT_0C
|
||||
add hl, bc
|
||||
dec [hl]
|
||||
ret
|
||||
|
||||
.pressed_right
|
||||
ld hl, SPRITEANIMSTRUCT_XOFFSET
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
cp (9 - 1) tiles
|
||||
ret z
|
||||
add 1 tiles
|
||||
ld [hl], a
|
||||
ld hl, SPRITEANIMSTRUCT_0C
|
||||
add hl, bc
|
||||
inc [hl]
|
||||
ret
|
||||
|
||||
.pressed_up
|
||||
ld hl, SPRITEANIMSTRUCT_YOFFSET
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
and a
|
||||
ret z
|
||||
sub 1 tiles
|
||||
ld [hl], a
|
||||
ld hl, SPRITEANIMSTRUCT_0C
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
sub 9
|
||||
ld [hl], a
|
||||
ret
|
||||
|
||||
.pressed_down
|
||||
ld hl, SPRITEANIMSTRUCT_YOFFSET
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
cp (5 - 1) tiles
|
||||
ret z
|
||||
add 1 tiles
|
||||
ld [hl], a
|
||||
ld hl, SPRITEANIMSTRUCT_0C
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
add 9
|
||||
ld [hl], a
|
||||
ret
|
||||
|
||||
; e2221 (38:6221)
|
||||
|
||||
LZ_e2221: ; e2221
|
||||
INCBIN "gfx/dummy_game/dummy_game.2bpp.lz"
|
2352
engine/games/slot_machine.asm
Normal file
2352
engine/games/slot_machine.asm
Normal file
File diff suppressed because it is too large
Load Diff
877
engine/games/unown_puzzle.asm
Normal file
877
engine/games/unown_puzzle.asm
Normal file
@@ -0,0 +1,877 @@
|
||||
PUZZLE_BORDER EQU $ee
|
||||
PUZZLE_VOID EQU $ef
|
||||
|
||||
puzcoord EQUS "* 6 +"
|
||||
|
||||
_UnownPuzzle: ; e1190
|
||||
ld a, [hInMenu]
|
||||
push af
|
||||
ld a, $1
|
||||
ld [hInMenu], a
|
||||
call ClearBGPalettes
|
||||
call ClearTileMap
|
||||
call ClearSprites
|
||||
xor a
|
||||
ld [hBGMapMode], a
|
||||
call DisableLCD
|
||||
ld hl, wc608 ; includes wPuzzlePieces
|
||||
ld bc, wc7e8 - wc608
|
||||
xor a
|
||||
call ByteFill
|
||||
ld hl, UnownPuzzleCursorGFX
|
||||
ld de, vTiles1 tile $60
|
||||
ld bc, 4 tiles
|
||||
call CopyBytes
|
||||
ld hl, UnownPuzzleStartCancelLZ
|
||||
ld de, vTiles1 tile $6d
|
||||
call Decompress
|
||||
call LoadUnownPuzzlePiecesGFX
|
||||
hlcoord 0, 0
|
||||
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
|
||||
ld a, PUZZLE_BORDER
|
||||
call ByteFill
|
||||
hlcoord 4, 3
|
||||
lb bc, 12, 12
|
||||
ld a, PUZZLE_VOID
|
||||
call UnownPuzzle_FillBox
|
||||
call InitUnownPuzzlePiecePositions
|
||||
call UnownPuzzle_UpdateTilemap
|
||||
call PlaceStartCancelBox
|
||||
xor a
|
||||
ld [hSCY], a
|
||||
ld [hSCX], a
|
||||
ld [rWY], a
|
||||
ld [wJumptableIndex], a
|
||||
ld [wHoldingUnownPuzzlePiece], a
|
||||
ld [wUnownPuzzleCursorPosition], a
|
||||
ld [wUnownPuzzleHeldPiece], a
|
||||
ld a, %10010011
|
||||
ld [rLCDC], a
|
||||
call WaitBGMap
|
||||
ld b, SCGB_UNOWN_PUZZLE
|
||||
call GetSGBLayout
|
||||
ld a, $e4
|
||||
call DmgToCgbBGPals
|
||||
ld a, $24
|
||||
call DmgToCgbObjPal0
|
||||
xor a
|
||||
ld [wSolvedUnownPuzzle], a
|
||||
call DelayFrame
|
||||
.loop
|
||||
call JoyTextDelay
|
||||
ld a, [wJumptableIndex]
|
||||
bit 7, a
|
||||
jr nz, .quit
|
||||
call UnownPuzzleJumptable
|
||||
ld a, [wHoldingUnownPuzzlePiece]
|
||||
and a
|
||||
jr nz, .holding_piece
|
||||
ld a, [hVBlankCounter]
|
||||
and $10
|
||||
jr z, .clear
|
||||
.holding_piece
|
||||
call RedrawUnownPuzzlePieces
|
||||
jr .next
|
||||
|
||||
.clear
|
||||
call ClearSprites
|
||||
.next
|
||||
call DelayFrame
|
||||
jr .loop
|
||||
|
||||
.quit
|
||||
pop af
|
||||
ld [hInMenu], a
|
||||
call ClearBGPalettes
|
||||
call ClearTileMap
|
||||
call ClearSprites
|
||||
ld a, LCDC_DEFAULT
|
||||
ld [rLCDC], a
|
||||
ret
|
||||
; e124e
|
||||
|
||||
InitUnownPuzzlePiecePositions: ; e124e
|
||||
ld c, 1
|
||||
ld b, 16
|
||||
.load_loop
|
||||
call Random
|
||||
and $f
|
||||
ld hl, .PuzzlePieceInitialPositions
|
||||
ld e, a
|
||||
ld d, $0
|
||||
add hl, de
|
||||
ld e, [hl]
|
||||
ld hl, wPuzzlePieces
|
||||
add hl, de
|
||||
ld a, [hl]
|
||||
and a
|
||||
jr nz, .load_loop
|
||||
ld [hl], c
|
||||
inc c
|
||||
dec b
|
||||
jr nz, .load_loop
|
||||
ret
|
||||
; e126d
|
||||
|
||||
.PuzzlePieceInitialPositions: ; e126d
|
||||
initpuzcoord: MACRO
|
||||
rept _NARG / 2
|
||||
db \1 puzcoord \2
|
||||
shift
|
||||
shift
|
||||
endr
|
||||
ENDM
|
||||
initpuzcoord 0,0, 0,1, 0,2, 0,3, 0,4, 0,5
|
||||
initpuzcoord 1,0, 1,5
|
||||
initpuzcoord 2,0, 2,5
|
||||
initpuzcoord 3,0, 3,5
|
||||
initpuzcoord 4,0, 4,5
|
||||
initpuzcoord 5,0, 5,5
|
||||
; START > CANCEL
|
||||
; e127d
|
||||
|
||||
PlaceStartCancelBox: ; e127d
|
||||
call PlaceStartCancelBoxBorder
|
||||
hlcoord 5, 16
|
||||
ld a, $f6
|
||||
ld c, 10
|
||||
.loop
|
||||
ld [hli], a
|
||||
inc a
|
||||
dec c
|
||||
jr nz, .loop
|
||||
ret
|
||||
; e128d
|
||||
|
||||
PlaceStartCancelBoxBorder: ; e128d
|
||||
hlcoord 4, 15
|
||||
ld a, $f0
|
||||
ld [hli], a
|
||||
ld bc, 10
|
||||
ld a, $f1
|
||||
call ByteFill
|
||||
hlcoord 15, 15
|
||||
ld a, $f2
|
||||
ld [hli], a
|
||||
hlcoord 4, 16
|
||||
ld a, $f3
|
||||
ld [hli], a
|
||||
ld bc, 10
|
||||
ld a, PUZZLE_VOID
|
||||
call ByteFill
|
||||
hlcoord 15, 16
|
||||
ld a, $f3
|
||||
ld [hli], a
|
||||
hlcoord 4, 17
|
||||
ld a, $f4
|
||||
ld [hli], a
|
||||
ld bc, 10
|
||||
ld a, $f1
|
||||
call ByteFill
|
||||
hlcoord 15, 17
|
||||
ld a, $f5
|
||||
ld [hl], a
|
||||
ret
|
||||
; e12ca
|
||||
|
||||
UnownPuzzleJumptable: ; e12ca
|
||||
ld a, [wJumptableIndex]
|
||||
ld e, a
|
||||
ld d, 0
|
||||
ld hl, .Jumptable
|
||||
add hl, de
|
||||
add hl, de
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
jp hl
|
||||
; e12d9
|
||||
|
||||
.Jumptable: ; e12d9
|
||||
dw .Function
|
||||
; e12db
|
||||
|
||||
.Function: ; e12db
|
||||
ld a, [hJoyPressed]
|
||||
and START
|
||||
jp nz, UnownPuzzle_Quit
|
||||
ld a, [hJoyPressed]
|
||||
and A_BUTTON
|
||||
jp nz, UnownPuzzle_A
|
||||
ld hl, hJoyLast
|
||||
ld a, [hl]
|
||||
and D_UP
|
||||
jr nz, .d_up
|
||||
ld a, [hl]
|
||||
and D_DOWN
|
||||
jr nz, .d_down
|
||||
ld a, [hl]
|
||||
and D_LEFT
|
||||
jr nz, .d_left
|
||||
ld a, [hl]
|
||||
and D_RIGHT
|
||||
jr nz, .d_right
|
||||
ret
|
||||
|
||||
.d_up
|
||||
ld hl, wUnownPuzzleCursorPosition
|
||||
ld a, [hl]
|
||||
cp 1 puzcoord 0
|
||||
ret c
|
||||
sub 6
|
||||
ld [hl], a
|
||||
jr .done_joypad
|
||||
|
||||
.d_down
|
||||
ld hl, wUnownPuzzleCursorPosition
|
||||
ld a, [hl]
|
||||
cp 4 puzcoord 1
|
||||
ret z
|
||||
cp 4 puzcoord 2
|
||||
ret z
|
||||
cp 4 puzcoord 3
|
||||
ret z
|
||||
cp 4 puzcoord 4
|
||||
ret z
|
||||
cp 5 puzcoord 0
|
||||
ret nc
|
||||
add 6
|
||||
ld [hl], a
|
||||
jr .done_joypad
|
||||
|
||||
.d_left
|
||||
ld hl, wUnownPuzzleCursorPosition
|
||||
ld a, [hl]
|
||||
and a
|
||||
ret z
|
||||
cp 1 puzcoord 0
|
||||
ret z
|
||||
cp 2 puzcoord 0
|
||||
ret z
|
||||
cp 3 puzcoord 0
|
||||
ret z
|
||||
cp 4 puzcoord 0
|
||||
ret z
|
||||
cp 5 puzcoord 0
|
||||
ret z
|
||||
cp 5 puzcoord 5
|
||||
jr z, .left_overflow
|
||||
dec [hl]
|
||||
jr .done_joypad
|
||||
|
||||
.left_overflow
|
||||
ld [hl], 5 puzcoord 0
|
||||
jr .done_joypad
|
||||
|
||||
.d_right
|
||||
ld hl, wUnownPuzzleCursorPosition
|
||||
ld a, [hl]
|
||||
cp 0 puzcoord 5
|
||||
ret z
|
||||
cp 1 puzcoord 5
|
||||
ret z
|
||||
cp 2 puzcoord 5
|
||||
ret z
|
||||
cp 3 puzcoord 5
|
||||
ret z
|
||||
cp 4 puzcoord 5
|
||||
ret z
|
||||
cp 5 puzcoord 5
|
||||
ret z
|
||||
cp 5 puzcoord 0
|
||||
jr z, .right_overflow
|
||||
inc [hl]
|
||||
jr .done_joypad
|
||||
|
||||
.right_overflow
|
||||
ld [hl], 5 puzcoord 5
|
||||
|
||||
.done_joypad
|
||||
ld a, [wHoldingUnownPuzzlePiece]
|
||||
and a
|
||||
jr nz, .holding_piece
|
||||
ld de, SFX_POUND
|
||||
jr .play_sfx
|
||||
|
||||
.holding_piece
|
||||
ld de, SFX_MOVE_PUZZLE_PIECE
|
||||
|
||||
.play_sfx
|
||||
call PlaySFX
|
||||
ret
|
||||
; e1376
|
||||
|
||||
UnownPuzzle_A: ; e1376
|
||||
ld a, [wHoldingUnownPuzzlePiece]
|
||||
and a
|
||||
jr nz, .TryPlacePiece
|
||||
call UnownPuzzle_CheckCurrentTileOccupancy
|
||||
and a
|
||||
jr z, UnownPuzzle_InvalidAction
|
||||
ld de, SFX_MEGA_KICK
|
||||
call PlaySFX
|
||||
ld [hl], 0
|
||||
ld [wUnownPuzzleHeldPiece], a
|
||||
call RedrawUnownPuzzlePieces
|
||||
call FillUnoccupiedPuzzleSpace
|
||||
call WaitBGMap
|
||||
call WaitSFX
|
||||
ld a, TRUE
|
||||
ld [wHoldingUnownPuzzlePiece], a
|
||||
ret
|
||||
|
||||
.TryPlacePiece:
|
||||
call UnownPuzzle_CheckCurrentTileOccupancy
|
||||
and a
|
||||
jr nz, UnownPuzzle_InvalidAction
|
||||
ld de, SFX_PLACE_PUZZLE_PIECE_DOWN
|
||||
call PlaySFX
|
||||
ld a, [wUnownPuzzleHeldPiece]
|
||||
ld [hl], a
|
||||
call PlaceUnownPuzzlePieceGFX
|
||||
call WaitBGMap
|
||||
xor a
|
||||
ld [wUnownPuzzleHeldPiece], a
|
||||
call RedrawUnownPuzzlePieces
|
||||
xor a
|
||||
ld [wHoldingUnownPuzzlePiece], a
|
||||
call WaitSFX
|
||||
call CheckSolvedUnownPuzzle
|
||||
ret nc
|
||||
|
||||
; You solved the puzzle!
|
||||
call PlaceStartCancelBoxBorder
|
||||
call ClearSprites
|
||||
ld de, SFX_1ST_PLACE
|
||||
call PlaySFX
|
||||
call WaitSFX
|
||||
call SimpleWaitPressAorB
|
||||
ld a, TRUE
|
||||
ld [wSolvedUnownPuzzle], a
|
||||
UnownPuzzle_Quit: ; e13de
|
||||
ld hl, wJumptableIndex
|
||||
set 7, [hl]
|
||||
ret
|
||||
|
||||
UnownPuzzle_InvalidAction: ; e13e4
|
||||
ld de, SFX_WRONG
|
||||
call PlaySFX
|
||||
call WaitSFX
|
||||
ret
|
||||
; e13ee
|
||||
|
||||
UnownPuzzle_FillBox: ; e13ee
|
||||
ld de, SCREEN_WIDTH
|
||||
.row
|
||||
push bc
|
||||
push hl
|
||||
.col
|
||||
ld [hli], a
|
||||
dec c
|
||||
jr nz, .col
|
||||
pop hl
|
||||
add hl, de
|
||||
pop bc
|
||||
dec b
|
||||
jr nz, .row
|
||||
ret
|
||||
; e13fe
|
||||
|
||||
UnownPuzzle_UpdateTilemap: ; e13fe
|
||||
xor a
|
||||
ld [wUnownPuzzleCursorPosition], a
|
||||
ld c, 6 * 6
|
||||
.loop
|
||||
push bc
|
||||
call UnownPuzzle_CheckCurrentTileOccupancy
|
||||
ld [wUnownPuzzleHeldPiece], a
|
||||
and a
|
||||
jr z, .not_holding_piece
|
||||
call PlaceUnownPuzzlePieceGFX
|
||||
jr .next
|
||||
|
||||
.not_holding_piece
|
||||
call FillUnoccupiedPuzzleSpace
|
||||
|
||||
.next
|
||||
ld hl, wUnownPuzzleCursorPosition
|
||||
inc [hl]
|
||||
pop bc
|
||||
dec c
|
||||
jr nz, .loop
|
||||
ret
|
||||
; e141f
|
||||
|
||||
PlaceUnownPuzzlePieceGFX: ; e141f
|
||||
ld a, $2 ; tilemap coords
|
||||
call GetUnownPuzzleCoordData
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
push hl
|
||||
call GetCurrentPuzzlePieceVTileCorner
|
||||
pop hl
|
||||
ld de, SCREEN_WIDTH
|
||||
ld b, 3
|
||||
.row
|
||||
ld c, 3
|
||||
push hl
|
||||
.col
|
||||
ld [hli], a
|
||||
inc a
|
||||
dec c
|
||||
jr nz, .col
|
||||
add 9
|
||||
pop hl
|
||||
add hl, de
|
||||
dec b
|
||||
jr nz, .row
|
||||
ret
|
||||
; e1441
|
||||
|
||||
FillUnoccupiedPuzzleSpace: ; e1441
|
||||
ld a, 2 ; tilemap coords
|
||||
call GetUnownPuzzleCoordData
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
push hl
|
||||
ld a, 4 ; tile
|
||||
call GetUnownPuzzleCoordData
|
||||
ld a, [hl]
|
||||
pop hl
|
||||
ld de, SCREEN_WIDTH
|
||||
ld b, 3
|
||||
.row
|
||||
ld c, 3
|
||||
push hl
|
||||
.col
|
||||
ld [hli], a
|
||||
dec c
|
||||
jr nz, .col
|
||||
pop hl
|
||||
add hl, de
|
||||
dec b
|
||||
jr nz, .row
|
||||
ret
|
||||
; e1463
|
||||
|
||||
GetUnownPuzzleCoordData: ; e1463
|
||||
ld e, a
|
||||
ld d, 0
|
||||
ld hl, UnownPuzzleCoordData
|
||||
add hl, de
|
||||
ld a, [wUnownPuzzleCursorPosition]
|
||||
ld e, a
|
||||
rept 6
|
||||
add hl, de
|
||||
endr
|
||||
ret
|
||||
; e1475
|
||||
|
||||
UnownPuzzle_CheckCurrentTileOccupancy: ; e1475
|
||||
ld hl, wPuzzlePieces
|
||||
ld a, [wUnownPuzzleCursorPosition]
|
||||
ld e, a
|
||||
ld d, $0
|
||||
add hl, de
|
||||
ld a, [hl]
|
||||
ret
|
||||
; e1481
|
||||
|
||||
GetCurrentPuzzlePieceVTileCorner: ; e1481
|
||||
ld a, [wUnownPuzzleHeldPiece]
|
||||
ld hl, .Corners
|
||||
add l
|
||||
ld l, a
|
||||
ld a, $0
|
||||
adc h
|
||||
ld h, a
|
||||
ld a, [hl]
|
||||
ret
|
||||
; e148f
|
||||
|
||||
.Corners: ; e148f
|
||||
; 00, 01, 02
|
||||
; 0c, 0d, 0e
|
||||
; 18, 19, 1a
|
||||
db $e0 ; no piece selected
|
||||
db $00, $03, $06, $09
|
||||
db $24, $27, $2a, $2d
|
||||
db $48, $4b, $4e, $51
|
||||
db $6c, $6f, $72, $75
|
||||
; e14a0
|
||||
|
||||
CheckSolvedUnownPuzzle: ; e14a0
|
||||
ld hl, .SolvedPuzzleConfiguration
|
||||
ld de, wPuzzlePieces
|
||||
ld c, 6 * 6
|
||||
.loop
|
||||
ld a, [de]
|
||||
cp [hl]
|
||||
jr nz, .not_solved
|
||||
inc de
|
||||
inc hl
|
||||
dec c
|
||||
jr nz, .loop
|
||||
scf
|
||||
ret
|
||||
|
||||
.not_solved
|
||||
and a
|
||||
ret
|
||||
; e14b5
|
||||
|
||||
.SolvedPuzzleConfiguration: ; e14b5
|
||||
db $00, $00, $00, $00, $00, $00
|
||||
db $00, $01, $02, $03, $04, $00
|
||||
db $00, $05, $06, $07, $08, $00
|
||||
db $00, $09, $0a, $0b, $0c, $00
|
||||
db $00, $0d, $0e, $0f, $10, $00
|
||||
db $00, $00, $00, $00, $00, $00
|
||||
; e14d9
|
||||
|
||||
RedrawUnownPuzzlePieces: ; e14d9
|
||||
call GetCurrentPuzzlePieceVTileCorner
|
||||
ld [wd002], a
|
||||
xor a
|
||||
call GetUnownPuzzleCoordData ; get pixel positions
|
||||
ld a, [hli]
|
||||
ld b, [hl]
|
||||
ld c, a
|
||||
ld a, [wd002]
|
||||
cp $e0
|
||||
jr z, .NoPiece
|
||||
ld hl, .OAM_HoldingPiece
|
||||
jr .load
|
||||
|
||||
.NoPiece:
|
||||
ld hl, .OAM_NotHoldingPiece
|
||||
|
||||
.load
|
||||
ld de, wVirtualOAMSprite00
|
||||
.loop
|
||||
ld a, [hli]
|
||||
cp -1
|
||||
ret z
|
||||
add b
|
||||
ld [de], a ; y
|
||||
inc de
|
||||
ld a, [hli]
|
||||
add c
|
||||
ld [de], a ; x
|
||||
inc de
|
||||
ld a, [wd002]
|
||||
add [hl]
|
||||
ld [de], a ; tile id
|
||||
inc hl
|
||||
inc de
|
||||
ld a, [hli]
|
||||
ld [de], a ; attributes
|
||||
inc de
|
||||
jr .loop
|
||||
; e150f
|
||||
|
||||
.OAM_HoldingPiece: ; e150f
|
||||
dsprite -1, -4, -1, -4, $00, 0
|
||||
dsprite -1, -4, 0, -4, $01, 0
|
||||
dsprite -1, -4, 0, 4, $02, 0
|
||||
dsprite 0, -4, -1, -4, $0c, 0
|
||||
dsprite 0, -4, 0, -4, $0d, 0
|
||||
dsprite 0, -4, 0, 4, $0e, 0
|
||||
dsprite 0, 4, -1, -4, $18, 0
|
||||
dsprite 0, 4, 0, -4, $19, 0
|
||||
dsprite 0, 4, 0, 4, $1a, 0
|
||||
db -1
|
||||
|
||||
.OAM_NotHoldingPiece: ; e1534
|
||||
dsprite -1, -4, -1, -4, $00, 0
|
||||
dsprite -1, -4, 0, -4, $01, 0
|
||||
dsprite -1, -4, 0, 4, $00, 0 | X_FLIP
|
||||
dsprite 0, -4, -1, -4, $02, 0
|
||||
dsprite 0, -4, 0, -4, $03, 0
|
||||
dsprite 0, -4, 0, 4, $02, 0 | X_FLIP
|
||||
dsprite 0, 4, -1, -4, $00, 0 | Y_FLIP
|
||||
dsprite 0, 4, 0, -4, $01, 0 | Y_FLIP
|
||||
dsprite 0, 4, 0, 4, $00, 0 | X_FLIP | Y_FLIP
|
||||
db -1
|
||||
|
||||
UnownPuzzleCoordData: ; e1559
|
||||
|
||||
puzzle_coords: MACRO
|
||||
dbpixel \1, \2, \3, \4
|
||||
dwcoord \5, \6
|
||||
db \7, \8
|
||||
ENDM
|
||||
; OAM coords, tilemap coords, vacant tile, filler
|
||||
puzzle_coords 3, 3, 4, 4, 1, 0, PUZZLE_BORDER, 0
|
||||
puzzle_coords 6, 3, 4, 4, 4, 0, PUZZLE_BORDER, 0
|
||||
puzzle_coords 9, 3, 4, 4, 7, 0, PUZZLE_BORDER, 0
|
||||
puzzle_coords 12, 3, 4, 4, 10, 0, PUZZLE_BORDER, 0
|
||||
puzzle_coords 15, 3, 4, 4, 13, 0, PUZZLE_BORDER, 0
|
||||
puzzle_coords 18, 3, 4, 4, 16, 0, PUZZLE_BORDER, 0
|
||||
|
||||
puzzle_coords 3, 6, 4, 4, 1, 3, PUZZLE_BORDER, 0
|
||||
puzzle_coords 6, 6, 4, 4, 4, 3, PUZZLE_VOID, 0
|
||||
puzzle_coords 9, 6, 4, 4, 7, 3, PUZZLE_VOID, 0
|
||||
puzzle_coords 12, 6, 4, 4, 10, 3, PUZZLE_VOID, 0
|
||||
puzzle_coords 15, 6, 4, 4, 13, 3, PUZZLE_VOID, 0
|
||||
puzzle_coords 18, 6, 4, 4, 16, 3, PUZZLE_BORDER, 0
|
||||
|
||||
puzzle_coords 3, 9, 4, 4, 1, 6, PUZZLE_BORDER, 0
|
||||
puzzle_coords 6, 9, 4, 4, 4, 6, PUZZLE_VOID, 0
|
||||
puzzle_coords 9, 9, 4, 4, 7, 6, PUZZLE_VOID, 0
|
||||
puzzle_coords 12, 9, 4, 4, 10, 6, PUZZLE_VOID, 0
|
||||
puzzle_coords 15, 9, 4, 4, 13, 6, PUZZLE_VOID, 0
|
||||
puzzle_coords 18, 9, 4, 4, 16, 6, PUZZLE_BORDER, 0
|
||||
|
||||
puzzle_coords 3, 12, 4, 4, 1, 9, PUZZLE_BORDER, 0
|
||||
puzzle_coords 6, 12, 4, 4, 4, 9, PUZZLE_VOID, 0
|
||||
puzzle_coords 9, 12, 4, 4, 7, 9, PUZZLE_VOID, 0
|
||||
puzzle_coords 12, 12, 4, 4, 10, 9, PUZZLE_VOID, 0
|
||||
puzzle_coords 15, 12, 4, 4, 13, 9, PUZZLE_VOID, 0
|
||||
puzzle_coords 18, 12, 4, 4, 16, 9, PUZZLE_BORDER, 0
|
||||
|
||||
puzzle_coords 3, 15, 4, 4, 1, 12, PUZZLE_BORDER, 0
|
||||
puzzle_coords 6, 15, 4, 4, 4, 12, PUZZLE_VOID, 0
|
||||
puzzle_coords 9, 15, 4, 4, 7, 12, PUZZLE_VOID, 0
|
||||
puzzle_coords 12, 15, 4, 4, 10, 12, PUZZLE_VOID, 0
|
||||
puzzle_coords 15, 15, 4, 4, 13, 12, PUZZLE_VOID, 0
|
||||
puzzle_coords 18, 15, 4, 4, 16, 12, PUZZLE_BORDER, 0
|
||||
|
||||
puzzle_coords 3, 18, 4, 4, 1, 15, PUZZLE_BORDER, 0
|
||||
puzzle_coords 6, 18, 4, 4, 4, 15, PUZZLE_BORDER, 0
|
||||
puzzle_coords 9, 18, 4, 4, 7, 15, PUZZLE_BORDER, 0
|
||||
puzzle_coords 12, 18, 4, 4, 10, 15, PUZZLE_BORDER, 0
|
||||
puzzle_coords 15, 18, 4, 4, 13, 15, PUZZLE_BORDER, 0
|
||||
puzzle_coords 18, 18, 4, 4, 16, 15, PUZZLE_BORDER, 0
|
||||
|
||||
ConvertLoadedPuzzlePieces: ; e1631
|
||||
ld hl, vTiles2
|
||||
ld de, vTiles0
|
||||
ld b, 6
|
||||
.loop
|
||||
push bc
|
||||
push hl
|
||||
push hl
|
||||
call .EnlargePuzzlePieceTiles
|
||||
pop hl
|
||||
ld bc, 1 tiles / 2
|
||||
add hl, bc
|
||||
call .EnlargePuzzlePieceTiles
|
||||
pop hl
|
||||
ld bc, 6 tiles
|
||||
add hl, bc
|
||||
pop bc
|
||||
dec b
|
||||
jr nz, .loop
|
||||
call UnownPuzzle_AddPuzzlePieceBorders
|
||||
ret
|
||||
; e1654
|
||||
|
||||
.EnlargePuzzlePieceTiles: ; e1654
|
||||
; double size
|
||||
ld c, 6
|
||||
.loop1
|
||||
push bc
|
||||
push hl
|
||||
push hl
|
||||
ld c, 4
|
||||
.loop2
|
||||
push bc
|
||||
ld a, [hli]
|
||||
and $f0
|
||||
swap a
|
||||
call .GetEnlargedTile
|
||||
ld c, a
|
||||
ld a, [hli]
|
||||
and $f0
|
||||
swap a
|
||||
call .GetEnlargedTile
|
||||
ld b, a
|
||||
ld a, c
|
||||
ld [de], a
|
||||
inc de
|
||||
ld a, b
|
||||
ld [de], a
|
||||
inc de
|
||||
ld a, c
|
||||
ld [de], a
|
||||
inc de
|
||||
ld a, b
|
||||
ld [de], a
|
||||
inc de
|
||||
pop bc
|
||||
dec c
|
||||
jr nz, .loop2
|
||||
pop hl
|
||||
ld c, 4
|
||||
.loop3
|
||||
push bc
|
||||
ld a, [hli]
|
||||
and $f
|
||||
call .GetEnlargedTile
|
||||
ld c, a
|
||||
ld a, [hli]
|
||||
and $f
|
||||
call .GetEnlargedTile
|
||||
ld b, a
|
||||
ld a, c
|
||||
ld [de], a
|
||||
inc de
|
||||
ld a, b
|
||||
ld [de], a
|
||||
inc de
|
||||
ld a, c
|
||||
ld [de], a
|
||||
inc de
|
||||
ld a, b
|
||||
ld [de], a
|
||||
inc de
|
||||
pop bc
|
||||
dec c
|
||||
jr nz, .loop3
|
||||
pop hl
|
||||
ld bc, 1 tiles
|
||||
add hl, bc
|
||||
pop bc
|
||||
dec c
|
||||
jr nz, .loop1
|
||||
ret
|
||||
; e16aa
|
||||
|
||||
.GetEnlargedTile: ; e16aa
|
||||
push hl
|
||||
ld hl, .EnlargedTiles
|
||||
add l
|
||||
ld l, a
|
||||
ld a, 0
|
||||
adc h
|
||||
ld h, a
|
||||
ld a, [hl]
|
||||
pop hl
|
||||
ret
|
||||
; e16b7
|
||||
|
||||
.EnlargedTiles: ; e16b7
|
||||
|
||||
x = 0
|
||||
rept 16
|
||||
db ((x & %1000) * %11000) + ((x & %0100) * %1100) + ((x & %0010) * %110) + ((x & %0001) * %11)
|
||||
x = x + 1
|
||||
endr
|
||||
; e16c7
|
||||
|
||||
UnownPuzzle_AddPuzzlePieceBorders: ; e16c7
|
||||
ld hl, PuzzlePieceBorderData
|
||||
ld a, 8
|
||||
.loop
|
||||
push af
|
||||
push hl
|
||||
ld a, [hli]
|
||||
ld e, a
|
||||
ld a, [hli]
|
||||
ld d, a
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
call .LoadGFX
|
||||
pop hl
|
||||
rept 4
|
||||
inc hl
|
||||
endr
|
||||
pop af
|
||||
dec a
|
||||
jr nz, .loop
|
||||
ret
|
||||
; e16e2
|
||||
|
||||
.LoadGFX: ; e16e2
|
||||
lb bc, 4, 4
|
||||
.loop1
|
||||
push bc
|
||||
|
||||
.loop2
|
||||
push de
|
||||
push hl
|
||||
|
||||
ld b, 1 tiles
|
||||
.loop3
|
||||
ld a, [de]
|
||||
or [hl]
|
||||
ld [hli], a
|
||||
inc de
|
||||
dec b
|
||||
jr nz, .loop3
|
||||
|
||||
pop hl
|
||||
ld de, 3 tiles
|
||||
add hl, de
|
||||
pop de
|
||||
dec c
|
||||
jr nz, .loop2
|
||||
|
||||
ld bc, 24 tiles
|
||||
add hl, bc
|
||||
pop bc
|
||||
dec b
|
||||
jr nz, .loop1
|
||||
ret
|
||||
; e1703
|
||||
|
||||
PuzzlePieceBorderData: ; e1703
|
||||
dw .TileBordersGFX + 0 tiles, vTiles0 tile $00
|
||||
dw .TileBordersGFX + 1 tiles, vTiles0 tile $01
|
||||
dw .TileBordersGFX + 2 tiles, vTiles0 tile $02
|
||||
dw .TileBordersGFX + 3 tiles, vTiles0 tile $0c
|
||||
dw .TileBordersGFX + 4 tiles, vTiles0 tile $0e
|
||||
dw .TileBordersGFX + 5 tiles, vTiles0 tile $18
|
||||
dw .TileBordersGFX + 6 tiles, vTiles0 tile $19
|
||||
dw .TileBordersGFX + 7 tiles, vTiles0 tile $1a
|
||||
; e1723
|
||||
|
||||
.TileBordersGFX: ; e1723
|
||||
INCBIN "gfx/unown_puzzle/tile_borders.2bpp"
|
||||
|
||||
LoadUnownPuzzlePiecesGFX: ; e17a3
|
||||
ld a, [wScriptVar]
|
||||
maskbits NUM_UNOWN_PUZZLES
|
||||
ld e, a
|
||||
ld d, 0
|
||||
ld hl, .LZPointers
|
||||
add hl, de
|
||||
add hl, de
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
ld de, vTiles2
|
||||
call Decompress
|
||||
call ConvertLoadedPuzzlePieces
|
||||
ret
|
||||
; e17bd
|
||||
|
||||
.LZPointers: ; e17bd
|
||||
; entries correspond to UNOWNPUZZLE_* constants
|
||||
dw KabutoPuzzleLZ
|
||||
dw OmanytePuzzleLZ
|
||||
dw AerodactylPuzzleLZ
|
||||
dw HoOhPuzzleLZ
|
||||
; e17c5
|
||||
|
||||
UnownPuzzleCursorGFX: ; e17c5
|
||||
INCBIN "gfx/unown_puzzle/cursor.2bpp"
|
||||
|
||||
UnownPuzzleStartCancelLZ: ; e1805
|
||||
INCBIN "gfx/unown_puzzle/start_cancel.2bpp.lz"
|
||||
|
||||
HoOhPuzzleLZ: ; e18ab
|
||||
INCBIN "gfx/unown_puzzle/hooh.2bpp.lz"
|
||||
|
||||
AerodactylPuzzleLZ: ; e19fb
|
||||
INCBIN "gfx/unown_puzzle/aerodactyl.2bpp.lz"
|
||||
|
||||
KabutoPuzzleLZ: ; e1bab
|
||||
INCBIN "gfx/unown_puzzle/kabuto.2bpp.lz"
|
||||
|
||||
OmanytePuzzleLZ: ; e1c9b
|
||||
INCBIN "gfx/unown_puzzle/omanyte.2bpp.lz"
|
Reference in New Issue
Block a user