From 3496f326d29f17f09cb407f4be9afbedb57a65a1 Mon Sep 17 00:00:00 2001 From: shoofle Date: Sat, 17 May 2025 13:23:14 -0400 Subject: [PATCH] final version of the empress and the hermit, also printer on read --- 00TheFool.inc | 6 +- 04TheEmperor.inc | 173 ++++++------ 09TheHermit.inc | 402 ++++++++++++++++++++------- 12TheHangedMan.inc | 2 - 21TheWorld.inc | 5 +- Async.inc | 20 +- Printing.inc | 112 +------- RecreatingCards.inc | 3 +- ScreenCardBrowse.inc | 150 +++++++--- ScreenCardRead.inc | 122 +++++++- ScreenMainMenu.inc | 10 +- card_art/02thehighpriestess.aseprite | Bin 7110 -> 7113 bytes card_art/03theempress.aseprite | Bin 8705 -> 8705 bytes card_art/04theemperor.aseprite | Bin 7297 -> 7245 bytes card_art/09thehermit.aseprite | Bin 6287 -> 4893 bytes card_art/KeyArtTiles.asm | 226 +++++++-------- card_art/PrinterTilesRead.asm | 21 ++ card_art/SpriteTiles.asm | 98 ++++--- card_art/screendesigns.aseprite | Bin 5363 -> 4336 bytes card_art/tileset.asm | 37 +++ main.asm | 47 ++-- source.zip | Bin 465641 -> 476111 bytes 22 files changed, 915 insertions(+), 519 deletions(-) create mode 100644 card_art/PrinterTilesRead.asm create mode 100644 card_art/tileset.asm diff --git a/00TheFool.inc b/00TheFool.inc index 54bbea0..195f5a4 100644 --- a/00TheFool.inc +++ b/00TheFool.inc @@ -59,6 +59,9 @@ def Card_Offset_functions equ @-TheFool ; height and width in a & %11110000 and a & %00001111 ??? that's deranged call BuildMetaSprite + ret ; we're getting rid of everything but the doggie + + ld hl, .zero ld de, MY_OAM + 6*4 ; we've already written six sprites for the doggie, 4 bytes each ld bc, $100*26+41 @@ -120,7 +123,8 @@ def Card_Offset_functions equ @-TheFool ld [CVS+1], a call .dogDance ; and make the dog dance .doneWithTimer1 - + ret ; don't need anything else + ld hl, CVS+3 call IncrementTimer diff --git a/04TheEmperor.inc b/04TheEmperor.inc index 972e6ea..9956ca6 100644 --- a/04TheEmperor.inc +++ b/04TheEmperor.inc @@ -346,22 +346,23 @@ TheEmperor: .SpriteTilesEnd: EmperorMap: - db $1b, $1c, $1d, $1e, $1f, $20, $21, $62 - db $22, $23, $24, $25, $26, $63, $64, $65 - db $28, $29, $2a, $2b, $2c, $6d, $66, $4d - db $6e, $2d, $2e, $2f, $30, $31, $27, $6e - db $6f, $32, $74, $1a, $1a, $76, $33, $6f - db $70, $34, $6a, $75, $72, $35, $36, $70 - db $37, $38, $6b, $77, $73, $39, $3a, $69 - db $3b, $3c, $3d, $77, $77, $3e, $3f, $40 - db $41, $42, $43, $77, $44, $45, $46, $47 - db $6c, $48, $49, $4a, $4b, $77, $4c, $79 - db $6c, $4e, $77, $77, $77, $4f, $50, $79 - db $6c, $51, $52, $53, $54, $55, $56, $79 - db $67, $57, $58, $59, $5a, $5b, $5c, $68 - db $5d, $5e, $5f, $71, $71, $60, $61, $78 - db $71, $71, $71, $7b, $7c, $71, $71, $71 - db $71, $71, $71, $7a, $7d, $71, $71, $71 + db $1b, $1c, $1d, $1e, $1f, $20, $21, $5f + db $22, $23, $24, $25, $26, $60, $61, $62 + db $28, $29, $2a, $2b, $2c, $6a, $63, $4c + db $6b, $2d, $2e, $2f, $30, $31, $27, $6b + db $6c, $32, $71, $1a, $1a, $73, $33, $6c + db $6d, $34, $67, $72, $6f, $35, $36, $6d + db $37, $38, $68, $7b, $70, $39, $3a, $66 + db $3b, $3c, $3d, $74, $74, $3e, $3f, $40 + db $41, $42, $43, $7d, $44, $45, $46, $47 + db $69, $48, $74, $49, $4a, $74, $4b, $76 + db $69, $4d, $74, $74, $74, $74, $4e, $76 + db $69, $4f, $50, $74, $51, $52, $53, $76 + db $64, $54, $55, $56, $57, $58, $59, $65 + db $5a, $5b, $5c, $7c, $6e, $5d, $5e, $75 + db $6e, $6e, $6e, $78, $79, $6e, $6e, $6e + db $6e, $6e, $6e, $77, $7a, $6e, $6e, $6e + EmperorMapEnd: EmperorTiles: @@ -374,96 +375,96 @@ EmperorTiles: db $ff,$ff,$ff,$ff,$f8,$ff,$f0,$fc,$f0,$f8,$f0,$f8,$f0,$f9,$00,$ff db $ff,$ff,$ff,$ff,$00,$ff,$00,$10,$00,$10,$00,$d0,$00,$70,$00,$fe db $74,$fe,$fc,$fe,$dc,$ff,$fe,$ff,$54,$ff,$fc,$ff,$dc,$fe,$fc,$ff - db $00,$30,$00,$2f,$00,$10,$00,$1f,$07,$18,$0f,$10,$0f,$30,$0f,$70 - db $0e,$91,$0e,$b1,$1e,$21,$3c,$c3,$fc,$03,$fc,$03,$fc,$03,$fc,$03 - db $00,$ff,$00,$ff,$00,$f8,$00,$f0,$00,$e0,$18,$98,$08,$98,$00,$82 - db $0f,$f0,$07,$f8,$03,$fc,$03,$7c,$03,$3c,$c1,$de,$81,$ce,$01,$0e - db $f5,$0f,$f3,$0f,$f5,$0f,$f7,$0f,$f5,$0f,$f3,$0f,$f5,$0f,$f6,$0f + db $00,$30,$00,$2f,$00,$10,$00,$1f,$07,$18,$07,$18,$07,$38,$07,$78 + db $00,$9f,$0e,$b1,$1e,$21,$3c,$c3,$fc,$03,$fc,$03,$fc,$03,$fc,$03 + db $00,$ff,$00,$ff,$07,$f8,$0f,$f0,$1f,$e0,$7f,$b8,$d7,$90,$bd,$c2 + db $00,$ff,$07,$f8,$03,$fc,$83,$7c,$c3,$3c,$e1,$fe,$59,$4e,$e9,$1e + db $e5,$1f,$e3,$1f,$e5,$1f,$e7,$1f,$e5,$1f,$e3,$1f,$e5,$1f,$e6,$1f db $54,$ff,$ff,$ff,$55,$ff,$ff,$ff,$55,$ff,$bb,$ff,$55,$ff,$ff,$ff - db $0f,$f0,$ef,$f0,$4f,$f0,$ef,$f0,$4f,$f0,$ef,$f0,$4f,$f0,$ef,$f0 + db $07,$f8,$e7,$f8,$47,$f8,$e7,$f8,$47,$f8,$e7,$f8,$47,$f8,$e7,$f8 db $fc,$03,$fc,$03,$fc,$03,$fd,$03,$ff,$03,$ff,$02,$ff,$00,$ff,$00 - db $40,$83,$40,$80,$b0,$c7,$80,$ff,$80,$70,$80,$7f,$c0,$7f,$e0,$7f - db $10,$0f,$11,$0e,$39,$0e,$09,$fe,$0d,$76,$0e,$f3,$0e,$f1,$7f,$f0 - db $4f,$f0,$af,$f0,$4f,$f0,$ef,$f0,$4f,$f0,$af,$f1,$4f,$f3,$ef,$f7 - db $ff,$00,$ff,$01,$ff,$0f,$ff,$3f,$f1,$71,$c0,$c0,$80,$80,$00,$00 - db $fd,$3f,$e7,$e7,$20,$20,$1f,$1f,$00,$00,$80,$80,$f9,$f9,$0f,$0f - db $ff,$e0,$3f,$3e,$23,$23,$c3,$c3,$06,$06,$0c,$0c,$f8,$f8,$00,$00 - db $ff,$00,$ff,$00,$ff,$80,$ff,$f0,$3f,$3c,$0f,$0c,$07,$06,$03,$03 - db $4e,$f6,$ae,$f6,$4e,$f6,$ae,$f6,$4e,$f6,$ae,$f6,$4f,$f7,$af,$f7 - db $f5,$8f,$f2,$8f,$f5,$cf,$76,$4f,$75,$6f,$32,$2f,$35,$2f,$32,$2f - db $0f,$f2,$af,$f2,$4f,$f2,$af,$f2,$0f,$f2,$af,$f2,$4f,$f6,$ad,$fc - db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$01 - db $35,$2f,$32,$2f,$35,$2f,$32,$2f,$71,$6f,$72,$6f,$f4,$cf,$f2,$cf - db $00,$ff,$aa,$ff,$04,$ff,$aa,$ff,$00,$ff,$a9,$ff,$03,$ff,$a7,$fa - db $0d,$f8,$95,$f0,$35,$e0,$55,$c0,$d5,$80,$55,$00,$55,$00,$54,$01 - db $ff,$ff,$35,$f0,$35,$f0,$35,$f0,$35,$f0,$35,$f0,$35,$f8,$39,$7c - db $71,$6f,$72,$3f,$5c,$1b,$56,$07,$57,$03,$55,$01,$55,$00,$55,$00 - db $0f,$f3,$1e,$e2,$3e,$c6,$7c,$8c,$f8,$1f,$f8,$18,$f0,$30,$30,$f0 - db $f4,$e3,$3d,$3b,$05,$07,$03,$0b,$02,$f3,$02,$13,$3a,$3b,$2a,$3b - db $c1,$fc,$91,$fc,$11,$fc,$11,$fc,$15,$f8,$35,$f0,$35,$f0,$75,$e0 - db $39,$7e,$1e,$7f,$17,$7f,$12,$7f,$49,$3f,$4c,$3f,$46,$1f,$53,$0f - db $55,$00,$55,$00,$f5,$e1,$3d,$fd,$87,$ff,$41,$ff,$21,$ff,$19,$ff + db $be,$c3,$df,$e0,$c8,$f7,$80,$ff,$8f,$70,$80,$7f,$c0,$7f,$e0,$7f + db $e9,$1e,$d9,$3e,$99,$7e,$09,$fe,$8d,$76,$0f,$f2,$1f,$f0,$3f,$f0 + db $47,$f8,$a7,$f8,$47,$f8,$e7,$f8,$47,$f8,$a7,$f9,$47,$fb,$e7,$ff + db $ff,$00,$ff,$01,$ff,$0f,$ff,$3f,$f3,$f3,$c3,$c3,$81,$81,$00,$00 + db $fd,$3f,$e7,$e7,$20,$20,$1f,$1f,$00,$00,$80,$80,$ff,$ff,$ff,$ff + db $ff,$e0,$3f,$3e,$23,$23,$c3,$c3,$07,$07,$0e,$0e,$fc,$fc,$f8,$f8 + db $ff,$00,$ff,$00,$ff,$80,$ff,$e0,$7f,$70,$3f,$38,$1f,$1c,$0f,$0e + db $46,$fe,$a6,$fe,$46,$fe,$a6,$fe,$46,$fe,$a7,$ff,$47,$ff,$a7,$ff + db $e5,$1f,$e2,$9f,$e5,$df,$e6,$df,$65,$7f,$62,$7f,$65,$7f,$62,$7f + db $07,$fb,$a7,$fb,$47,$fb,$a7,$fb,$07,$ff,$a7,$fe,$47,$fe,$ad,$fc + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$c0,$c0,$ff,$ff + db $65,$7f,$62,$7f,$65,$7f,$62,$7f,$61,$7f,$62,$7f,$e4,$ff,$e2,$ff + db $00,$ff,$aa,$ff,$04,$ff,$aa,$ff,$00,$ff,$a9,$ff,$03,$ff,$a7,$fb + db $0d,$fc,$9d,$f8,$35,$f0,$75,$e0,$d5,$c0,$d5,$80,$54,$01,$f4,$e3 + db $ff,$ff,$7f,$ff,$31,$fc,$31,$fc,$31,$fc,$31,$fc,$31,$fc,$39,$7e + db $f1,$ff,$7a,$7f,$7c,$3f,$5e,$1f,$5f,$0f,$57,$03,$55,$00,$55,$00 + db $0f,$f3,$1e,$e2,$3e,$c6,$7c,$8c,$f8,$1f,$f0,$10,$10,$f0,$10,$f0 + db $f9,$ff,$1f,$1f,$07,$07,$03,$0b,$03,$f3,$02,$13,$3b,$3b,$2b,$3b + db $f9,$fe,$f9,$fe,$b1,$fe,$71,$fc,$71,$fc,$e5,$f8,$e5,$f0,$c5,$f0 + db $38,$7f,$3e,$7f,$3f,$7f,$1b,$7f,$4d,$3f,$46,$3f,$43,$1f,$51,$0f + db $55,$80,$15,$e0,$c1,$fd,$ff,$ff,$8f,$ff,$c1,$ff,$61,$ff,$b9,$ff db $fd,$fd,$83,$8b,$01,$09,$01,$09,$01,$09,$01,$09,$01,$09,$81,$89 - db $70,$bf,$70,$90,$70,$90,$78,$98,$78,$98,$7f,$8f,$7f,$80,$7f,$80 - db $26,$ff,$11,$1f,$13,$1f,$33,$3e,$37,$3e,$ed,$fc,$ed,$18,$fd,$18 - db $d5,$c0,$d5,$80,$55,$00,$55,$00,$55,$00,$55,$20,$45,$30,$41,$1c + db $10,$ff,$70,$90,$70,$90,$70,$90,$78,$98,$7f,$8f,$7f,$80,$7f,$80 + db $27,$ff,$17,$1f,$1f,$1f,$3e,$3f,$3c,$3f,$fd,$fe,$f9,$3e,$f9,$3c + db $d5,$e0,$95,$e0,$15,$c0,$55,$80,$55,$00,$40,$3f,$54,$01,$55,$00 db $55,$00,$55,$00,$55,$00,$55,$00,$55,$00,$55,$00,$54,$01,$50,$07 - db $51,$07,$54,$03,$54,$01,$54,$01,$55,$00,$00,$7f,$15,$c0,$55,$00 - db $8f,$ff,$8f,$ff,$cf,$ff,$6f,$fa,$37,$f8,$1f,$f8,$1f,$f8,$1f,$78 + db $50,$07,$54,$03,$54,$01,$54,$01,$55,$00,$00,$7f,$15,$c0,$55,$00 + db $df,$ff,$6f,$ff,$3f,$ff,$1f,$fa,$1f,$fc,$0f,$fc,$0f,$fc,$0f,$7e db $c3,$cb,$fe,$ff,$fe,$ff,$9e,$95,$9e,$91,$9e,$91,$9e,$91,$9e,$91 - db $f5,$10,$f5,$20,$f5,$20,$f5,$20,$f5,$20,$f5,$20,$f5,$20,$f5,$20 - db $54,$03,$55,$00,$55,$00,$55,$00,$55,$00,$55,$00,$55,$00,$55,$00 - db $15,$e0,$05,$f0,$45,$30,$40,$1f,$55,$00,$55,$00,$55,$00,$55,$00 - db $51,$04,$55,$08,$05,$78,$15,$c0,$55,$00,$55,$00,$55,$00,$55,$00 - db $4f,$38,$47,$1e,$57,$0e,$53,$06,$53,$06,$53,$06,$57,$06,$57,$04 + db $f1,$3c,$f1,$7c,$f5,$78,$e5,$78,$e5,$78,$e5,$78,$e5,$78,$e5,$f0 + db $45,$18,$51,$0c,$50,$07,$54,$01,$55,$00,$55,$00,$55,$00,$55,$00 + db $51,$0c,$45,$18,$05,$70,$15,$c0,$55,$00,$55,$00,$55,$00,$55,$00 + db $0f,$7e,$07,$7e,$07,$7e,$07,$7e,$07,$7e,$07,$7e,$07,$7e,$0f,$7e db $55,$ff,$ff,$ff,$55,$ff,$ff,$ff,$55,$ff,$ef,$ff,$55,$ff,$ff,$ff - db $f5,$20,$f5,$20,$f5,$60,$d5,$60,$d5,$60,$d5,$60,$d5,$60,$d5,$e0 - db $55,$00,$55,$00,$55,$00,$55,$00,$55,$00,$55,$00,$54,$03,$50,$07 - db $53,$0c,$5f,$08,$5f,$08,$57,$18,$5f,$10,$5f,$10,$7f,$30,$7f,$20 - db $d5,$e0,$c0,$ff,$80,$ff,$80,$ff,$9f,$f0,$90,$f0,$90,$f0,$90,$f0 - db $55,$00,$15,$c0,$15,$e0,$05,$f0,$c5,$38,$61,$1c,$31,$1e,$18,$1f - db $55,$00,$55,$00,$55,$00,$55,$00,$55,$00,$55,$00,$55,$00,$55,$80 - db $55,$00,$55,$00,$55,$00,$55,$00,$54,$01,$54,$03,$50,$0f,$40,$1f - db $50,$0f,$40,$3f,$0c,$73,$1f,$e0,$71,$c1,$61,$c1,$e1,$c1,$c3,$c3 - db $7f,$e0,$7f,$c0,$7f,$c0,$ff,$c0,$ff,$80,$ff,$00,$ff,$00,$ff,$00 - db $d0,$70,$f0,$70,$f8,$38,$d8,$38,$df,$3f,$d9,$39,$d0,$30,$e0,$e0 - db $30,$3f,$30,$3f,$20,$3f,$20,$3f,$70,$6f,$f8,$e7,$3e,$21,$3f,$3f - db $15,$c0,$05,$f0,$01,$fe,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$c0,$ff - db $40,$3f,$00,$7f,$00,$ff,$00,$ff,$01,$fe,$03,$fc,$0f,$f0,$7f,$ff - db $c3,$c2,$c3,$c2,$c7,$c6,$c7,$ce,$e7,$fe,$ff,$ff,$80,$80,$80,$80 - db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$80,$ff,$ff + db $e5,$f0,$c5,$f0,$c5,$f0,$c5,$f0,$c5,$f0,$c5,$f0,$c5,$f0,$c5,$f0 + db $0f,$7c,$0f,$7c,$0f,$7c,$1f,$7c,$1f,$78,$3f,$78,$3f,$78,$7f,$70 + db $c5,$f0,$c5,$f0,$c5,$f0,$f5,$f0,$ff,$ff,$ff,$ff,$df,$ff,$ff,$f0 + db $55,$00,$55,$00,$55,$00,$55,$00,$d5,$c0,$f5,$f0,$fd,$f8,$ff,$7e + db $55,$00,$55,$00,$55,$00,$55,$00,$55,$00,$55,$00,$57,$03,$57,$07 + db $55,$00,$57,$03,$5f,$0f,$7f,$3f,$7f,$7f,$ff,$f8,$f8,$e0,$e1,$c1 + db $ff,$e0,$ff,$e0,$ff,$c0,$ff,$c0,$ff,$80,$ff,$80,$ff,$80,$ff,$80 + db $f0,$f0,$f0,$70,$f8,$38,$d8,$3f,$df,$3f,$d0,$30,$30,$f0,$e0,$e0 + db $7f,$3f,$3f,$3f,$33,$3f,$39,$ff,$fc,$ff,$fe,$ff,$1f,$7f,$1f,$7f + db $55,$00,$d5,$80,$f5,$e0,$ff,$ff,$ff,$ff,$3f,$ff,$c0,$ff,$ff,$ff + db $5f,$1f,$7e,$3f,$fd,$ff,$f3,$ff,$c7,$ff,$9f,$ff,$7e,$ff,$ff,$ff + db $c1,$c1,$c1,$c1,$c1,$c1,$c1,$c1,$c3,$ff,$ff,$ff,$80,$c0,$80,$c0 + db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$80,$ff,$ff,$ff db $00,$ff,$00,$ff,$01,$ff,$03,$ff,$02,$fe,$06,$fe,$04,$fc,$07,$ff db $60,$e0,$c0,$c0,$80,$80,$00,$01,$00,$07,$07,$3f,$7c,$7f,$e0,$ff - db $10,$1f,$10,$1f,$10,$ff,$30,$ff,$e0,$ff,$80,$ff,$00,$ff,$00,$ff - db $80,$80,$80,$80,$80,$f0,$c0,$f0,$60,$f8,$30,$fc,$18,$ff,$0f,$ff + db $10,$7f,$10,$7f,$10,$ff,$30,$ff,$e0,$ff,$80,$ff,$00,$ff,$00,$ff + db $80,$c0,$80,$c0,$80,$e0,$c0,$f0,$60,$f8,$30,$fc,$18,$ff,$0f,$ff db $60,$7f,$20,$7f,$30,$3f,$10,$3f,$18,$1f,$08,$1f,$0c,$8f,$fc,$ff db $ff,$ff,$ff,$ff,$7f,$ff,$3f,$ff,$37,$7f,$3f,$7f,$3f,$7f,$3f,$7f - db $f0,$09,$f0,$0d,$f8,$04,$fc,$03,$ff,$00,$ff,$00,$ff,$00,$ff,$00 - db $00,$0c,$00,$fc,$00,$08,$00,$f8,$e0,$18,$f0,$08,$f0,$0c,$f0,$0e + db $00,$f9,$f0,$0d,$f8,$04,$fc,$03,$ff,$00,$ff,$00,$ff,$00,$ff,$00 + db $00,$0c,$00,$fc,$00,$08,$00,$f8,$e0,$18,$e0,$18,$e0,$1c,$e0,$1e db $37,$7f,$3f,$7f,$1d,$ff,$7f,$ff,$77,$ff,$3f,$ff,$1d,$7f,$3f,$ff - db $f4,$0f,$f7,$0f,$f5,$0f,$f7,$0f,$f5,$0f,$f6,$0f,$f5,$0f,$f7,$0f - db $7f,$80,$7f,$80,$7f,$80,$7f,$80,$7f,$80,$7f,$80,$7f,$80,$ff,$ff - db $9e,$91,$9e,$91,$9e,$91,$9e,$91,$9e,$91,$9e,$91,$9e,$91,$9f,$9f + db $e4,$1f,$e7,$1f,$e5,$1f,$e7,$1f,$e5,$1f,$e6,$1f,$e5,$1f,$e7,$1f + db $7f,$80,$7f,$80,$7f,$80,$7f,$80,$7f,$80,$7f,$80,$00,$ff,$ff,$ff + db $9e,$91,$9e,$91,$9e,$91,$9e,$91,$9e,$91,$9e,$91,$90,$9f,$9f,$9f db $01,$ff,$aa,$ff,$e4,$ff,$9a,$9f,$98,$9f,$fe,$ff,$94,$b7,$92,$93 - db $c0,$c0,$70,$30,$58,$18,$5c,$0e,$57,$07,$55,$07,$54,$07,$54,$07 - db $54,$0f,$45,$1e,$4d,$1e,$49,$3e,$19,$7e,$39,$7e,$21,$fe,$61,$fc + db $f0,$f0,$fc,$fc,$7f,$3f,$5f,$1f,$47,$1f,$47,$1f,$46,$1f,$46,$1f + db $46,$1f,$4e,$3f,$4c,$3f,$1c,$7f,$3c,$ff,$38,$ff,$78,$ff,$f8,$ff db $7f,$80,$7f,$80,$7f,$80,$7f,$80,$7f,$80,$7f,$80,$7f,$80,$7f,$80 db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00 db $55,$ff,$bb,$ff,$55,$ff,$ee,$ff,$55,$ff,$ba,$ff,$55,$ff,$ee,$ff db $55,$ff,$aa,$ff,$55,$ff,$aa,$ff,$55,$ff,$aa,$ff,$55,$ff,$aa,$ff db $11,$ff,$aa,$ff,$45,$ff,$aa,$ff,$11,$ff,$aa,$ff,$44,$ff,$aa,$ff db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff - db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$80,$f0,$f0 - db $5f,$0f,$54,$01,$54,$01,$55,$00,$55,$00,$55,$00,$55,$00,$55,$00 - db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$80 - db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$f8,$f8,$57,$07,$55,$00 - db $01,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$80,$80,$fc,$fc,$ff,$ff,$ff,$ff + db $0f,$ff,$00,$ff,$00,$ff,$40,$1f,$54,$03,$55,$00,$55,$00,$55,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$80,$c0,$c0 + db $00,$00,$00,$00,$80,$80,$f0,$f0,$ff,$ff,$ff,$ff,$1f,$ff,$00,$ff + db $07,$07,$03,$03,$01,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 db $55,$00,$55,$00,$55,$00,$55,$00,$55,$00,$55,$00,$55,$00,$55,$00 db $b0,$bf,$e0,$ff,$c0,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff db $9e,$91,$9e,$91,$9e,$91,$9e,$91,$9e,$91,$9e,$91,$9e,$91,$9e,$91 - db $00,$e6,$00,$e7,$00,$e7,$00,$e7,$00,$80,$00,$ff,$00,$ff,$00,$ff - db $00,$ff,$00,$ff,$00,$ff,$00,$80,$00,$e5,$00,$e4,$00,$e6,$00,$e6 - db $00,$ff,$00,$ff,$00,$ff,$00,$01,$00,$f7,$00,$e7,$00,$ef,$00,$ef - db $00,$4f,$00,$5f,$00,$1f,$00,$bf,$00,$07,$00,$ff,$00,$ff,$00,$ff + db $10,$e7,$10,$e7,$10,$e7,$10,$e7,$10,$e7,$10,$e7,$00,$80,$00,$ff + db $00,$ff,$00,$80,$10,$e4,$12,$e4,$10,$e6,$10,$e6,$11,$e6,$11,$e6 + db $00,$ff,$00,$00,$00,$f9,$02,$f9,$00,$fb,$00,$73,$04,$73,$04,$73 + db $00,$77,$00,$27,$88,$27,$88,$27,$20,$8f,$00,$8f,$00,$01,$00,$ff + db $00,$ff,$00,$ff,$54,$83,$55,$00,$55,$00,$55,$00,$55,$00,$55,$00 + db $ff,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $55,$00,$55,$00,$55,$00,$55,$00,$55,$00,$55,$00,$15,$c0,$45,$30 EmperorTilesEnd: diff --git a/09TheHermit.inc b/09TheHermit.inc index c568f70..abdb5f7 100644 --- a/09TheHermit.inc +++ b/09TheHermit.inc @@ -15,118 +15,318 @@ TheHermit: dw .fDraw dw .fPrintPrep -.fInit: ret -.fUpdate: ret +.fInit: + ld hl, CVS + ld a, 0 + ld [hl+], a ; CVS timer for swing + ld [hl+], a + ld [hl+], a ; CVS+2 frame of animation + + ld a, %10010000 + ld [rOBP0], a + ret +.fUpdate: + ld hl, CVS + call IncrementTimer + + ld a, [CVS+1] ; checking the high byte of the timer + cp a, $02 ; $10 = 1 second, $02 = 1/8 of a second + jp c, :+ ; if the timer is less than $0600, skip + + ; if the timer is greater or equal to $0600, reset it + ld a, 0 + ld [CVS], a + ld [CVS+1], a + + ld b, 4 + ld a, [CVS+2] + inc a + call ArrayClampLoopingB + ld [CVS+2], a + + ld a, [CVS+2] + ld b, a + add a, a ; *2 + add a, a ; *4 + add a, a ; *8 + add a, a ; *16 + add a, b ; *17 + add a, b ; *18 + ld b, 0 + ld c, a + ld hl, .top + add hl, bc ; now hl holds the correct frame of .top + ld de, MY_OAM + ld b, 3*8 + ld c, 4*8 + ld a, $63 + call BuildMetaSprite + + ld a, [CVS+2] + add a, a + ld b, 0 + ld c, a + ld hl, .middle + add hl, bc ; now hl holds the correct frame of .middle + ld de, MY_OAM + 4*18 + ld b, 6*8+4 + ld c, 2*8 + ld a, $12 + call BuildMetaSprite + + ld a, [CVS+2] + add a, a ; *2 + add a, a ; *4 + ld b, a ; *4 + add a, a ; *8 + add a, b ; *12 + ld b, 0 + ld c, a + ld hl, .bottom + add hl, bc + ld de, MY_OAM + 4*20 + ld b, 14*8 + ld c, 2*8 + ld a, $34 + call BuildMetaSprite +: + ret .fDraw: ret .fPrintPrep: ret + +.top ; 6 x 3 + db $00, $25, $26 + db $01, $00, $27 + db $02, $00, $28 + db $00, $29, $2a + db $00, $1b, $2b + db $00, $00, $18 + + db $00, $00, $00 + db $06, $00, $00 + db $05, $07, $00 + db $08, $00, $00 + db $00, $00, $00 + db $00, $00, $00 + + db $00, $25, $26 + db $0b, $00, $27 + db $0c, $00, $28 + db $00, $1a, $19 + db $00, $1b, $17 + db $00, $00, $18 + + db $00, $00, $00 + db $0f, $10, $00 + db $13, $14, $00 + db $16, $15, $00 + db $00, $00, $00 + db $00, $00, $00 + +.middle ; 1 x 2 + db $03, $04 + + db $09, $0a + + db $0d, $0e + + db $12, $11 + +.bottom ; metatiles are 3 x 4 + db $00, $00, $2e, $2f + db $1f, $20, $21, $2d + db $2c, $2d, $00, $00 + + db $00, $00, $00, $00 + db $31, $22, $32, $00 + db $00, $00, $00, $00 + + db $00, $00, $34, $00 + db $1c, $1d, $1e, $00 + db $33, $00, $00, $00 + + + db $00, $00, $00, $00 + db $23, $24, $30, $00 + db $00, $00, $00, $00 + + .SpriteTiles: + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $00,$00,$00,$00,$02,$00,$04,$00,$08,$00,$30,$00,$47,$00,$b8,$00 + db $c3,$00,$fc,$00,$ff,$00,$60,$00,$dc,$00,$3b,$00,$06,$00,$01,$00 + db $00,$00,$00,$00,$07,$00,$07,$00,$04,$00,$0c,$00,$09,$00,$09,$00 + db $00,$00,$00,$00,$60,$00,$f8,$00,$c8,$00,$c4,$00,$22,$00,$20,$00 + db $ff,$00,$f8,$00,$f8,$00,$e7,$00,$60,$00,$fc,$00,$3f,$00,$10,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$12,$00,$06,$00,$38,$00,$c0,$00 + db $e0,$00,$00,$00,$00,$00,$e0,$00,$00,$00,$00,$00,$c0,$00,$00,$00 + db $04,$00,$03,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $00,$00,$07,$00,$07,$00,$0b,$00,$15,$00,$0d,$00,$01,$00,$00,$00 + db $00,$00,$a0,$00,$e0,$00,$60,$00,$50,$00,$20,$00,$00,$00,$00,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$20,$00,$66,$00,$f8,$00,$c0,$00 + db $ff,$00,$e0,$00,$f0,$00,$ff,$00,$ff,$00,$00,$00,$00,$00,$00,$00 + db $00,$00,$00,$00,$08,$00,$0a,$00,$12,$00,$12,$00,$24,$00,$24,$00 + db $00,$00,$00,$00,$10,$00,$90,$00,$c8,$00,$c8,$00,$c8,$00,$c4,$00 + db $00,$00,$00,$00,$18,$00,$12,$00,$26,$00,$68,$00,$f1,$00,$6e,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$c0,$00,$80,$00,$00,$00 + db $a0,$00,$f0,$00,$f8,$00,$dc,$00,$be,$00,$30,$00,$10,$00,$00,$00 + db $07,$00,$07,$00,$0b,$00,$1a,$00,$32,$00,$2b,$00,$53,$00,$02,$00 + db $f0,$00,$e0,$00,$ff,$00,$40,$00,$ff,$00,$00,$00,$f0,$00,$3f,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$c0,$00,$00,$00,$00,$00,$00,$00 + db $c0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $0e,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $00,$00,$02,$00,$44,$00,$68,$00,$68,$00,$a8,$00,$a8,$00,$30,$00 + db $10,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$a0,$00,$90,$00,$80,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$00 + db $01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$00,$00,$00,$00 + db $00,$00,$00,$00,$00,$00,$00,$01,$01,$02,$07,$18,$0f,$30,$0f,$30 + db $03,$00,$0f,$00,$7f,$00,$ff,$00,$ff,$00,$fe,$01,$e0,$18,$80,$00 + db $f8,$04,$f8,$04,$f0,$0c,$c0,$38,$80,$40,$00,$00,$00,$00,$00,$00 + db $00,$00,$00,$00,$00,$00,$01,$00,$07,$00,$1f,$20,$1f,$60,$1f,$e0 + db $00,$03,$07,$08,$3f,$00,$ff,$00,$ff,$00,$fc,$03,$e0,$1e,$00,$f0 + db $fc,$03,$fc,$03,$e0,$1e,$80,$60,$00,$80,$00,$00,$00,$00,$00,$00 + db $00,$00,$00,$0f,$1e,$21,$7c,$83,$70,$8e,$00,$f8,$00,$c0,$00,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$01,$02,$01,$0e,$00,$0f + db $00,$00,$00,$03,$03,$3c,$3f,$c0,$7c,$83,$e0,$1e,$c0,$20,$00,$e0 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$07,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$c0,$00 + db $60,$00,$30,$00,$18,$00,$08,$00,$0c,$00,$04,$00,$04,$00,$04,$00 + db $04,$00,$04,$00,$04,$00,$04,$00,$04,$00,$00,$00,$00,$00,$00,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$01,$00,$01,$00,$01,$00,$01,$00 + db $00,$00,$00,$00,$80,$00,$80,$00,$40,$00,$28,$00,$15,$00,$05,$00 + db $01,$00,$03,$00,$46,$00,$6c,$00,$2c,$00,$ac,$00,$b8,$00,$38,$00 + db $00,$ff,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $00,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$ff + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80 + db $00,$00,$00,$f0,$00,$e0,$00,$80,$00,$80,$00,$00,$00,$00,$00,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$00,$03,$00,$03,$00,$00 + db $00,$00,$00,$c0,$00,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $00,$3f,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$7c .SpriteTilesEnd: ; original export script by gabriel reis, modified by shoofle .KeyArtTiles: db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $09,$09,$09,$09,$0f,$0f,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $99,$79,$09,$f9,$29,$db,$09,$f9,$a9,$59,$09,$f9,$29,$d9,$09,$f9 - db $88,$77,$00,$ff,$20,$df,$00,$ff,$8e,$77,$0f,$ff,$09,$e9,$19,$f9 - db $28,$57,$00,$ff,$22,$dd,$00,$ff,$b8,$7f,$e7,$ff,$80,$ff,$00,$ff - db $88,$77,$00,$ff,$20,$df,$00,$ff,$88,$77,$00,$ff,$00,$ff,$3f,$ff - db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$80,$c0,$c0 - db $41,$e1,$40,$c3,$46,$cf,$5c,$de,$70,$fc,$3f,$ff,$e7,$e7,$80,$80 - db $e8,$d7,$40,$ff,$62,$5d,$40,$7f,$ea,$f5,$e0,$ff,$ba,$b5,$d8,$df - db $8e,$8f,$c3,$c3,$41,$c1,$41,$47,$70,$7d,$58,$78,$78,$5c,$d8,$fe - db $a9,$59,$09,$f9,$89,$f9,$e9,$f9,$59,$d9,$49,$c9,$49,$c9,$49,$c9 - db $28,$d7,$00,$ff,$22,$dd,$00,$ff,$2a,$d5,$00,$ff,$2a,$d5,$00,$ff - db $2a,$d5,$40,$bf,$2a,$d5,$00,$ff,$2a,$d5,$44,$bb,$2a,$d5,$00,$ff - db $80,$80,$80,$a2,$80,$a2,$80,$a2,$80,$b2,$80,$b2,$80,$b2,$80,$b2 - db $2a,$d5,$44,$bb,$2a,$d5,$10,$ef,$2a,$d5,$44,$bb,$2a,$d5,$10,$ef - db $80,$a2,$80,$a2,$80,$a0,$8e,$8e,$f9,$ff,$44,$bb,$aa,$55,$10,$ef - db $a8,$df,$88,$fd,$a8,$df,$98,$ef,$a8,$df,$48,$bf,$ac,$5f,$14,$ef - db $8a,$75,$55,$aa,$aa,$55,$51,$ae,$aa,$55,$55,$aa,$aa,$55,$55,$aa - db $ad,$57,$55,$af,$af,$57,$53,$af,$aa,$57,$57,$ab,$ab,$55,$55,$aa - db $c9,$c9,$c9,$c9,$89,$89,$89,$89,$89,$89,$89,$89,$89,$89,$89,$89 - db $00,$1c,$c0,$f0,$40,$75,$40,$75,$40,$75,$60,$77,$20,$76,$20,$6f - db $a8,$57,$00,$ff,$22,$dd,$00,$ff,$2a,$d5,$00,$ff,$ca,$f5,$60,$ff - db $32,$fd,$10,$ff,$1a,$fd,$08,$ff,$0a,$fd,$0a,$6f,$12,$7f,$12,$d3 - db $12,$f3,$33,$f3,$21,$e1,$41,$e1,$40,$e0,$40,$60,$40,$40,$40,$40 - db $20,$2c,$20,$3c,$30,$38,$99,$d9,$4f,$ef,$40,$6e,$60,$60,$38,$78 - db $40,$40,$c0,$c0,$80,$c0,$80,$80,$00,$80,$00,$00,$00,$00,$00,$00 - db $00,$ff,$00,$fd,$00,$f1,$00,$80,$00,$b0,$00,$20,$00,$80,$00,$83 - db $2a,$d5,$44,$bb,$2a,$d5,$91,$ee,$ea,$d5,$45,$7a,$4a,$75,$71,$6e - db $2a,$35,$25,$3a,$2a,$35,$21,$3e,$2a,$35,$25,$3a,$2a,$35,$25,$3a - db $08,$18,$08,$18,$08,$18,$08,$f8,$e8,$f8,$e8,$f8,$f8,$f8,$f0,$f0 - db $00,$00,$00,$00,$00,$00,$00,$00,$01,$01,$03,$03,$06,$07,$18,$1e - db $2a,$35,$25,$3a,$6a,$75,$55,$6a,$ee,$d1,$15,$aa,$3b,$34,$35,$3a - db $70,$70,$71,$71,$77,$77,$7c,$7f,$30,$3c,$00,$00,$00,$00,$00,$00 - db $70,$78,$c0,$e0,$00,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $89,$89,$09,$09,$09,$09,$09,$09,$0d,$4d,$16,$df,$b0,$f1,$e0,$e0 - db $f0,$70,$50,$b0,$90,$70,$58,$bf,$ef,$1f,$58,$a9,$a8,$59,$58,$a9 - db $e9,$1b,$59,$a9,$b9,$49,$59,$a9,$e9,$19,$59,$a9,$b8,$48,$59,$a9 - db $2e,$31,$25,$3a,$2b,$34,$35,$3a,$1f,$10,$15,$1a,$13,$1c,$15,$1a - db $17,$18,$1d,$1a,$0b,$0c,$09,$0e,$0b,$0c,$09,$0e,$0b,$0c,$09,$0e - db $0b,$0c,$09,$0e,$0f,$0c,$05,$06,$07,$04,$05,$06,$05,$06,$07,$06 - db $03,$02,$02,$03,$02,$03,$02,$03,$02,$03,$02,$03,$02,$02,$03,$03 - db $fe,$01,$fc,$03,$fe,$01,$76,$89,$fe,$01,$7e,$81,$7e,$81,$7e,$81 - db $7e,$81,$7e,$81,$fe,$81,$be,$c1,$fe,$c1,$7e,$41,$5e,$61,$66,$79 - db $00,$00,$00,$00,$00,$00,$e7,$e7,$3c,$ff,$00,$00,$00,$00,$00,$00 - db $22,$2d,$20,$27,$e0,$f0,$c0,$e0,$00,$00,$00,$00,$00,$00,$00,$00 - db $00,$00,$00,$00,$00,$00,$e0,$e0,$7c,$7c,$07,$47,$71,$7f,$c0,$c3 - db $e6,$ee,$5c,$7c,$70,$70,$0c,$3c,$0f,$0f,$00,$00,$00,$00,$00,$00 - db $30,$70,$10,$30,$18,$78,$1f,$7f,$f0,$ff,$00,$00,$00,$00,$00,$00 - db $f9,$09,$f9,$09,$f9,$09,$79,$89,$f9,$09,$f9,$09,$f9,$09,$79,$89 - db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$fc,$03,$f8,$06 - db $ff,$00,$ff,$00,$ff,$00,$fc,$03,$f0,$0e,$c0,$38,$00,$c0,$00,$00 - db $f9,$09,$f9,$09,$99,$69,$09,$f9,$09,$09,$09,$09,$09,$09,$09,$09 - db $7f,$80,$7f,$80,$7e,$81,$78,$87,$40,$bc,$00,$e0,$00,$80,$00,$00 - db $e0,$18,$80,$60,$00,$c0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $fe,$01,$dc,$23,$fe,$01,$74,$8b,$fe,$01,$dc,$23,$fe,$01,$76,$89 + db $00,$ff,$00,$80,$21,$cc,$20,$cc,$20,$ce,$20,$ce,$20,$cf,$20,$cf + db $00,$ff,$00,$01,$10,$e7,$00,$e7,$a0,$4f,$00,$4f,$40,$1f,$80,$1f + db $20,$cf,$20,$cf,$20,$ce,$20,$ce,$20,$cc,$21,$cc,$00,$80,$00,$ff + db $20,$1f,$40,$1f,$00,$4f,$a0,$4f,$00,$e7,$10,$e7,$00,$01,$00,$ff + db $ff,$ff,$c0,$c0,$9f,$9f,$bf,$bf,$63,$7f,$03,$7f,$0b,$74,$28,$57 + db $ff,$ff,$0f,$0f,$c7,$c7,$f3,$f3,$f9,$f9,$fd,$fd,$fc,$0c,$fc,$ec + db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$f4,$fc,$fd,$fc,$fb,$f8,$f7,$f0 + db $ff,$ff,$ff,$ff,$ff,$ff,$e0,$e0,$01,$0f,$c1,$3f,$e1,$1d,$f1,$0f + db $2c,$50,$38,$47,$30,$00,$87,$8f,$5f,$df,$d8,$d8,$d8,$d8,$d9,$d8 + db $3c,$2c,$fe,$2e,$e7,$e7,$fb,$fb,$ff,$ff,$07,$07,$96,$07,$26,$07 + db $77,$ff,$7f,$7f,$1f,$3f,$9f,$9f,$c7,$cf,$e7,$e7,$f1,$f3,$f9,$f9 + db $77,$f3,$f7,$f7,$d6,$f7,$f6,$f7,$76,$f7,$f6,$f7,$f6,$f6,$f6,$f6 + db $f8,$87,$fc,$c3,$1e,$01,$ce,$c1,$6e,$61,$26,$41,$06,$01,$86,$01 + db $7e,$fe,$3e,$fe,$3f,$ff,$1f,$ff,$0f,$ff,$0f,$ff,$07,$ff,$07,$ff + db $5a,$d8,$d8,$d8,$d9,$d8,$da,$d8,$58,$d8,$d8,$d8,$d9,$d9,$d9,$d9 + db $46,$07,$86,$07,$07,$07,$07,$07,$06,$06,$86,$86,$e7,$e7,$e7,$e7 + db $7c,$fc,$3c,$fe,$1e,$ff,$9f,$7f,$ef,$1f,$37,$0f,$cd,$03,$32,$c1 + db $76,$f7,$76,$77,$16,$37,$06,$87,$c3,$f7,$e2,$ff,$c3,$ff,$f9,$ff + db $06,$e1,$c6,$31,$06,$f1,$ae,$f9,$5e,$f9,$a8,$ff,$51,$f3,$f3,$f7 + db $03,$ff,$03,$ff,$03,$ff,$19,$ff,$fd,$ff,$ff,$ff,$ff,$ff,$df,$ff + db $59,$d9,$d8,$df,$5f,$df,$df,$df,$40,$c0,$ff,$ff,$d5,$ff,$ff,$ff + db $e7,$e7,$07,$ff,$ff,$ff,$ff,$ff,$03,$03,$fb,$fb,$d3,$fb,$fb,$fb + db $0f,$f0,$83,$fc,$80,$ff,$80,$ff,$80,$ff,$83,$ff,$9f,$ff,$df,$ff + db $38,$fe,$88,$7f,$00,$ff,$00,$ff,$00,$ff,$80,$ff,$e0,$ff,$f1,$fe + db $fb,$ff,$7b,$ff,$11,$ff,$80,$7f,$40,$3f,$28,$17,$10,$07,$01,$04 + db $9f,$bf,$9b,$bf,$1f,$bf,$1f,$bf,$18,$bb,$98,$3f,$98,$3f,$98,$3f + db $e1,$e3,$81,$f9,$81,$fc,$00,$fc,$1c,$fe,$3c,$ff,$1e,$ff,$0e,$ff + db $f1,$fe,$71,$fe,$71,$fe,$71,$fe,$f1,$fe,$f1,$fe,$f1,$fe,$01,$0e + db $98,$3f,$98,$3f,$98,$3f,$98,$3f,$98,$3f,$98,$3f,$9b,$3f,$9b,$3f + db $0f,$ff,$07,$ff,$07,$ff,$07,$ff,$03,$ff,$03,$ff,$03,$ff,$01,$ff + db $15,$3f,$3f,$bf,$15,$bf,$1f,$9f,$95,$df,$9b,$df,$85,$cf,$cf,$ef + db $44,$eb,$a4,$eb,$44,$eb,$e4,$eb,$44,$eb,$a4,$eb,$44,$eb,$e4,$eb + db $fd,$03,$fd,$03,$f5,$0b,$f0,$0f,$f0,$0f,$f0,$0f,$70,$8f,$60,$9f + db $9b,$3f,$9b,$3f,$9b,$3f,$98,$3f,$98,$3f,$1f,$be,$1b,$bf,$1c,$bf + db $01,$ff,$09,$ff,$08,$ff,$04,$fb,$7e,$81,$fe,$1f,$f0,$ff,$e0,$ff + db $c5,$e7,$e3,$f7,$e1,$f3,$f3,$fb,$f1,$f9,$fd,$f9,$79,$fd,$78,$fd + db $41,$be,$41,$be,$01,$fe,$01,$fe,$01,$fe,$20,$ff,$20,$ff,$20,$ff + db $06,$ff,$e7,$1f,$07,$ff,$e7,$1f,$87,$7e,$e7,$1f,$84,$7f,$ff,$9f + db $01,$ff,$3f,$ff,$1f,$ff,$5f,$ff,$5f,$ff,$5f,$ff,$df,$ff,$df,$ff + db $f9,$fd,$f9,$fd,$f9,$fd,$f8,$fd,$f9,$f9,$f0,$f9,$e1,$fb,$c2,$e3 + db $44,$eb,$a4,$eb,$44,$eb,$a4,$eb,$44,$eb,$a4,$eb,$44,$eb,$a0,$ef + db $20,$ff,$20,$df,$20,$df,$2d,$de,$2d,$de,$2d,$de,$2d,$de,$2d,$de + db $ff,$ff,$9f,$3f,$9f,$3f,$9f,$3f,$9f,$3f,$9b,$3f,$9b,$3f,$99,$3f + db $9f,$ff,$bf,$ff,$be,$ff,$bc,$ff,$bf,$ff,$37,$ff,$77,$ff,$c7,$ff + db $c5,$e7,$8a,$ef,$05,$ef,$8e,$ef,$85,$ef,$8a,$ef,$85,$ef,$8a,$ef + db $40,$ef,$a0,$ef,$40,$ef,$a0,$ef,$40,$cf,$80,$df,$40,$df,$80,$df + db $2d,$de,$2d,$de,$2d,$de,$2d,$de,$2d,$de,$2d,$de,$2d,$de,$2d,$de + db $07,$ff,$0f,$ff,$0f,$ff,$0f,$ff,$0f,$ff,$0f,$ff,$0f,$ff,$0f,$ff + db $85,$e7,$82,$f7,$85,$b7,$82,$b7,$c1,$f7,$c2,$f7,$c5,$f7,$c2,$f7 + db $08,$df,$88,$df,$4c,$df,$8c,$df,$0c,$9f,$9c,$bf,$18,$bf,$9c,$bf + db $2d,$de,$21,$de,$20,$df,$26,$df,$26,$df,$26,$df,$26,$df,$06,$ff + db $c1,$f7,$e2,$f7,$e5,$f7,$e2,$f7,$e1,$f7,$e2,$f7,$e4,$f7,$e2,$f7 + db $1c,$bf,$9c,$bf,$1e,$bf,$9a,$bf,$1b,$bf,$9f,$bf,$1f,$bf,$9b,$bf + db $06,$ff,$26,$ff,$66,$ff,$66,$ff,$66,$ff,$66,$ff,$ee,$ff,$ee,$ff + db $e1,$f7,$e2,$f7,$e4,$f7,$e2,$f7,$e0,$f7,$e2,$f7,$e4,$f7,$f2,$f7 + db $00,$ff,$aa,$ff,$04,$ff,$aa,$ff,$01,$ff,$af,$ff,$0f,$ff,$ff,$ff + db $00,$ff,$af,$ff,$7f,$ff,$ff,$ff,$f8,$ff,$c0,$ff,$80,$ff,$00,$ff + db $1f,$bf,$df,$ff,$df,$ff,$df,$ff,$1f,$ff,$1f,$ff,$1f,$ff,$1f,$ff + db $ef,$ff,$ef,$ff,$ef,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff + db $f0,$f3,$f2,$fb,$f0,$fb,$f2,$fb,$f0,$f9,$f8,$fd,$f8,$fd,$f8,$fc + db $01,$ff,$3f,$ff,$7f,$ff,$fe,$ff,$fc,$ff,$c0,$ff,$80,$ff,$00,$ff + db $fc,$ff,$f0,$ff,$c0,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $00,$ff,$00,$ff,$01,$ff,$03,$ff,$03,$ff,$01,$ff,$00,$ff,$00,$ff + db $7f,$ff,$87,$ff,$0f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$00,$ff,$00,$ff + db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$00,$ff,$00,$ff + db $9f,$bf,$9f,$bf,$9f,$bf,$9f,$bf,$9f,$bf,$9f,$bf,$18,$bf,$18,$bf + db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff + db $f8,$fe,$f8,$fe,$f8,$fe,$fc,$fe,$fc,$fe,$fc,$fe,$fc,$ff,$fe,$ff + db $20,$00,$20,$00,$20,$00,$20,$00,$20,$00,$20,$00,$30,$00,$30,$00 + db $19,$bf,$1b,$bf,$1b,$bf,$1b,$bf,$19,$bf,$18,$bf,$00,$ff,$00,$ff + db $cf,$ff,$1f,$ff,$7f,$ff,$fe,$ff,$f8,$ff,$e0,$ff,$00,$ff,$00,$ff + db $ce,$ff,$80,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $01,$00,$03,$00,$47,$00,$6c,$03,$6d,$03,$ed,$03,$ed,$03,$fd,$03 + db $d7,$df,$cf,$cf,$ed,$ef,$ef,$ef,$e5,$ef,$ef,$ef,$e5,$e7,$f7,$e7 + db $ff,$ff,$ff,$ff,$ff,$ff,$1f,$1f,$c7,$c7,$f3,$f3,$f9,$f8,$fd,$fc + db $f7,$7f,$7f,$7f,$1f,$3f,$bf,$9f,$97,$9f,$df,$df,$dd,$df,$df,$df + db $53,$fb,$fb,$fb,$53,$fb,$fb,$fb,$53,$fb,$fb,$fb,$53,$fb,$f8,$f8 + db $ff,$ff,$ff,$ff,$ff,$ff,$7c,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$00,$00 + db $7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff + db $0f,$ff,$0f,$ff,$4f,$ff,$4f,$ff,$4f,$ff,$4f,$ff,$4f,$ff,$4f,$ff + db $4f,$ff,$4d,$ff,$4f,$ff,$5f,$ff,$5f,$ff,$5f,$ff,$7f,$ff,$7f,$ff + db $18,$bf,$18,$bf,$18,$bf,$18,$bf,$18,$bf,$18,$bf,$18,$bf,$18,$bf + db $45,$ea,$a5,$ea,$44,$eb,$e4,$eb,$44,$eb,$a4,$eb,$44,$eb,$e4,$eb db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff - db $7f,$80,$7f,$80,$7f,$80,$7f,$80,$7f,$80,$7f,$80,$7f,$80,$7f,$80 - db $08,$f7,$00,$ff,$20,$df,$00,$ff,$08,$f7,$00,$ff,$22,$dd,$00,$ff - db $88,$77,$00,$ff,$20,$df,$00,$ff,$88,$77,$00,$ff,$22,$dd,$00,$ff - db $a8,$57,$00,$ff,$22,$dd,$00,$ff,$aa,$55,$00,$ff,$2a,$d5,$00,$ff - db $aa,$55,$40,$bf,$aa,$55,$00,$ff,$aa,$55,$44,$bb,$aa,$55,$00,$ff - db $aa,$55,$44,$bb,$aa,$55,$10,$ef,$aa,$55,$44,$bb,$aa,$55,$10,$ef - db $2a,$d5,$55,$aa,$2a,$d5,$51,$ae,$2a,$d5,$55,$aa,$2a,$d5,$55,$aa - db $aa,$55,$54,$ab,$aa,$55,$50,$af,$aa,$55,$54,$ab,$aa,$55,$54,$ab - db $6a,$95,$55,$aa,$2a,$d5,$55,$aa,$6e,$91,$55,$aa,$2a,$d5,$55,$aa - db $ea,$15,$55,$aa,$aa,$55,$55,$aa,$ee,$11,$55,$aa,$ab,$54,$55,$aa - db $ea,$15,$54,$ab,$aa,$55,$54,$ab,$ee,$11,$54,$ab,$aa,$55,$54,$ab - db $6e,$91,$55,$aa,$3b,$c4,$55,$aa,$6f,$90,$55,$aa,$3b,$c4,$55,$aa - db $ee,$11,$55,$aa,$bb,$44,$55,$aa,$ef,$10,$55,$aa,$bb,$44,$55,$aa - db $ee,$11,$54,$ab,$ba,$45,$54,$ab,$ee,$11,$54,$ab,$ba,$45,$54,$ab - db $7f,$80,$55,$aa,$7b,$84,$55,$aa,$7f,$80,$55,$aa,$7f,$80,$55,$aa - db $ff,$00,$55,$aa,$fb,$04,$55,$aa,$ff,$00,$55,$aa,$ff,$00,$55,$aa - db $ff,$00,$55,$aa,$ff,$00,$55,$aa,$ff,$00,$55,$aa,$ff,$00,$55,$aa - db $f9,$09,$59,$a9,$f9,$09,$59,$a9,$f9,$09,$59,$a9,$f9,$09,$59,$a9 - db $fe,$01,$54,$ab,$fe,$01,$54,$ab,$fe,$01,$54,$ab,$fe,$01,$54,$ab - db $7f,$80,$5d,$a2,$7f,$80,$75,$8a,$7f,$80,$5d,$a2,$7f,$80,$77,$88 - db $ff,$00,$dd,$22,$ff,$00,$75,$8a,$ff,$00,$dd,$22,$ff,$00,$77,$88 - db $f9,$09,$d9,$29,$f9,$09,$79,$89,$f9,$09,$d9,$29,$f9,$09,$79,$89 - db $7f,$80,$7d,$82,$7f,$80,$77,$88,$7f,$80,$7f,$80,$7f,$80,$7f,$80 - db $ff,$00,$fd,$02,$ff,$00,$77,$88,$ff,$00,$ff,$00,$ff,$00,$7f,$80 - db $01,$01,$01,$01,$01,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $00,$00,$7f,$7f,$19,$19,$18,$18,$18,$18,$18,$18,$18,$18,$18,$18 - db $00,$00,$fe,$fe,$8c,$8c,$88,$88,$d8,$d8,$50,$50,$70,$70,$20,$20 - db $18,$18,$18,$18,$18,$18,$18,$18,$19,$19,$19,$19,$7f,$7f,$00,$00 - db $70,$70,$70,$70,$d8,$d8,$88,$88,$8c,$8c,$04,$04,$fe,$fe,$00,$00 + db $55,$ff,$ff,$ff,$5d,$ff,$ff,$ff,$55,$7f,$7f,$7f,$55,$7f,$7f,$7f + db $1a,$bf,$1a,$bf,$1a,$bf,$1a,$bf,$1a,$bf,$1a,$bf,$1a,$bf,$9a,$bf + db $18,$bf,$18,$bf,$18,$bf,$18,$bf,$18,$bf,$18,$bf,$1a,$bf,$1a,$bf + db $9a,$bf,$9a,$bf,$9b,$bf,$9f,$bf,$9f,$bf,$9f,$bf,$9f,$bf,$9f,$bf + db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$f7,$ff,$ff,$ff,$ff,$ff,$ff,$ff + db $77,$ff,$ff,$ff,$df,$ff,$ff,$ff,$77,$ff,$ff,$ff,$fd,$ff,$ff,$ff + db $77,$ff,$ff,$ff,$dd,$ff,$ff,$ff,$75,$ff,$ff,$ff,$dd,$ff,$ff,$ff + db $55,$ff,$ff,$ff,$55,$ff,$ff,$ff,$55,$ff,$fb,$ff,$55,$ff,$ff,$ff + db $55,$ff,$bb,$ff,$55,$ff,$ef,$ff,$55,$ff,$bb,$ff,$55,$ff,$ee,$ff + db $55,$ff,$ab,$ff,$55,$ff,$ee,$ff,$55,$ff,$ba,$ff,$55,$ff,$ee,$ff + db $55,$ff,$aa,$ff,$55,$ff,$ae,$ff,$55,$ff,$aa,$ff,$55,$ff,$aa,$ff + db $55,$ff,$aa,$ff,$55,$ff,$aa,$ff,$51,$ff,$aa,$ff,$55,$ff,$aa,$ff + db $11,$ff,$aa,$ff,$45,$ff,$aa,$ff,$11,$ff,$aa,$ff,$54,$ff,$aa,$ff + db $11,$ff,$aa,$ff,$44,$ff,$aa,$ff,$10,$ff,$aa,$ff,$44,$ff,$aa,$ff + db $00,$ff,$aa,$ff,$04,$ff,$aa,$ff,$00,$ff,$aa,$ff,$00,$ff,$aa,$ff .KeyArtTilesEnd: .BackgroundCopy: ; tiles start at 26 - db $51, $51, $51, $51, $51, $51, $51, $51 - db $53, $1f, $54, $1d, $54, $54, $54, $54 - db $25, $21, $22, $1c, $1e, $2f, $55, $55 - db $26, $27, $23, $24, $34, $30, $56, $56 - db $28, $29, $2a, $2d, $2e, $31, $35, $57 - db $58, $2b, $2c, $3c, $32, $33, $36, $59 - db $5a, $5b, $5b, $3d, $37, $38, $39, $5c - db $5d, $5e, $5e, $3e, $3a, $3b, $3f, $5f - db $60, $61, $62, $63, $1a, $1a, $40, $64 - db $65, $66, $66, $67, $1a, $1a, $41, $50 - db $68, $69, $69, $4a, $1a, $1a, $42, $43 - db $52, $4b, $4c, $4d, $47, $20, $6a, $44 - db $4e, $4f, $1a, $1b, $48, $49, $45, $46 - db $1a, $1a, $1a, $1a, $1a, $1a, $1a, $1a - db $1a, $1a, $1a, $6b, $6c, $1a, $1a, $1a - db $1a, $1a, $1a, $6d, $6e, $1a, $1a, $1a + db $1f, $20, $73, $21, $22, $65, $73, $73 + db $23, $24, $25, $26, $27, $28, $66, $74 + db $29, $2a, $2b, $2c, $2d, $2e, $64, $75 + db $2f, $30, $31, $32, $33, $34, $35, $6f + db $76, $67, $68, $36, $63, $37, $38, $39 + db $77, $77, $77, $6d, $3b, $3c, $3d, $3e + db $78, $78, $78, $3a, $3f, $40, $41, $42 + db $79, $79, $79, $43, $44, $45, $46, $47 + db $7a, $7a, $7a, $48, $49, $6c, $4a, $4b + db $7b, $7b, $7b, $4c, $4d, $71, $6a, $4e + db $7c, $7c, $7c, $4f, $50, $70, $6b, $51 + db $7d, $52, $53, $54, $55, $72, $69, $56 + db $57, $58, $59, $5a, $5b, $5c, $5d, $5e + db $6e, $6e, $6e, $6e, $6e, $60, $61, $62 + db $6e, $6e, $6e, $1b, $1c, $6e, $6e, $6e + db $6e, $6e, $6e, $1d, $1e, $6e, $6e, $6e .BackgroundCopyEnd: diff --git a/12TheHangedMan.inc b/12TheHangedMan.inc index ebc6784..f8664e8 100644 --- a/12TheHangedMan.inc +++ b/12TheHangedMan.inc @@ -20,8 +20,6 @@ TheHangedMan: ld a, 0 ld [hl+], a ; CVS timer for swing ld [hl+], a - ; drawing 12 characters total - ; top sprites ld [hl+], a ; CVS+2 frame of animation ret diff --git a/21TheWorld.inc b/21TheWorld.inc index 26ef495..4da2dca 100644 --- a/21TheWorld.inc +++ b/21TheWorld.inc @@ -29,10 +29,7 @@ TheWorld: ld [hl+], a ; CVS timer ld [hl+], a ; ld [hl+], a ; CVS + 2 frame index for rotating earth - ld [hl+], a ; CVS + 3 flag for whether we've run out of OAM - - - + ld hl, MY_OAM .priorityLoop inc hl diff --git a/Async.inc b/Async.inc index f605dcd..f4f50cc 100644 --- a/Async.inc +++ b/Async.inc @@ -20,6 +20,20 @@ def ASYNC_THREAD_CALL equ ASYNC_STACK_TOP - 2 - 2 def SAFE_ASYNC_START EQU 145 def SAFE_ASYNC_END EQU 0 +Async_Kill: + ld hl, ASYNC_STACK_TOP ; - 2 ; commenting this out so we see if this ever produces an issues + ld a, l + ld [vAsyncThreadSP], a + ld a, h + ld [vAsyncThreadSP+1], a + + ; unset next call + ld hl, rIE + res 1, [hl] ; disable stat interrupt + ld hl, rIF + res 1, [hl] ; clear the interrupt + + ret Async_Spawn_HL: di ld a, l @@ -65,6 +79,8 @@ Async_Spawn: ld sp, hl + ; are these next two steps necessary? those values should always be prepopulated + ; push early return onto thread stack ld l, LOW(Async_EarlyReturn) ld h, HIGH(Async_EarlyReturn) @@ -242,8 +258,10 @@ Async_ExitThread: reti - Async_EarlyReturn: + rept 100 + nop + endr di ; don't care about current registers bc we're done executing. diff --git a/Printing.inc b/Printing.inc index e346a86..56afbef 100644 --- a/Printing.inc +++ b/Printing.inc @@ -1,6 +1,7 @@ PUSHS "Printer Variables", WRAM0[PRINTER_VARS_START] vTooBusyForPrinter: db ; one if we're too busy to use the async thread for printer stuff vPrinterState: db ; options: NONE, READY, ERROR, FULL, PRINTING +vPreviousPrinterState: db def PS_NONE equ 0 def PS_READY equ 1 def PS_ERROR equ 2 @@ -13,6 +14,7 @@ vBuildingByte: dw vPrinterIsReady: db vPrinterRow: db +print vPrinterRow vPrinterStart: db POPS @@ -23,78 +25,6 @@ CheckForPrinter: call SendPacket ret -UpdatePrintUI: - ld a, [vPrinterState] - - cp a, PS_NONE - ld hl, BanishPrinterUI - jp z, Async_Spawn_HL - - cp a, PS_READY - ld hl, SummonPrinterUI - jp z, Async_Spawn_HL - - cp a, PS_ERROR - ld hl, ShowErrorUI - jp z, Async_Spawn_HL - - cp a, PS_PRINTING - ld hl, ShowPrinting - jp z, Async_Spawn_HL - - cp a, PS_FULL - ld hl, ShowFull - jp z, Async_Spawn_HL - - ld hl, BanishPrinterUI - jp Async_Spawn_HL - -UpdatePrintUIImmediate: - ld a, [vPrinterReturnValue] - cp a, $81 - call z, SummonPrinterUI - - ld a, [vPrinterReturnValue] - cp a, $81 - call nz, BanishPrinterUI - ret - -BanishPrinterUI: - ld hl, PrinterNotDetected - ld de, _SCRN0 + 32*1 + 17 - ld b, 2 - ld c, 2 - call CopyTilesToMap - ret -ShowErrorUI: - ld hl, PrinterError - ld de, _SCRN0 + 32*1 + 17 - ld b, 2 - ld c, 2 - call CopyTilesToMap - ret -ShowPrinting: - ld hl, PrinterPrinting - ld de, _SCRN0 + 32*1 + 17 - ld b, 2 - ld c, 2 - call CopyTilesToMap - ret -ShowFull: - ld hl, PrinterFull - ld de, _SCRN0 + 32*1 + 17 - ld b, 2 - ld c, 2 - call CopyTilesToMap - ret -SummonPrinterUI: - ld hl, PrinterAvailable - ld de, _SCRN0 + 32*1 + 17 - ld b, 2 - ld c, 2 - call CopyTilesToMap - ret - SendPacket: ; a should be the command byte @@ -203,6 +133,9 @@ PrepNetwork: ld a, 0 ld [vPrinterStart], a + ld a, PS_NONE + ld [vPreviousPrinterState], a + ld hl, rSC set 0, [hl] ret @@ -326,7 +259,6 @@ PlanTopRow: ld bc, 10 ld de, BUFFER_ONE call CopyRange ; copy tiles for the top row to the first buffer - ld b, b ret PlanRowA: ; a should be which row of a tile map we should draw push af @@ -368,7 +300,6 @@ PlanBottomRow: ld bc, 10 ld de, BUFFER_ONE call CopyRange ; copy tiles for the top row to the first buffer - ld b, b ret BuildRow: @@ -397,7 +328,6 @@ BuildRow: pop bc dec c jp nz, .loop - ld b, b pop af ret DoubleTheBuffer: @@ -431,7 +361,6 @@ DoubleTheBuffer: dec a jp nz, .bottomHalfLoop - ld b, b ret PrintTheBuffer: call ClearBuffer @@ -511,33 +440,4 @@ ClearBuffer: call SendPacket ret - -PrinterTiles: - db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $00,$1c,$00,$0e,$38,$3f,$64,$7f,$7f,$7f,$7f,$40,$7f,$40,$3f,$3f - db $00,$00,$00,$00,$00,$00,$06,$b6,$ff,$ff,$ff,$11,$ff,$11,$fe,$fe - db $00,$00,$00,$80,$0e,$8e,$12,$9e,$24,$bc,$38,$b8,$00,$80,$00,$00 - db $00,$00,$00,$00,$5a,$5a,$92,$92,$5a,$5a,$52,$52,$9b,$9b,$00,$00 - db $00,$00,$18,$98,$18,$98,$18,$98,$18,$98,$00,$80,$18,$98,$00,$00 - db $00,$00,$00,$00,$d8,$d8,$94,$94,$d8,$d8,$94,$94,$d2,$d2,$00,$00 - db $00,$00,$00,$80,$19,$99,$15,$95,$19,$99,$11,$91,$11,$91,$00,$00 - db $00,$00,$00,$00,$92,$92,$5a,$5a,$96,$96,$52,$52,$52,$52,$00,$00 - db $00,$00,$00,$80,$1d,$9d,$11,$91,$19,$99,$11,$91,$11,$91,$00,$00 - db $00,$00,$00,$00,$52,$52,$52,$52,$52,$52,$52,$52,$db,$db,$00,$00 -PrinterTiles.End: ; $22 - -PrinterNotDetected: - db $00, $00 - db $13, $00 -PrinterAvailable: - db $f1, $f2 - db $f3, $f4 -PrinterPrinting: - db $f1, $f2 - db $f7, $f8 -PrinterError: - db $f1, $f2 - db $f5, $f6 -PrinterFull: - db $f1, $f2 - db $f9, $fa + \ No newline at end of file diff --git a/RecreatingCards.inc b/RecreatingCards.inc index b0e62a8..3c00dc7 100644 --- a/RecreatingCards.inc +++ b/RecreatingCards.inc @@ -42,8 +42,9 @@ BuildRelevantSpritesList: jr z, .doneWithOAM ld a, c add a, 4 + ld c, a cp a, $A0 - jr z, .doneWithOAM + jr nc, .doneWithOAM jr .loop .doneWithOAM pop af diff --git a/ScreenCardBrowse.inc b/ScreenCardBrowse.inc index c2b04eb..48b04d2 100644 --- a/ScreenCardBrowse.inc +++ b/ScreenCardBrowse.inc @@ -26,19 +26,21 @@ CardBrowseSetup: ld hl, .asyncTask call Async_Spawn_HL + call CheckForPrinter ret .asyncTask: - ld hl, PrinterTiles - ld de, _VRAM + $1000 - $10*16 - ld bc, PrinterTiles.End - PrinterTiles - call CopyRange - ld hl, CardBrowse.UITilemap ; origin ld de, _SCRN0 ; destination ld b, 18 ; height ld c, 20 ; width call CopyTilesToMap + + ld hl, CardBrowse.PrinterTiles + ld de, _VRAM + $1000 - $10*16 + ld bc, CardBrowse.PrinterTilesEnd - CardBrowse.PrinterTiles + call CopyRange + ld a, 0 ld [vBlocked], a @@ -64,7 +66,7 @@ CardBrowseUpdate: .updatePrintUI ld a, [vPrinterStart] cp a, 0 - call z, UpdatePrintUI + call z, CardBrowse.UpdatePrintUI .runPrintJob ld a, [vPrinterStart] cp a, 0 @@ -81,7 +83,8 @@ CardBrowseUpdate: call KickOffPrintJob ret - .donePrinter + .donePrinter + ld hl, rMYBTNP bit 5, [hl] jp z, .doneWithB @@ -152,7 +155,7 @@ RefreshCardTask: call DrawDeckMinimap call LoadCardData - call UpdatePrintUIImmediate + call CardBrowse.UpdatePrintUIImmediate ld a, 0 ld [vTooBusyForPrinter], a @@ -169,44 +172,115 @@ DrawDeckMinimap: ld b, $ff ; start at -1 lol ld hl, _SCRN0 + 32 + 11 -.loop - inc b - ld a, b - cp a, 5 - jp nz, .noNewLine - ld [hl], $13 - ld hl, _SCRN0 + 32*2 + 11 -.noNewLine - ld a, b - cp a, c - jp nc, .doneDrawing - ld a, d - srl a - cp a, b - jp z, .drawSelectedCard -.drawUnselectedCards - ld [hl], $12 - inc hl - jp .loop -.drawSelectedCard - bit 0, d - jp nz, .drawSelectedSecond - ld [hl], $14 - inc hl - jp .loop -.drawSelectedSecond - ld [hl], $15 - inc hl - jp .loop -.doneDrawing + .loop + inc b + ld a, b + cp a, 5 + jp nz, .noNewLine + ld [hl], $13 + ld hl, _SCRN0 + 32*2 + 11 + .noNewLine + ld a, b + cp a, c + jp nc, .doneDrawing + ld a, d + srl a + cp a, b + jp z, .drawSelectedCard + .drawUnselectedCards + ld [hl], $12 + inc hl + jp .loop + .drawSelectedCard + bit 0, d + jp nz, .drawSelectedSecond + ld [hl], $14 + inc hl + jp .loop + .drawSelectedSecond + ld [hl], $15 + inc hl + jp .loop + .doneDrawing ld [hl], $13 ret +CardBrowse.UpdatePrintUI: + ld a, [vPrinterState] + ld hl, vPreviousPrinterState + cp a, [hl] + ret z ; if the printer state has not changed, return. + ; otherwise updae previous printer state and continue to change ui + ld [hl], a + ld hl, CardBrowse.UpdatePrintUIImmediate + call Async_Spawn_HL + ret + +CardBrowse.UpdatePrintUIImmediate: + ld a, [vPrinterState] + + ld hl, CardBrowse.PrinterNotDetected + cp a, PS_NONE + jp z, .setIt + + ld hl, CardBrowse.PrinterAvailable + cp a, PS_READY + jp z, .setIt + + ld hl, CardBrowse.PrinterFull + cp a, PS_FULL + jp z, .setIt + + ld hl, CardBrowse.PrinterPrinting + cp a, PS_PRINTING + jp z, .setIt + + ld hl, CardBrowse.PrinterError + cp a, PS_ERROR + jp z, .setIt + + .setIt + ld de, _SCRN0 + 32*1 + 17 + ld b, 2 + ld c, 2 + call CopyTilesToMap + ret + +CardBrowse.PrinterNotDetected: + db $00, $00 + db $13, $00 +CardBrowse.PrinterAvailable: + db $f1, $f2 + db $f3, $f4 +CardBrowse.PrinterFull: + db $f1, $f2 + db $f9, $fa +CardBrowse.PrinterPrinting: + db $f1, $f2 + db $f7, $f8 +CardBrowse.PrinterError: + db $f1, $f2 + db $f5, $f6 + CardBrowseTeardown: ret +CardBrowse.PrinterTiles: + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $00,$1c,$00,$0e,$38,$3f,$64,$7f,$7f,$7f,$7f,$40,$7f,$40,$3f,$3f + db $00,$00,$00,$00,$00,$00,$06,$b6,$ff,$ff,$ff,$11,$ff,$11,$fe,$fe + db $00,$00,$00,$80,$0e,$8e,$12,$9e,$24,$bc,$38,$b8,$00,$80,$00,$00 + db $00,$00,$00,$00,$5a,$5a,$92,$92,$5a,$5a,$52,$52,$9b,$9b,$00,$00 + db $00,$00,$18,$98,$18,$98,$18,$98,$18,$98,$00,$80,$18,$98,$00,$00 + db $00,$00,$00,$00,$d8,$d8,$94,$94,$d8,$d8,$94,$94,$d2,$d2,$00,$00 + db $00,$00,$00,$80,$19,$99,$15,$95,$19,$99,$11,$91,$11,$91,$00,$00 + db $00,$00,$00,$00,$92,$92,$5a,$5a,$96,$96,$52,$52,$52,$52,$00,$00 + db $00,$00,$00,$80,$1d,$9d,$11,$91,$19,$99,$11,$91,$11,$91,$00,$00 + db $00,$00,$00,$00,$52,$52,$52,$52,$52,$52,$52,$52,$db,$db,$00,$00 +CardBrowse.PrinterTilesEnd: ; $22 + CardBrowse.UITilemap: db $0e, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0f, $09, $02, $02, $02, $02, $02, $02, $02, $02, $08 diff --git a/ScreenCardRead.inc b/ScreenCardRead.inc index 338ae96..6f5096d 100644 --- a/ScreenCardRead.inc +++ b/ScreenCardRead.inc @@ -12,6 +12,7 @@ ScreenCardRead: CardReadSetup: ld a, 1 ld [vBlocked], a + ld [vTooBusyForPrinter], a ld hl, .asyncTask call Async_Spawn_HL @@ -20,6 +21,9 @@ CardReadSetup: ld de, MY_OAM ld bc, $100 call CopyRange + + call CheckForPrinter + ret .asyncTask: @@ -29,6 +33,11 @@ CardReadSetup: ld b, 18 ; height ld c, 20 ; width call CopyTilesToMap + + ld hl, CardRead.PrinterTiles + ld de, _VRAM + $1000 - $10*16 + ld bc, CardRead.PrinterTilesEnd - CardRead.PrinterTiles + call CopyRange ld a, 0 ld [vBlocked], a @@ -38,10 +47,42 @@ CardReadSetup: ret CardReadUpdate: - call CardUpdate + ld a, [vPrinterStart] + cp a, 0 + call z, CardUpdate call ScrollBackgroundTile + ld a, [vTooBusyForPrinter] + cp a, 0 + jp nz, .donePrinter + + .checkForPrinter + ld a, [vPrinterStart] + cp a, 0 + call z, CheckForPrinter + .updatePrintUI + ld a, [vPrinterStart] + cp a, 0 + call z, CardRead.UpdatePrintUI + .runPrintJob + ld a, [vPrinterStart] + cp a, 0 + call nz, RunPrintJob + + .printButton + ld hl, rMYBTNP + bit 6, [hl] ; check select? + jp z, .donePrinter + + ld a, [vPrinterState] + cp a, PS_READY + jp nz, .donePrinter + + call KickOffPrintJob + ret + .donePrinter + ld hl, rMYBTNP bit 5, [hl] jp z, .doneWithB @@ -77,6 +118,8 @@ CardReadUpdate: cp a, 0 ret nz + ld a, 1 + ld [vTooBusyForPrinter], a ld hl, ChangedCardTask call Async_Spawn_HL @@ -142,9 +185,86 @@ ChangedCardTask: ld [vPreviousCardIndex], a call LoadCardData + call CardRead.UpdatePrintUIImmediate + + ld a, 0 + ld [vTooBusyForPrinter], a ret + +CardRead.UpdatePrintUI: + ld a, [vPrinterState] + ld hl, vPreviousPrinterState + cp a, [hl] + ret z ; if the printer state has not changed, return. + ; otherwise updae previous printer state and we're good + ld [hl], a + + ld hl, CardRead.UpdatePrintUIImmediate + call Async_Spawn_HL + ret + +CardRead.UpdatePrintUIImmediate: + ld a, [vPrinterState] + ld hl, CardRead.PrinterNotDetected + cp a, PS_NONE + jp z, .setIt + + ld hl, CardRead.PrinterAvailable + cp a, PS_READY + jp z, .setIt + + ld hl, CardRead.PrinterFull + cp a, PS_FULL + jp z, .setIt + + ld hl, CardRead.PrinterPrinting + cp a, PS_PRINTING + jp z, .setIt + + ld hl, CardRead.PrinterError + cp a, PS_ERROR + jp z, .setIt + + .setIt + ld de, _SCRN0 + 32*7 + 10 + ld b, 2 + ld c, 9 + call CopyTilesToMap + + ret + +CardRead.PrinterNotDetected: + db $06, $05, $05, $05, $05, $05, $05, $05, $07 + db $01, $01, $01, $01, $01, $01, $01, $01, $01 +CardRead.PrinterAvailable: + db $03, $00, $f1, $f2, $00, $f3, $f4, $00, $04 + db $06, $05, $05, $05, $05, $05, $05, $05, $07 +CardRead.PrinterFull: + db $03, $00, $f1, $f2, $00, $f9, $fa, $00, $04 + db $06, $05, $05, $05, $05, $05, $05, $05, $07 +CardRead.PrinterPrinting: + db $03, $00, $f1, $f2, $00, $f7, $f8, $00, $04 + db $06, $05, $05, $05, $05, $05, $05, $05, $07 +CardRead.PrinterError: + db $03, $00, $f1, $f2, $00, $f5, $f6, $00, $04 + db $06, $05, $05, $05, $05, $05, $05, $05, $07 + +CardRead.PrinterTiles: + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $00,$1c,$00,$0e,$38,$3f,$64,$7f,$7f,$7f,$7f,$40,$7f,$40,$3f,$3f + db $00,$00,$00,$00,$00,$00,$06,$b6,$ff,$ff,$ff,$11,$ff,$11,$fe,$fe + db $00,$00,$00,$00,$0e,$0e,$12,$1e,$24,$3c,$38,$38,$00,$00,$00,$00 + db $00,$00,$00,$00,$5a,$5a,$92,$92,$5a,$5a,$52,$52,$9b,$9b,$00,$00 + db $00,$00,$18,$18,$18,$18,$18,$18,$18,$18,$00,$00,$18,$18,$00,$00 + db $00,$00,$00,$00,$d8,$d8,$94,$94,$d8,$d8,$94,$94,$d2,$d2,$00,$00 + db $00,$00,$00,$00,$19,$19,$15,$15,$19,$19,$11,$11,$11,$11,$00,$00 + db $00,$00,$00,$00,$92,$92,$5a,$5a,$96,$96,$52,$52,$52,$52,$00,$00 + db $00,$00,$00,$00,$1d,$1d,$11,$11,$19,$19,$11,$11,$11,$11,$00,$00 + db $00,$00,$00,$00,$52,$52,$52,$52,$52,$52,$52,$52,$db,$db,$00,$00 +CardRead.PrinterTilesEnd: + CardRead.UITilemap: db $0e, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0f, $09, $02, $02, $02, $02, $02, $02, $02, $08, $01 diff --git a/ScreenMainMenu.inc b/ScreenMainMenu.inc index 80b4f0d..8e3d51e 100644 --- a/ScreenMainMenu.inc +++ b/ScreenMainMenu.inc @@ -39,6 +39,8 @@ MainMenuSetup: ld a, 0 ldh [rLCDC], a + call Async_Kill ; ensure we're not loading anything elsewhere + ld hl, SquaresTileset8 ld de, _VRAM + $1000 + $10 ld bc, SquaresTilesetEnd - SquaresTileset8 @@ -131,10 +133,7 @@ MainMenuSetup: ld a, %11100100 ldh [rBGP], a ldh [rOBP0], a - - ld hl, .doNothing - call Async_Spawn_HL - + ld a, LCDCF_BLK21 | LCDCF_ON | LCDCF_BGON | LCDCF_OBJON | LCDCF_OBJ16 ldh [rLCDC], a @@ -202,8 +201,7 @@ MainMenuSetup: ; load graphics into vram for deck face ; set up variables: LFSR stuff ret ; return from cardreadsetup -.doNothing - ret + MainMenuUpdate: ; if pressing a key and unblocked: ; signal an animation to start diff --git a/card_art/02thehighpriestess.aseprite b/card_art/02thehighpriestess.aseprite index b1845e6e32e0e265ec35a4d05bcf21c9726b6e9e..a29e912ef5cee11294c839f43fa1e76a047187a2 100644 GIT binary patch delta 787 zcmV+u1MK|9H_0~v$&mqn0ZFle(F*|-lT!>bf87EA0C=3OSc!JSAPfWh|NnUf$p<79 zlFo0d2#H;gFVa$e6KPTbhZuU#btmOf^dtRK_*rXh|KB8Z2P0BBw5ROxmHtYSU2KEv zYnpy9J#K?j{y#P}i#$Y7#%*)DO^^oR6C-Ni5C;#|eHTVA)aB`ZN48#y#h3H(L^Yd; zf9aQ~vjdKa+c`oC{&om0HD?$n=9(P_k3BmolcO?yD=#Zj1}MsFq@NpU7|8*`Rex-atnX&tUk^2r0q;>C- z+$N|O#Trf94+pWo!uZ9Y+Nx{9;^BDYFTKGhd`qBMwY%XJP8CcTN+2T`m^dMp0kX2i zTW3#-ke-20nu-Gj3DC>NfwpXZkr|{tHG4|4ib!h)aadXLx&<>Mo z+mPFVS_QNxXAD-Rx-_r^z6UmmGapK(0ug&^Y-3fnz=^ND*pt-%_1p-raUFVH{1)@E zU)3+q1va*DLqoik8f0I^=mB zF#lbxm(J~Gi#vxOgi>K?4dB2}0?(%BET3|^&c#q+RId?H z60u}vi4r|r*#0-^IiRKe9QPMK*LWk-ofj5nI}d-;8I<4r9+cL#i-Irf|5w?q<8VFc z{ReNcJ(uwEiudCmWmEsRxT=4ri1N%6%mx?V&-0|%`DTa1_x}MZ@gFX;fe$nTlkfu` Rv$YaT1Cw+X5VH{$wFU0>fj$5L delta 783 zcmV+q1MvLGH^w&s#*qPk0Ybf7${70C=3OR|$5-AP7{r|D79USlpuK zm)HI=CJ-GKNlL#770H<{Fc%?}JKavX6@H}t5`N30`CVMMF+v$beM%o+>8~W%mGxtN zMbqwu$8~VZ|6_xr&?O3G*fyri1ZW^U(IPuGad5HjSr~m#r`!FuY<(1sFXQ7zHJb40 ze~-w$1CEK?If9b>?NGE>ouQnlYj)^7*6hegj*RrpxXh9=g2cF%^fMy`J#S@@CD9lO zR|Ym83Dj7Qw#tlLu5rcRF@2{Gt_|#X<~O_(BReTS6iTv}YA@C`l%7G7LH#d3MKf6) z6n`~-qc+KEM3%x-L(ZxHunE~h+*IpVf4;$=-M8`2f&VHO9>0`ckb10sK;(YI19{x6 z$pK_V-Gy$)_m>dAGRV5>957ip9{GzWc*8e2l2*G3ui{ja2}N>51PcaEfT@9~tnpUa zqeP&m;S;93p#T9qY+O*6jTfmw*kiTFFv}8Y#h^4RD_(a<&Ob@!1yr8pT9Kehe?o`0 zOW;#Dk^K||i|vNW`&$H$EW5P*8vPpNVUX?KQ{NH@sRqiiRnIMJ<6tjKv}Q+bCRw*Z z(*bJ*)F*p%R=T>>uq1ppYyx{e7)&`z?6I;ftI`E_eCF#{6Ad*AhPgh9OkBB4eDcD89%liLScI!A?Px$_k zuh^PP^6@I)$3M!Z{%>(r|4vcLGdh?JF5ZuRlC;0sVe|e!B^e)Dvmq3a0kiM}!U40m N5=;XD1G5Dd#07fqffxV) diff --git a/card_art/03theempress.aseprite b/card_art/03theempress.aseprite index 1aa451fd4f2329e7882e72f409ab3dd6caf50607..fdeb1df02be066b921a9d44ad758fa16b69f2134 100644 GIT binary patch delta 59 zcmV-B0L1@+M1e%GwG}CMEZ|x_v54mNdm*Q-(Ecu*)y|1M+xfS9hTeYOT+|Pbz$eQG RL}3G~v%wIC0kdQmoeHA)9nAm$ delta 59 zcmV-B0L1@+M1e%GwG}D1mknd}#3Gv4?}ePULi@XLRy!y5Z0FzZ8G8G9b5TD$0-r1& RKR*Mgv%wIC0kdQmoeFey8*cyr diff --git a/card_art/04theemperor.aseprite b/card_art/04theemperor.aseprite index 61cba675db8e15dc3b7271f1fa4434eba386efd0..f010deea9f27bc06dc354f7869794be76c87e119 100644 GIT binary patch delta 1321 zcmV+^1=jk3In6i$O_2eA0?iw-g3t>AZIe?BGJiG%004NLrC5oUdV89mYcz{2J+CL=`%sgz?s&U@v0pRa=L={{8_r>;f2y>jGk+;P`7wTqvb@vx z4S(8Hb)f+bn7T-kI?xEJ-|@1MQx;OwkGLOn6_eal}(Oik9owJ>cz+oW_bZ@k8 z^vU1s>rUDant^!mDdy}_s5kV3eI4k5x;NNyO2&~kjT(Wt96;IwQ*;Z-Cc-Mpvjzvc zg%{@1G`fcq3=(|T7kmeu!MrQv&|!REXMYN(PH_4V+aCE3<1B|2mU|9gUoTGk+?X82 z$hBWg3aAqK-2XxW=zw+E5q5+ft_S;!brFQ}K)Ypf@)qBY_#PdA!;``o7i6`Aj$nX) zeEBD6Yx{+~ibEj!?zT#crXQZ<11_355m;`6IG7|lo%|fo^mF8t;e7=q3hMKHQh%bL z@;42P(UB)ghBnbBMB>LupnkXr_(hagjpBQ-4}jO|K#) zxMDl^<&VCzj(V)W_Q{jjSBjHEkMuf?_YISqRTMI2rMcXl$8Z>MOrNOtsEkDQf-1a7 z?=j+dYNosP@9dmbEOU1|-FpId5E|wUI`a8-y>rrb#oy2KTa@O{hMqX?O@Cf?iGVNb zBS-krmhAIhe)z4-Th>#F^5nmK#J#(DZQZn4l5oBkdqwsrbE1B+bAX5T z@&)T|Qv)!Fd;Ry+q9WN$tZk0DD#^;64rG6uy5VPYJJplpmlOY&7e{MrD z5J16OW@b#8nVFfHx&QwUorjGY#nMRj9(i+;B*`U@dI6Aqn-vDX`&+94b40z|L2*OXt%U-&J*{v(H^aXPA>T7ffQYw(M=D%yo5gb z8DNkhhWTZLQN|eOl8N{?$yD5@HhGIao3T4>E~C%05c5TrSdM$5*cp;kXNF0 delta 1393 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 delta 3164 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 X8MvzRHQw?cc^F{E!N9N}h}#bUM`P{2 delta 1420 zcmeyM_*s+bv&clII^JRt28LfBpD?5_Ffcrs*sEWk%*eo?tN`ROumQ0#5OV+_P!I(O zGB{?^%pryTQW9YG5c*>=hk%7Ui04}1EpSOM(@9C zcohDc{xfZvv-?DKS^tad>(Refl~(>;_wvgbmHb`*6X$>a6}i~6$7_4=uhRMFANJ;H z-COcw^P|KKu`gF#*O{6u4X9()!Ht|6fGQZ| zp~_H`4LgH7(5VFqh8kdLkZ)iLK)&H&NCKv*#GHbR#H7>`pa9f;P<7HE5eAS#eukXP zl9HTMxLU@^PJ983y^|;Nnb$u~PDps5)bO)$hH%GBjs!l1XK4yN6%8{aJ6bm+B&w9^ zgc$JO^a(nX%$yX)G-EEyXNk@ui=XlOe&%?}E1`DHCh6dc%I4EHjtb9I8(2LI_!&g@ zv9Lz~ZDmzpV(0*7h5w-N1p_8v7ExgM|NlS8yA43>z`!uMUVu+s^>8~Ug8~o3hOF4H z|C@OwJdT9N&AwY=5u4Y~&+>r5A`z&TRe^c(Z~iFBPB5E=A%GzQ$!Janw#j({@>#uI zj$91}JS?AQF527qmjB4)6#?3h{@Xud+5X^SqvGL7Icc_R)gSwAtenf}{`TK=gL+Q0R%X-cjWy$H43$~6GXdSXoI2c$!*7*siBqSuT zB$=_jX^`xg*)T)2eUFvEXU2^}0-G5&>P%tl{K&jfDrCRX6&*_zW7Y-<1}g(b>seqU z*?}Z5dfDl94Oo2SC7u5M8j&UWw-+TT4e~a@<+}EWnp6Ka$YA-cOI5vqh z`5Mp38=DqCaF}h?dn44ZB=b`Gxh73ZZMP{mUEXb6?yOtot~Fsw2HVd8Bps0K7l1_0S-=94Nvk?1Z{dZxwm_}qd^n!(HFnmz8>e9rQH zQ@7sEH(im%&vbXZn)NzwN9IM{?YcW3ud9An{a~T{G}~`Sg0<&Ge!VkGJg(~LR`Y9n qw?3Tv-R_3Wmy7E2bALWsoxknvk9Y0!>wdoNkFEdvS)TE@;6(sJhWBIu diff --git a/card_art/tileset.asm b/card_art/tileset.asm new file mode 100644 index 0000000..1033281 --- /dev/null +++ b/card_art/tileset.asm @@ -0,0 +1,37 @@ + ; original export script by gabriel reis, modified by shoofle + + +tileset: + + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $05,$00,$05,$00,$05,$00,$05,$00,$05,$00,$fd,$00,$00,$00,$fd,$00 + db $00,$ff,$ff,$ff,$ff,$ff,$ff,$00,$00,$ff,$00,$00,$00,$00,$00,$00 + db $70,$e8,$70,$e8,$70,$e8,$70,$e8,$70,$e8,$70,$e8,$70,$e8,$70,$e8 + db $0e,$17,$0e,$17,$0e,$17,$0e,$17,$0e,$17,$0e,$17,$0e,$17,$0e,$17 + db $00,$00,$00,$00,$00,$00,$00,$ff,$ff,$00,$ff,$ff,$ff,$ff,$00,$ff + db $70,$e8,$70,$e8,$70,$e8,$70,$ef,$7f,$f0,$3f,$7f,$1f,$3f,$00,$1f + db $0e,$17,$0e,$17,$0e,$17,$0e,$f7,$fe,$0f,$fc,$fe,$f8,$fc,$00,$f8 + db $00,$f8,$f8,$fc,$fc,$fe,$fe,$0f,$0e,$f7,$0e,$17,$0e,$17,$0e,$17 + db $00,$1f,$1f,$3f,$3f,$7f,$7f,$f0,$70,$ef,$70,$e8,$70,$e8,$70,$e8 + db $00,$00,$ff,$00,$ff,$00,$aa,$55,$00,$ff,$00,$ff,$ff,$ff,$ff,$ff + db $63,$1f,$73,$0f,$63,$1f,$73,$0f,$63,$1f,$73,$0f,$63,$1f,$73,$0f + db $ce,$f0,$c6,$f8,$ce,$f0,$c6,$f8,$ce,$f0,$c6,$f8,$ce,$f0,$c6,$f8 + db $ff,$ff,$ff,$ff,$00,$ff,$00,$ff,$55,$aa,$ff,$00,$ff,$00,$00,$00 + db $00,$00,$3f,$00,$7f,$00,$7a,$05,$68,$17,$70,$0f,$63,$1f,$73,$0f + db $00,$00,$fc,$00,$fe,$00,$ae,$50,$1e,$e0,$06,$f8,$ce,$f0,$c6,$f8 + db $ce,$f0,$c6,$f8,$0e,$f0,$16,$e8,$5e,$a0,$fe,$00,$fc,$00,$00,$00 + db $63,$1f,$73,$0f,$60,$1f,$78,$07,$75,$0a,$7f,$00,$3f,$00,$00,$00 + db $00,$77,$00,$88,$00,$88,$00,$88,$00,$88,$00,$88,$00,$88,$00,$77 + db $00,$00,$00,$80,$00,$80,$00,$80,$00,$80,$00,$80,$00,$80,$00,$00 + db $00,$77,$00,$88,$20,$a8,$20,$a8,$20,$a8,$20,$a8,$00,$88,$00,$77 + db $00,$77,$00,$88,$02,$8a,$02,$8a,$02,$8a,$02,$8a,$00,$88,$00,$77 + db $56,$c3,$6a,$c3,$56,$c3,$6a,$c3,$56,$c3,$6a,$c3,$7e,$ff,$00,$ff + db $00,$ff,$7e,$ff,$56,$c3,$6a,$c3,$56,$c3,$6a,$c3,$56,$c3,$6a,$c3 + db $99,$5a,$99,$5a,$99,$5a,$99,$5a,$99,$5a,$81,$42,$81,$7e,$ff,$00 + db $ff,$00,$81,$7e,$81,$42,$99,$5a,$99,$5a,$99,$5a,$99,$5a,$99,$5a + + + +BasicUI: + db $03, $00, $00, $00, $00, $00, $00, $00, $04 + db $06, $05, $05, $05, $05, $05, $05, $05, $07 diff --git a/main.asm b/main.asm index 77104ce..7ace3be 100644 --- a/main.asm +++ b/main.asm @@ -61,7 +61,7 @@ rLFSR: dw ; equ rDELTAT + 1 ; 16 bit POPS -def SAFE_DMA_LOCATION equ $ffc0 +def SAFE_DMA_LOCATION equ $ff80 def VARIABLE_TILES_START equ 26 ; where in VRAM the variable tiles start ; (i.e. we allocate VARIABLE_TILES_START-1 slots out of that block of 128 @@ -95,6 +95,21 @@ EntryPoint: ldh [rIE], a ldh [rIF], a + ; TODO remove this + ; just setting up hram with clears and sentinel values for bugfinding + ld a, 0 + ld hl, $ff80 + rept 16*8 - 1 + ld [hl+], a + endr + + ld a, %01110111 + ld hl, $ffc0 + rept 16 + ld [hl+], a + endr + + ld a, 0 ld hl, ZEROES ld bc, $200 @@ -319,6 +334,7 @@ println "scene draw is ", SCENE_DRAW - 1 jp Loop ChangeScene: ; hl should be a pointer to, in sequence, setup update draw teardown + di ;call SCENE_TEARDOWN - 1 ld a, [hl+] @@ -340,6 +356,7 @@ ChangeScene: ; hl should be a pointer to, in sequence, setup update draw teardow call SCENE_SETUP - 1 + ei ret AwaitLine: ; put the line you want to reach in b @@ -351,37 +368,35 @@ AwaitLine: ; put the line you want to reach in b ArrayClampLoopingB: cp a, b jp nz, :+ - ld a, 0 -: + ld a, 0 + : cp a, $FF jp nz, :+ - ld a, b - dec a -: + ld a, b + dec a + : ret ArrayClampLooping: ; loops a to be in the array, assuming hl points to the length cp a, [hl] ; if a == length... jp nz, :+ - ld a, 0 ; set it to 0 -: + ld a, 0 ; set it to 0 + : cp a, $FF ; otherwise if a == $FF... jp nz, :+ - ld a, [hl] - dec a ; then set it to length-1 -: + ld a, [hl] + dec a ; then set it to length-1 + : ret ; a is return value ArrayClamp: cp a, $FF jp nz, :+ - ld a, 0 - ret + ld a, 0 + ret : cp a, [hl] - ret c + ret c : ld a, [hl] dec a ret -: - PassList: ; hl has the address of a list. step past it. ld b, 0 diff --git a/source.zip b/source.zip index 192378cce5fe95eac283d5bc9f579355135ac34d..d7c3df12f2061c716a1c591a7bb7fba724411e05 100644 GIT binary patch delta 17422 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