diff --git a/CardLibrary.inc b/CardLibrary.inc index 3fa75cb..75b1000 100644 --- a/CardLibrary.inc +++ b/CardLibrary.inc @@ -156,7 +156,7 @@ Cards: Card Cups01Ace Card Cups02 Card Cups03 - Card Cups01Ace + Card Cups04 Card Cups01Ace Card Cups01Ace Card Cups01Ace @@ -171,7 +171,7 @@ Cards: Card Swords01Ace Card Swords02 Card Swords03 - Card Swords01Ace + Card Swords04 Card Swords01Ace Card Swords01Ace Card Swords01Ace @@ -186,7 +186,7 @@ Cards: Card Coins01Ace Card Coins02 Card Coins03 - Card Coins01Ace + Card Coins04 Card Coins01Ace Card Coins01Ace Card Coins01Ace @@ -201,7 +201,7 @@ Cards: Card Wands01Ace Card Wands02 Card Wands03 - Card Wands01Ace + Card Wands04 Card Wands01Ace Card Wands01Ace Card Wands01Ace @@ -253,6 +253,7 @@ cups_start: INCLUDE "cups01ace.inc" INCLUDE "cups02.inc" INCLUDE "cups03.inc" +INCLUDE "cups04.inc" INCLUDE "cups11page.inc" INCLUDE "cups12knight.inc" INCLUDE "cups13queen.inc" @@ -266,6 +267,7 @@ swords_start: INCLUDE "swords01ace.inc" INCLUDE "swords02.inc" INCLUDE "swords03.inc" +INCLUDE "swords04.inc" INCLUDE "swords11page.inc" INCLUDE "swords12knight.inc" INCLUDE "swords13queen.inc" @@ -278,6 +280,7 @@ coins_start: INCLUDE "coins01ace.inc" INCLUDE "coins02.inc" INCLUDE "coins03.inc" +INCLUDE "coins04.inc" INCLUDE "coins11page.inc" INCLUDE "coins12knight.inc" INCLUDE "coins13queen.inc" @@ -291,6 +294,7 @@ wands_start: INCLUDE "wands01ace.inc" INCLUDE "wands02.inc" INCLUDE "wands03.inc" +INCLUDE "wands04.inc" INCLUDE "wands11page.inc" INCLUDE "wands12knight.inc" INCLUDE "wands13queen.inc" diff --git a/card_art/KeyArtTiles.asm b/card_art/KeyArtTiles.asm index 759dbdd..82be23e 100644 --- a/card_art/KeyArtTiles.asm +++ b/card_art/KeyArtTiles.asm @@ -4,77 +4,82 @@ KeyArtTiles: db $00,$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,$00,$00,$00,$00,$78,$78 - db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$03,$07,$07,$07,$07 - db $00,$00,$00,$00,$00,$00,$00,$00,$7f,$7f,$ff,$ff,$ff,$ff,$ff,$ff + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$01,$03,$03,$07,$07 db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$80,$c0,$c0,$e0,$e0 - db $00,$00,$00,$00,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01 - db $fc,$fc,$fe,$fe,$fe,$fe,$fe,$fe,$fc,$fc,$fc,$fc,$fc,$fc,$fc,$fc - db $0f,$0f,$0f,$0f,$1e,$1e,$1f,$1f,$1f,$1f,$0f,$0f,$06,$06,$00,$00 - db $c3,$c3,$01,$01,$01,$01,$00,$00,$00,$00,$00,$00,$01,$01,$01,$01 - db $e0,$e0,$e0,$e0,$f0,$f0,$f0,$f0,$f0,$f0,$f0,$f0,$f0,$f0,$e0,$e0 - db $01,$01,$01,$01,$00,$00,$01,$01,$01,$01,$01,$01,$00,$00,$00,$00 - db $fc,$fc,$fc,$fc,$fc,$fc,$fc,$fc,$fc,$fc,$fc,$fc,$fc,$fc,$fc,$fc - db $01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$03,$03 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1e,$1e,$3e,$3e + db $07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07 + db $e0,$e0,$e0,$e0,$e1,$e1,$e3,$e3,$e7,$e7,$ef,$ef,$ef,$ef,$ef,$ef + db $7e,$7e,$fe,$fe,$fe,$fe,$fc,$fc,$f8,$f8,$f0,$f0,$e0,$e0,$c0,$c0 + db $f7,$f7,$f7,$f7,$77,$77,$37,$37,$17,$17,$07,$07,$17,$17,$37,$37 + db $ef,$ef,$ef,$ef,$ee,$ee,$ec,$ec,$e8,$e8,$e0,$e0,$e8,$e8,$ec,$ec + db $80,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $00,$00,$00,$00,$01,$01,$03,$03,$07,$07,$0f,$0f,$1f,$1f,$3f,$3f + db $77,$77,$f7,$f7,$f7,$f7,$f7,$f7,$f7,$f7,$f7,$f7,$f7,$f7,$e7,$e7 + db $7f,$7f,$ff,$ff,$ff,$ff,$fe,$fe,$fc,$fc,$f8,$f8,$f0,$f0,$e0,$e0 + db $c7,$c7,$87,$87,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07 db $e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0 - db $fc,$fc,$7c,$7c,$fc,$fc,$78,$78,$78,$78,$78,$78,$78,$7b,$38,$3b - db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$00,$e3 - db $00,$80,$00,$86,$00,$8f,$00,$8f,$00,$9f,$00,$bf,$00,$bf,$00,$bf - db $00,$00,$00,$00,$00,$01,$00,$9f,$00,$ff,$00,$ff,$00,$ff,$00,$ff - db $03,$03,$07,$07,$07,$87,$0f,$ef,$0f,$ef,$1f,$df,$3e,$fe,$3c,$bd - db $e0,$e3,$c0,$cf,$80,$9f,$80,$bf,$80,$bf,$00,$7f,$00,$ff,$00,$ff - db $78,$7b,$78,$7b,$78,$7b,$78,$7b,$78,$7b,$38,$3b,$78,$7b,$78,$7b - db $60,$ed,$00,$cd,$00,$c1,$00,$c0,$00,$c0,$00,$c0,$00,$c0,$00,$c0 - db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ef,$00,$ff,$00,$fe,$00,$fe - db $7c,$fd,$78,$fb,$78,$fb,$78,$7b,$f8,$fb,$f0,$f7,$f0,$f7,$f0,$f7 + db $00,$80,$00,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$01,$01,$01,$00,$00 + db $07,$07,$07,$07,$07,$07,$07,$07,$c7,$c7,$ff,$ff,$ff,$ff,$ff,$ff + db $e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e3,$e3,$ff,$ff,$ff,$ff,$ff,$ff + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$80,$80,$80,$00,$00 + db $03,$03,$03,$0b,$03,$1b,$01,$3d,$00,$3e,$00,$1f,$00,$1f,$00,$3f + db $c0,$c0,$c0,$c0,$c0,$dc,$80,$be,$00,$7e,$00,$ff,$00,$ff,$00,$ff + db $00,$c0,$00,$80,$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,$01 + db $00,$00,$00,$00,$00,$01,$00,$03,$00,$07,$00,$1f,$00,$3f,$00,$ff + db $00,$7f,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$fe,$00,$fc,$00,$f8,$00,$e0 + db $00,$00,$00,$00,$00,$00,$00,$80,$00,$e0,$00,$f9,$00,$ff,$00,$ff + db $00,$07,$00,$1f,$00,$3f,$00,$7f,$00,$ff,$00,$ff,$00,$ff,$00,$ff db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff - db $78,$7b,$70,$73,$70,$77,$70,$77,$30,$37,$70,$77,$70,$77,$70,$77 - db $00,$c0,$00,$80,$00,$80,$00,$80,$00,$80,$00,$80,$00,$00,$00,$00 - db $00,$1f,$00,$1f,$00,$1f,$00,$3f,$00,$3f,$00,$3f,$00,$3f,$00,$3f - db $00,$fe,$00,$fe,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff - db $f0,$f7,$f0,$f7,$70,$77,$70,$77,$70,$77,$70,$77,$70,$77,$70,$77 - db $70,$77,$70,$77,$70,$77,$70,$77,$70,$77,$70,$77,$70,$77,$70,$77 - db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$fe,$00,$fe,$00,$fe,$00,$fe - db $70,$77,$70,$77,$30,$b7,$38,$bb,$38,$bb,$38,$bb,$38,$bb,$38,$bb - db $70,$77,$70,$77,$70,$77,$60,$6f,$60,$6f,$60,$6f,$60,$6f,$60,$6f - db $00,$fe,$00,$fe,$00,$fc,$00,$fc,$00,$f8,$00,$f8,$00,$f8,$00,$f8 - db $00,$0f,$00,$0f,$00,$0f,$00,$0f,$00,$07,$00,$07,$00,$07,$00,$07 - db $38,$bb,$38,$bb,$18,$db,$18,$db,$1c,$dd,$1c,$dd,$1c,$dd,$1c,$dd - db $60,$6f,$60,$6f,$60,$6f,$20,$af,$00,$df,$00,$ff,$00,$ff,$00,$ff - db $00,$f8,$00,$f0,$00,$f0,$00,$f0,$00,$e0,$00,$e0,$00,$e0,$00,$c0 - db $00,$07,$00,$03,$00,$01,$00,$01,$00,$00,$00,$00,$00,$00,$00,$00 - db $1c,$dd,$1c,$dd,$0c,$ed,$0c,$ed,$0c,$ed,$08,$eb,$00,$f7,$00,$ff - db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$fe,$00,$fc - db $00,$c0,$00,$c0,$00,$c0,$00,$c0,$00,$80,$00,$00,$00,$00,$00,$00 - db $00,$7f,$00,$7f,$00,$3f,$00,$3f,$00,$3f,$00,$1f,$00,$0f,$00,$07 - db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$7f - db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$fc,$00,$f0,$00,$c0 - db $00,$f8,$00,$f0,$00,$e0,$00,$c0,$00,$00,$00,$00,$00,$00,$00,$00 - db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$7f,$00,$1f,$00,$07,$00,$03 - db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$f6,$00,$ff - db $00,$1f,$00,$1f,$00,$1f,$00,$1f,$00,$1f,$00,$1f,$00,$1f,$00,$1f - db $00,$03,$00,$01,$00,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $00,$bf,$00,$bf,$00,$3f,$00,$3f,$00,$3f,$00,$3f,$00,$3f,$00,$1f - db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$07,$60,$67,$60,$6f - db $60,$6f,$00,$ff,$00,$ff,$60,$7f,$60,$6f,$60,$6f,$60,$6d,$60,$6d - db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80 + db $00,$ff,$00,$fc,$03,$fb,$03,$f3,$01,$e1,$00,$c0,$00,$80,$00,$80 + db $00,$80,$00,$00,$c0,$c0,$c0,$c0,$80,$80,$00,$00,$00,$00,$00,$00 + db $00,$ff,$00,$fe,$00,$fc,$00,$f8,$00,$f0,$00,$e0,$00,$e0,$00,$c0 + db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$fe,$00,$fc,$00,$fc,$00,$f8 + db $00,$00,$00,$00,$00,$00,$00,$00,$f8,$f8,$7e,$7e,$1f,$1f,$1f,$1f + db $00,$00,$00,$00,$01,$01,$03,$03,$07,$07,$0f,$0f,$1f,$1f,$bf,$bf + db $1f,$1f,$0f,$0f,$07,$07,$03,$3b,$03,$7b,$07,$f7,$07,$ff,$07,$ff + db $ff,$ff,$ff,$ff,$ff,$ff,$fe,$fe,$fc,$fc,$fe,$fe,$ff,$ff,$ff,$ff + db $c0,$c0,$80,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$80 + db $07,$ff,$01,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $df,$df,$8f,$af,$07,$f7,$03,$f3,$00,$f0,$00,$f0,$00,$e0,$00,$e0 + db $c0,$c0,$c0,$c0,$e0,$e0,$e0,$e0,$60,$60,$60,$60,$20,$20,$00,$00 + db $00,$7f,$80,$bf,$c0,$de,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $ee,$ee,$ef,$ef,$ef,$ef,$ef,$ef,$ef,$ef,$ef,$ef,$ef,$ef,$e7,$e7 + db $00,$00,$00,$00,$80,$80,$c0,$c0,$e0,$e0,$f0,$f0,$f8,$f8,$fc,$fc + db $e3,$e3,$e1,$e1,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0 + db $fe,$fe,$ff,$ff,$ff,$ff,$7f,$7f,$3f,$3f,$1f,$1f,$0f,$2f,$07,$37 + db $00,$00,$00,$00,$80,$81,$c0,$df,$e0,$ef,$f0,$f7,$f8,$fb,$fc,$fd + db $03,$03,$01,$01,$00,$00,$00,$03,$00,$03,$00,$07,$00,$07,$00,$0e + db $00,$f8,$00,$e0,$00,$e0,$00,$e0,$00,$c0,$10,$d0,$18,$d8,$1c,$dc + db $00,$1c,$00,$78,$00,$71,$00,$01,$00,$03,$00,$07,$00,$0f,$00,$0e + db $00,$ff,$00,$ff,$00,$ee,$00,$ce,$00,$8e,$00,$be,$00,$3c,$00,$18 + db $1e,$de,$1e,$de,$1e,$de,$1e,$de,$1e,$de,$00,$c0,$00,$c0,$00,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$00,$0f + db $fe,$fe,$fc,$fd,$f8,$fb,$70,$77,$20,$af,$00,$df,$00,$ff,$00,$ff + db $00,$00,$80,$80,$c0,$c0,$c0,$c0,$80,$80,$e0,$e0,$f0,$f0,$f8,$f8 + db $fc,$fc,$7e,$7e,$3f,$3f,$1f,$1f,$0f,$0f,$07,$07,$03,$03,$07,$07 + db $07,$07,$17,$17,$37,$37,$f7,$f7,$f7,$f7,$e7,$e7,$f7,$f7,$f7,$f7 + db $0f,$0f,$1e,$1e,$3c,$3c,$78,$78,$70,$70,$60,$60,$00,$00,$00,$00 + db $00,$00,$07,$07,$0f,$0f,$1f,$1f,$1f,$1f,$1f,$1f,$1f,$1f,$0d,$0d KeyArt: db $1a, $1a, $1a, $1a, $1a, $1a, $1a, $1a db $1a, $1a, $1a, $1a, $1a, $1a, $1a, $1a - db $1a, $1a, $1a, $1a, $1a, $1a, $1a, $1a - db $1a, $1a, $1a, $1a, $1a, $1a, $1a, $1a - db $1a, $1a, $1a, $1a, $1a, $1a, $1a, $1a - db $1a, $1b, $1a, $1a, $1a, $1c, $1d, $1e - db $1f, $20, $1a, $1a, $1a, $21, $22, $23 - db $24, $25, $1a, $4e, $50, $1a, $26, $27 - db $4a, $28, $29, $4f, $2a, $2b, $2c, $2d - db $32, $2e, $32, $2f, $4d, $30, $31, $32 - db $32, $33, $32, $34, $35, $36, $37, $32 - db $32, $38, $39, $1a, $4b, $32, $3a, $32 - db $32, $3b, $3c, $1a, $3d, $32, $3e, $32 - db $32, $3f, $40, $1a, $41, $46, $42, $32 - db $32, $43, $44, $1a, $1a, $45, $32, $32 - db $47, $48, $1a, $1a, $1a, $4c, $49, $32 + db $1a, $1a, $1a, $1b, $1c, $1a, $1a, $1a + db $1a, $55, $51, $1e, $28, $1d, $1a, $1a + db $1a, $1a, $52, $53, $1f, $20, $1a, $1a + db $1a, $1a, $54, $21, $22, $23, $1a, $1a + db $1a, $1a, $24, $25, $45, $46, $1a, $4f + db $3c, $3d, $26, $27, $47, $48, $49, $33 + db $3e, $3f, $40, $1e, $28, $4a, $50, $4b + db $41, $42, $43, $1e, $28, $4c, $4d, $4e + db $44, $30, $2a, $2b, $2c, $2d, $1a, $1a + db $1a, $1a, $1a, $2e, $2f, $1a, $1a, $1a + db $1a, $31, $32, $33, $34, $1a, $1a, $1a + db $35, $36, $37, $38, $39, $1a, $1a, $1a + db $37, $37, $3a, $1a, $1a, $1a, $1a, $1a + db $37, $3b, $29, $1a, $1a, $1a, $1a, $1a diff --git a/card_art/coins03.aseprite b/card_art/coins03.aseprite index c4c3a4b..63eca5c 100644 Binary files a/card_art/coins03.aseprite and b/card_art/coins03.aseprite differ diff --git a/card_art/coins04.aseprite b/card_art/coins04.aseprite new file mode 100644 index 0000000..63eca5c Binary files /dev/null and b/card_art/coins04.aseprite differ diff --git a/card_art/cups03.aseprite b/card_art/cups03.aseprite index 02f77ac..e19bbf4 100644 Binary files a/card_art/cups03.aseprite and b/card_art/cups03.aseprite differ diff --git a/card_art/cups04.aseprite b/card_art/cups04.aseprite new file mode 100644 index 0000000..e19bbf4 Binary files /dev/null and b/card_art/cups04.aseprite differ diff --git a/card_art/swords03.aseprite b/card_art/swords03.aseprite index 83ff776..c50ea8e 100644 Binary files a/card_art/swords03.aseprite and b/card_art/swords03.aseprite differ diff --git a/card_art/swords04.aseprite b/card_art/swords04.aseprite new file mode 100644 index 0000000..c50ea8e Binary files /dev/null and b/card_art/swords04.aseprite differ diff --git a/card_art/wands03.aseprite b/card_art/wands03.aseprite index 2aaa1cb..f441a42 100644 Binary files a/card_art/wands03.aseprite and b/card_art/wands03.aseprite differ diff --git a/card_art/wands04.aseprite b/card_art/wands04.aseprite new file mode 100644 index 0000000..f441a42 Binary files /dev/null and b/card_art/wands04.aseprite differ diff --git a/coins03.inc b/coins03.inc index e7a0c4c..676295e 100644 --- a/coins03.inc +++ b/coins03.inc @@ -35,89 +35,85 @@ Coins03: .KeyArtTiles: db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $00,$f8,$00,$fc,$00,$fe,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff - db $00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$00,$c0,$00,$e0,$00,$e0 - db $00,$07,$00,$03,$00,$03,$00,$03,$00,$03,$00,$01,$00,$00,$00,$00 db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff - db $f8,$f8,$fc,$fc,$fe,$fe,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fe,$fe - db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$40,$40,$40,$40,$c0,$c0 - db $00,$ff,$00,$7f,$00,$7f,$00,$7f,$00,$7f,$00,$7b,$00,$79,$00,$78 - db $c0,$c0,$c0,$e0,$c0,$f0,$80,$f0,$00,$f8,$00,$fc,$00,$fc,$00,$fc - db $00,$7f,$00,$3f,$00,$1f,$00,$0f,$00,$0f,$00,$0f,$00,$0f,$00,$0f - db $00,$ff,$00,$ff,$00,$ff,$00,$f0,$00,$00,$00,$01,$00,$03,$00,$07 - db $00,$f8,$00,$f0,$00,$00,$00,$38,$00,$7c,$00,$fe,$00,$ff,$00,$ff - db $00,$0f,$00,$0f,$00,$0f,$00,$0f,$00,$0f,$00,$0f,$00,$0f,$00,$0f - db $00,$80,$00,$c0,$00,$e0,$00,$f0,$00,$f8,$00,$fc,$00,$fe,$00,$ff - db $00,$07,$00,$73,$00,$f8,$00,$f8,$00,$f0,$00,$e0,$00,$80,$00,$00 - db $00,$ff,$00,$ff,$00,$7f,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $00,$ff,$00,$ff,$00,$ff,$00,$0f,$00,$00,$00,$00,$00,$0c,$00,$1e - db $00,$80,$00,$80,$00,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$e0 - db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$00,$07,$00,$07 - db $00,$00,$00,$00,$00,$00,$00,$07,$00,$3f,$00,$ff,$00,$ff,$00,$ff - db $00,$00,$00,$00,$00,$7e,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$fc,$03,$f3,$0f,$ef,$1f,$df + db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$07,$f8,$f8,$ff,$ff,$ff,$ff + db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$3f,$c0,$df + db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$fe,$01,$fd,$01,$fd,$01,$fd + db $00,$f8,$07,$c7,$3f,$bf,$7f,$7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff + db $3f,$3f,$bf,$bf,$bf,$bf,$bf,$bf,$bf,$bf,$df,$df,$ef,$ef,$f7,$f7 + db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff + db $e0,$ef,$f0,$f7,$f8,$fb,$f8,$fb,$f8,$fb,$f8,$fb,$f8,$fb,$f0,$f7 + db $01,$fd,$01,$fd,$00,$fe,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $ff,$ff,$ff,$ff,$ff,$ff,$7f,$7f,$3f,$bf,$07,$c7,$00,$f8,$00,$ff + db $f9,$f9,$fe,$fe,$ff,$ff,$ff,$ff,$fe,$fe,$f0,$f1,$00,$0f,$00,$ff + db $ff,$ff,$3f,$3f,$80,$80,$00,$7f,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $e0,$ef,$80,$9f,$00,$7f,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $00,$ff,$00,$ff,$00,$00,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$00 + db $00,$7e,$00,$7e,$00,$7e,$00,$7e,$00,$7e,$00,$7e,$00,$7e,$00,$7e + db $00,$00,$00,$00,$00,$00,$00,$0f,$00,$1f,$00,$1f,$00,$0f,$00,$07 + db $00,$01,$00,$1f,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $00,$f8,$00,$fc,$00,$fe,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff db $00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$00,$c0,$00,$e0,$00,$f0 db $00,$03,$00,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $00,$ff,$00,$ff,$00,$ff,$00,$7f,$00,$3f,$00,$1f,$00,$0f,$00,$0f - db $00,$78,$00,$f8,$00,$f0,$00,$f0,$00,$f8,$00,$f8,$00,$f8,$00,$f8 - db $00,$fc,$00,$fe,$00,$ff,$00,$ff,$00,$f7,$00,$c7,$00,$03,$00,$03 - db $00,$0f,$00,$0f,$00,$0f,$00,$8f,$00,$8f,$00,$cf,$00,$cf,$00,$ef - db $00,$07,$00,$1f,$00,$3f,$00,$3f,$00,$3f,$00,$3f,$00,$3f,$00,$1f - db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$c0,$00,$00,$00,$ff - db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$00,$00,$7f,$00,$ff - db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$03,$00,$ff,$00,$ff - db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$e0,$00,$f8,$00,$fe - db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$c0 - db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$f0,$00,$00 - db $00,$ff,$00,$ff,$00,$ff,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $00,$ff,$00,$ff,$00,$f8,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $00,$ff,$00,$ff,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $00,$ff,$00,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $00,$fe,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$00,$00,$ff - db $00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$00,$07,$00,$0f,$00,$1f - db $00,$00,$00,$00,$00,$1c,$00,$7e,$00,$fe,$00,$fc,$00,$f1,$00,$cf - db $00,$3f,$00,$3e,$00,$3c,$00,$3c,$00,$3c,$00,$3c,$00,$3c,$00,$3e - db $00,$3f,$00,$3f,$00,$3f,$00,$3f,$00,$3f,$00,$3f,$00,$3f,$00,$3f - db $00,$00,$00,$00,$00,$80,$00,$c0,$00,$e0,$00,$e0,$00,$f8,$00,$fc - db $00,$80,$00,$f8,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff - db $00,$00,$00,$00,$00,$00,$00,$e0,$00,$fe,$00,$ff,$00,$ff,$00,$ff - db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$f0,$00,$ff,$00,$ff - db $00,$00,$00,$00,$00,$00,$00,$01,$00,$0f,$00,$7f,$00,$ff,$00,$ff - db $00,$1e,$00,$3f,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff - db $00,$3f,$00,$7f,$00,$7f,$00,$3f,$00,$3f,$00,$1f,$00,$00,$00,$00 - db $1f,$ff,$3f,$ff,$7f,$ff,$bf,$bf,$bf,$bf,$bf,$bf,$9f,$9f,$c7,$c7 - db $71,$f1,$7c,$fc,$3f,$ff,$1f,$ff,$07,$ff,$00,$ff,$00,$ff,$00,$ff - db $fc,$fc,$01,$01,$ff,$ff,$ff,$ff,$fc,$ff,$00,$ff,$00,$ff,$00,$ff - db $00,$ff,$00,$ff,$00,$ff,$07,$ff,$0f,$ff,$1f,$ff,$3f,$ff,$3f,$ff - db $00,$ff,$01,$ff,$3d,$fd,$fd,$fd,$fd,$fd,$fd,$fd,$fd,$fd,$fc,$fc - db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff - db $3f,$ff,$3f,$ff,$3f,$ff,$3f,$ff,$1f,$ff,$1f,$ff,$0f,$ff,$03,$ff - db $fe,$fe,$fe,$fe,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$f8,$ff,$f0,$ff - db $ff,$ff,$7f,$7f,$3f,$3f,$9f,$9f,$87,$ff,$01,$ff,$00,$ff,$00,$ff - db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$7f,$ff - db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$e0,$ff - db $f0,$ff,$fc,$ff,$fe,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff - db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$80,$ff,$80,$ff,$c0,$ff,$e0,$ff - db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$f8,$ff,$00,$ff,$00,$ff - db $e0,$ff,$e0,$ff,$e0,$ff,$c0,$ff,$80,$ff,$00,$ff,$00,$ff,$00,$ff + db $00,$ff,$00,$ff,$00,$ff,$00,$7f,$00,$3f,$00,$3f,$00,$1f,$00,$1f + db $00,$f8,$00,$fc,$00,$fe,$00,$ff,$00,$ff,$00,$ff,$00,$e0,$1f,$9f + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$00,$c0,$00,$00,$f0,$f0 + db $00,$1f,$00,$0f,$00,$0f,$00,$0f,$00,$07,$00,$07,$00,$07,$00,$06 + db $00,$ff,$00,$fe,$01,$fd,$01,$fd,$01,$fd,$01,$fd,$01,$fd,$01,$fd + db $7f,$7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff + db $fc,$fc,$fe,$fe,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$40,$00,$60,$00,$70 + db $00,$7e,$00,$7e,$00,$7e,$00,$7e,$00,$3c,$00,$00,$00,$00,$00,$00 + db $00,$06,$00,$06,$00,$06,$00,$06,$00,$06,$00,$06,$00,$36,$00,$76 + db $00,$7e,$00,$3f,$00,$1f,$00,$0f,$00,$07,$00,$03,$00,$01,$00,$00 + db $ff,$ff,$7f,$7f,$1f,$9f,$00,$e0,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $fe,$fe,$fc,$fd,$f0,$f3,$00,$0f,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $00,$f8,$00,$fc,$00,$fe,$00,$ff,$00,$ff,$00,$ff,$00,$fc,$00,$c0 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$00,$c0,$00,$c0,$00,$c0 + db $00,$00,$00,$01,$00,$03,$00,$03,$00,$07,$00,$07,$00,$07,$00,$06 + db $00,$e6,$00,$c6,$00,$87,$00,$8f,$00,$1f,$00,$3f,$00,$7f,$00,$ff + db $00,$00,$00,$00,$00,$00,$00,$80,$00,$c0,$00,$e0,$00,$f0,$00,$f8 + db $00,$7f,$00,$3f,$00,$1f,$00,$0c,$00,$0c,$00,$0c,$00,$0c,$00,$0c + db $00,$fe,$00,$e0,$00,$01,$00,$07,$00,$0f,$00,$1f,$00,$3f,$00,$3f + db $00,$00,$00,$f8,$00,$fc,$00,$fe,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $00,$d0,$00,$d8,$00,$de,$00,$cf,$00,$73,$00,$bd,$00,$be,$00,$df + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$00,$c0,$00,$c0,$00,$60 + db $00,$07,$00,$07,$00,$07,$00,$07,$00,$07,$00,$07,$00,$07,$00,$07 + db $00,$7f,$00,$3e,$00,$80,$00,$80,$00,$c0,$00,$c0,$00,$e0,$00,$f0 + db $00,$cc,$00,$06,$00,$03,$00,$01,$00,$03,$00,$07,$00,$0f,$00,$1f + db $00,$0c,$00,$0c,$00,$0c,$00,$8c,$00,$cc,$00,$ec,$00,$fc,$00,$fc + db $00,$3f,$00,$3f,$00,$3f,$00,$3f,$00,$1f,$00,$07,$00,$03,$00,$1d + db $00,$ec,$00,$f0,$00,$f0,$00,$f8,$00,$fc,$00,$fe,$00,$ff,$00,$ff + db $00,$60,$00,$60,$00,$60,$00,$60,$00,$60,$00,$60,$00,$60,$00,$60 + db $00,$f8,$00,$fc,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $00,$3f,$00,$7f,$00,$3f,$00,$9e,$00,$e0,$00,$ff,$00,$ff,$00,$ff + db $00,$ff,$00,$ff,$00,$e0,$00,$00,$00,$00,$00,$00,$00,$e0,$00,$fc + db $00,$fe,$00,$e0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $00,$1f,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $00,$fe,$00,$00,$00,$01,$00,$03,$00,$03,$00,$07,$00,$1f,$00,$3f + db $00,$60,$00,$e0,$00,$e0,$00,$e0,$00,$e0,$00,$e0,$00,$e0,$00,$e0 + db $00,$c0,$00,$fe,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $00,$01,$00,$0f,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $00,$e0,$00,$e0,$00,$e0,$00,$e0,$00,$e0,$00,$e0,$00,$e0,$00,$e0 .KeyArtTilesEnd: .BackgroundCopy: ; tiles start at 26 - db $1e, $1e, $57, $58, $1e, $1e, $1e, $1e - db $51, $52, $53, $59, $5a, $1e, $1e, $1e - db $54, $55, $56, $5b, $5c, $1e, $1e, $1e - db $42, $42, $42, $42, $37, $38, $39, $3a - db $1e, $1e, $1e, $1e, $1e, $1e, $3b, $3c - db $3d, $3e, $3f, $40, $41, $1a, $1a, $1a - db $2d, $2e, $2f, $30, $1a, $1a, $1a, $1a - db $31, $32, $1e, $1b, $1c, $1a, $1a, $1a - db $1a, $1d, $1e, $4e, $1f, $20, $1a, $1a - db $1a, $1a, $21, $4f, $50, $22, $1a, $1a - db $43, $44, $33, $23, $24, $25, $1a, $1a - db $45, $4d, $34, $35, $26, $1e, $27, $1a - db $46, $47, $36, $2c, $28, $29, $2a, $2b - db $46, $1e, $48, $49, $4a, $4b, $4c, $1a - db $46, $1e, $1e, $1e, $1e, $1e, $1e, $1a - db $46, $1e, $1e, $1e, $1e, $1e, $1e, $1a + db $1b, $1b, $1b, $1b, $1b, $1b, $1b, $1b + db $1b, $1b, $1b, $1c, $1d, $1e, $1b, $1b + db $1b, $1f, $20, $21, $22, $23, $1b, $1b + db $1b, $24, $25, $26, $27, $28, $1b, $1b + db $29, $29, $29, $29, $29, $29, $29, $29 + db $2a, $2a, $2a, $2a, $2a, $2a, $2a, $2a + db $1a, $1a, $1a, $1a, $1a, $1a, $1a, $2b + db $2c, $2d, $2e, $2f, $1a, $1a, $1a, $2b + db $30, $31, $1b, $32, $33, $1a, $1a, $2b + db $1a, $34, $35, $36, $37, $38, $1a, $39 + db $1a, $3a, $3b, $3c, $3d, $3e, $3f, $1a + db $40, $41, $42, $43, $44, $45, $46, $47 + db $48, $49, $4a, $4b, $4c, $1b, $4d, $4e + db $48, $4f, $50, $51, $52, $53, $54, $55 + db $48, $1b, $1b, $1b, $56, $57, $1b, $58 + db $48, $1b, $1b, $1b, $1b, $1b, $1b, $58 .BackgroundCopyEnd: \ No newline at end of file diff --git a/coins04.inc b/coins04.inc new file mode 100644 index 0000000..efcfb05 --- /dev/null +++ b/coins04.inc @@ -0,0 +1,119 @@ +Coins04: + db 10, "FOUR of " + db 10, "COINS " + db 10, " " + db 10, "hard work " + db 10, "the trades" + db 10, "rewards " + + db 10, "FOUR of " + db 10, "COINS " + db 10, "(reversed)" + db 10, "no growth " + db 10, "no goals " + db 10, "apathy " + + dw .BackgroundCopyEnd - .BackgroundCopy + dw .BackgroundCopy + dw .KeyArtTilesEnd - .KeyArtTiles + dw .KeyArtTiles + dw .SpriteTilesEnd - .SpriteTiles + dw .SpriteTiles + dw .fInit + dw .fUpdate + dw .fDraw + dw .fPrintPrep + +.fInit: ret +.fUpdate: ret +.fDraw: ret +.fPrintPrep: ret + +.SpriteTiles: +.SpriteTilesEnd: + +.KeyArtTiles: + + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$fc,$03,$f3,$0f,$ef,$1f,$df + db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$07,$f8,$f8,$ff,$ff,$ff,$ff + db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$3f,$c0,$df + db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$fe,$01,$fd,$01,$fd,$01,$fd + db $00,$f8,$07,$c7,$3f,$bf,$7f,$7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff + db $3f,$3f,$bf,$bf,$bf,$bf,$bf,$bf,$bf,$bf,$df,$df,$ef,$ef,$f7,$f7 + db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff + db $e0,$ef,$f0,$f7,$f8,$fb,$f8,$fb,$f8,$fb,$f8,$fb,$f8,$fb,$f0,$f7 + db $01,$fd,$01,$fd,$00,$fe,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $ff,$ff,$ff,$ff,$ff,$ff,$7f,$7f,$3f,$bf,$07,$c7,$00,$f8,$00,$ff + db $f9,$f9,$fe,$fe,$ff,$ff,$ff,$ff,$fe,$fe,$f0,$f1,$00,$0f,$00,$ff + db $ff,$ff,$3f,$3f,$80,$80,$00,$7f,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $e0,$ef,$80,$9f,$00,$7f,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $00,$ff,$00,$ff,$00,$00,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$00 + db $00,$7e,$00,$7e,$00,$7e,$00,$7e,$00,$7e,$00,$7e,$00,$7e,$00,$7e + db $00,$00,$00,$00,$00,$00,$00,$0f,$00,$1f,$00,$1f,$00,$0f,$00,$07 + db $00,$01,$00,$1f,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $00,$f8,$00,$fc,$00,$fe,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$00,$c0,$00,$e0,$00,$f0 + db $00,$03,$00,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $00,$ff,$00,$ff,$00,$ff,$00,$7f,$00,$3f,$00,$3f,$00,$1f,$00,$1f + db $00,$f8,$00,$fc,$00,$fe,$00,$ff,$00,$ff,$00,$ff,$00,$e0,$1f,$9f + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$00,$c0,$00,$00,$f0,$f0 + db $00,$1f,$00,$0f,$00,$0f,$00,$0f,$00,$07,$00,$07,$00,$07,$00,$06 + db $00,$ff,$00,$fe,$01,$fd,$01,$fd,$01,$fd,$01,$fd,$01,$fd,$01,$fd + db $7f,$7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff + db $fc,$fc,$fe,$fe,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$40,$00,$60,$00,$70 + db $00,$7e,$00,$7e,$00,$7e,$00,$7e,$00,$3c,$00,$00,$00,$00,$00,$00 + db $00,$06,$00,$06,$00,$06,$00,$06,$00,$06,$00,$06,$00,$36,$00,$76 + db $00,$7e,$00,$3f,$00,$1f,$00,$0f,$00,$07,$00,$03,$00,$01,$00,$00 + db $ff,$ff,$7f,$7f,$1f,$9f,$00,$e0,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $fe,$fe,$fc,$fd,$f0,$f3,$00,$0f,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $00,$f8,$00,$fc,$00,$fe,$00,$ff,$00,$ff,$00,$ff,$00,$fc,$00,$c0 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$00,$c0,$00,$c0,$00,$c0 + db $00,$00,$00,$01,$00,$03,$00,$03,$00,$07,$00,$07,$00,$07,$00,$06 + db $00,$e6,$00,$c6,$00,$87,$00,$8f,$00,$1f,$00,$3f,$00,$7f,$00,$ff + db $00,$00,$00,$00,$00,$00,$00,$80,$00,$c0,$00,$e0,$00,$f0,$00,$f8 + db $00,$7f,$00,$3f,$00,$1f,$00,$0c,$00,$0c,$00,$0c,$00,$0c,$00,$0c + db $00,$fe,$00,$e0,$00,$01,$00,$07,$00,$0f,$00,$1f,$00,$3f,$00,$3f + db $00,$00,$00,$f8,$00,$fc,$00,$fe,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $00,$d0,$00,$d8,$00,$de,$00,$cf,$00,$73,$00,$bd,$00,$be,$00,$df + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$00,$c0,$00,$c0,$00,$60 + db $00,$07,$00,$07,$00,$07,$00,$07,$00,$07,$00,$07,$00,$07,$00,$07 + db $00,$7f,$00,$3e,$00,$80,$00,$80,$00,$c0,$00,$c0,$00,$e0,$00,$f0 + db $00,$cc,$00,$06,$00,$03,$00,$01,$00,$03,$00,$07,$00,$0f,$00,$1f + db $00,$0c,$00,$0c,$00,$0c,$00,$8c,$00,$cc,$00,$ec,$00,$fc,$00,$fc + db $00,$3f,$00,$3f,$00,$3f,$00,$3f,$00,$1f,$00,$07,$00,$03,$00,$1d + db $00,$ec,$00,$f0,$00,$f0,$00,$f8,$00,$fc,$00,$fe,$00,$ff,$00,$ff + db $00,$60,$00,$60,$00,$60,$00,$60,$00,$60,$00,$60,$00,$60,$00,$60 + db $00,$f8,$00,$fc,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $00,$3f,$00,$7f,$00,$3f,$00,$9e,$00,$e0,$00,$ff,$00,$ff,$00,$ff + db $00,$ff,$00,$ff,$00,$e0,$00,$00,$00,$00,$00,$00,$00,$e0,$00,$fc + db $00,$fe,$00,$e0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $00,$1f,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $00,$fe,$00,$00,$00,$01,$00,$03,$00,$03,$00,$07,$00,$1f,$00,$3f + db $00,$60,$00,$e0,$00,$e0,$00,$e0,$00,$e0,$00,$e0,$00,$e0,$00,$e0 + db $00,$c0,$00,$fe,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $00,$01,$00,$0f,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $00,$e0,$00,$e0,$00,$e0,$00,$e0,$00,$e0,$00,$e0,$00,$e0,$00,$e0 +.KeyArtTilesEnd: + +.BackgroundCopy: ; tiles start at 26 + db $1b, $1b, $1b, $1b, $1b, $1b, $1b, $1b + db $1b, $1b, $1b, $1c, $1d, $1e, $1b, $1b + db $1b, $1f, $20, $21, $22, $23, $1b, $1b + db $1b, $24, $25, $26, $27, $28, $1b, $1b + db $29, $29, $29, $29, $29, $29, $29, $29 + db $2a, $2a, $2a, $2a, $2a, $2a, $2a, $2a + db $1a, $1a, $1a, $1a, $1a, $1a, $1a, $2b + db $2c, $2d, $2e, $2f, $1a, $1a, $1a, $2b + db $30, $31, $1b, $32, $33, $1a, $1a, $2b + db $1a, $34, $35, $36, $37, $38, $1a, $39 + db $1a, $3a, $3b, $3c, $3d, $3e, $3f, $1a + db $40, $41, $42, $43, $44, $45, $46, $47 + db $48, $49, $4a, $4b, $4c, $1b, $4d, $4e + db $48, $4f, $50, $51, $52, $53, $54, $55 + db $48, $1b, $1b, $1b, $56, $57, $1b, $58 + db $48, $1b, $1b, $1b, $1b, $1b, $1b, $58 +.BackgroundCopyEnd: \ No newline at end of file diff --git a/cups03.inc b/cups03.inc index 636f995..d7caf3a 100644 --- a/cups03.inc +++ b/cups03.inc @@ -36,45 +36,37 @@ Cups03: db $00,$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,$00,$00,$01,$01,$03,$83 - db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$ce,$ce,$ff,$ff,$ff,$ff - db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$70,$70,$f8,$f8,$fc,$fc - db $07,$87,$0f,$8f,$0f,$cf,$1f,$df,$1f,$df,$1f,$ff,$1f,$ff,$1f,$ff + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$ff,$ff,$e0,$e0,$c0,$df + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$e0,$e0,$30,$30,$18,$d8 + db $07,$87,$0f,$8f,$0f,$cf,$0f,$cf,$0f,$cf,$0f,$ef,$0f,$ef,$0f,$ef db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff - db $fe,$fe,$fe,$fe,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff db $00,$1f,$00,$1f,$00,$1f,$00,$1f,$80,$9e,$80,$9c,$80,$98,$80,$90 - db $00,$0f,$30,$3f,$30,$3f,$30,$3f,$30,$3f,$30,$3f,$30,$3f,$30,$3f - db $3f,$ff,$3f,$ff,$3f,$ff,$7f,$ff,$3f,$ff,$1f,$ff,$01,$f9,$00,$fc - db $f0,$ff,$f8,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$03,$03 - db $03,$ff,$03,$ff,$c7,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fe,$fe,$fc,$fc - db $80,$80,$80,$80,$80,$80,$80,$80,$80,$f0,$00,$f8,$00,$f8,$07,$ff - db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$fe,$fe,$9f,$ff + db $00,$0f,$00,$0f,$00,$0f,$00,$0f,$00,$0f,$00,$0f,$00,$0f,$00,$0f + db $0f,$ef,$0f,$ef,$0f,$ef,$0f,$ef,$0f,$ef,$07,$e7,$03,$fb,$01,$fd + db $c0,$df,$e0,$ef,$f0,$f7,$f8,$f8,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff + db $00,$fe,$00,$fe,$01,$fd,$03,$7b,$87,$87,$fe,$fe,$fc,$fd,$f8,$f9 + db $80,$80,$80,$80,$80,$80,$80,$80,$00,$00,$01,$e1,$07,$f7,$04,$f4 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$fe,$fe,$07,$07,$07,$77 db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$80 - db $38,$3f,$3c,$3f,$1e,$1f,$0f,$0f,$00,$00,$00,$00,$00,$00,$00,$00 - db $01,$fd,$03,$ff,$07,$ff,$07,$e7,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f - db $fc,$fc,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff - db $f8,$f8,$70,$70,$80,$80,$c1,$c1,$e1,$e1,$e1,$e1,$f1,$f1,$f1,$f1 - db $06,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$7f,$00,$3f,$80,$80,$ff,$ff - db $c0,$c0,$c0,$c0,$e0,$e0,$f0,$f0,$f0,$f0,$f8,$f8,$f8,$f8,$fc,$fc - db $0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f - db $f9,$f9,$f9,$f9,$fd,$fd,$fc,$fc,$fc,$fc,$fc,$fc,$fc,$fc,$fc,$fc - db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$7f,$7f,$3f,$3f,$3f,$3f + db $10,$17,$18,$1b,$1c,$1d,$0e,$0e,$07,$07,$01,$01,$00,$00,$00,$00 + db $00,$fc,$00,$fc,$00,$f8,$00,$f0,$07,$27,$cf,$cf,$cf,$cf,$0f,$0f + db $0f,$0f,$00,$00,$00,$00,$00,$00,$f8,$f8,$ff,$ff,$ff,$ff,$ff,$ff + db $f0,$f1,$00,$01,$00,$01,$00,$01,$00,$01,$02,$02,$83,$83,$c3,$c3 + db $00,$f0,$00,$f3,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$7e,$81,$81 + db $c0,$c0,$c0,$c0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$f0,$f0,$f0,$f0 + db $0f,$0f,$1f,$1f,$1f,$1f,$1f,$1f,$1f,$1f,$1f,$1f,$0f,$0f,$0f,$0f + db $e3,$e3,$f1,$f1,$f0,$f0,$f8,$f8,$f8,$f8,$fc,$fc,$fc,$fc,$fc,$fc + db $ff,$ff,$ff,$ff,$ff,$ff,$7f,$7f,$3f,$3f,$1f,$1f,$0f,$0f,$07,$07 db $0f,$0f,$07,$07,$07,$07,$03,$03,$03,$03,$01,$01,$00,$00,$00,$01 db $fc,$fc,$f8,$f8,$f8,$f8,$f0,$f0,$e0,$e0,$e0,$e0,$c0,$c0,$00,$00 - db $3f,$3f,$1f,$1f,$0f,$0f,$07,$07,$03,$03,$00,$00,$00,$00,$00,$00 - db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$00,$00,$00,$00 - db $ff,$ff,$ff,$ff,$fc,$ff,$f8,$ff,$f0,$ff,$f0,$ff,$00,$1f,$00,$3f - db $80,$bf,$00,$7f,$00,$ff,$00,$ff,$00,$ff,$00,$fe,$06,$fe,$0f,$ff - db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$01,$03,$03,$03,$03 - db $00,$0f,$00,$1f,$00,$1f,$00,$1f,$00,$0f,$80,$8f,$f0,$ff,$f8,$ff + db $01,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $ff,$ff,$00,$00,$00,$0f,$00,$0f,$00,$07,$00,$07,$00,$03,$00,$03 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$01,$01,$01 + db $00,$0f,$00,$1f,$00,$1f,$00,$1f,$00,$0f,$00,$0f,$f0,$ff,$f8,$ff db $00,$f8,$00,$fc,$00,$fe,$00,$fe,$00,$fe,$00,$fe,$00,$fe,$00,$fe - db $00,$3f,$00,$3f,$00,$3f,$00,$3f,$01,$1f,$07,$07,$0f,$0f,$1f,$1f - db $0f,$ff,$1e,$fe,$3c,$fc,$78,$f8,$f0,$f0,$e0,$e0,$e0,$e0,$c0,$c0 - db $03,$03,$01,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $fc,$ff,$fc,$ff,$7c,$7f,$3c,$3f,$0c,$0f,$04,$07,$00,$03,$00,$03 + db $fc,$ff,$3c,$3f,$0c,$0f,$00,$03,$00,$03,$00,$03,$00,$03,$00,$03 db $00,$fc,$00,$f8,$00,$fc,$00,$fc,$00,$fc,$00,$fc,$00,$fc,$00,$fc - db $1f,$1f,$1e,$1e,$0c,$0c,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $80,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $0b,$fb,$0b,$fb,$17,$f7,$07,$e7,$0f,$cf,$1f,$1f,$ff,$ff,$ff,$ff + db $03,$fb,$03,$fb,$03,$fb,$07,$e7,$1f,$df,$3f,$bf,$7f,$7f,$ff,$ff db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$0f,$ff db $00,$fc,$00,$fe,$00,$fe,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$00,$80,$00,$80 @@ -87,37 +79,45 @@ Cups03: db $00,$f8,$00,$f0,$00,$e0,$00,$c0,$00,$80,$00,$00,$00,$00,$00,$00 db $00,$ff,$00,$ff,$00,$fe,$00,$f8,$00,$80,$00,$80,$00,$00,$00,$00 db $00,$c0,$00,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $00,$00,$00,$00,$00,$00,$00,$01,$80,$83,$80,$87,$80,$8f,$80,$9f - db $00,$e0,$00,$e0,$00,$e0,$00,$e0,$00,$e0,$00,$f0,$00,$f0,$00,$f0 + db $00,$f8,$00,$f0,$00,$f0,$00,$e0,$00,$e0,$00,$f0,$00,$f0,$00,$f0 db $00,$f8,$00,$f8,$00,$fc,$00,$fc,$00,$fc,$00,$fc,$00,$fc,$00,$fe - db $00,$fe,$00,$fe,$00,$fe,$00,$ff,$00,$ff,$00,$7f,$00,$3f,$00,$3f - db $00,$3f,$00,$1f,$00,$0f,$00,$0f,$00,$0f,$00,$0f,$00,$0f,$00,$0f - db $e0,$ff,$c0,$ff,$c0,$ff,$c0,$ff,$c0,$ff,$c0,$ff,$e0,$ff,$e0,$ff - db $3e,$fe,$1e,$fe,$0f,$ff,$07,$ff,$03,$ff,$03,$ff,$03,$ff,$03,$ff + db $00,$fe,$00,$fe,$00,$fe,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$7f + db $00,$7f,$00,$3f,$00,$3f,$00,$1f,$00,$0f,$00,$0f,$00,$0f,$00,$0f + db $80,$bf,$00,$7f,$00,$7f,$00,$7f,$00,$7f,$00,$7f,$80,$bf,$80,$bf + db $0c,$ec,$06,$f6,$03,$fb,$01,$fd,$01,$fd,$00,$fe,$00,$fe,$00,$fe db $00,$18,$00,$00,$00,$00,$00,$00,$00,$1c,$00,$1e,$00,$1f,$00,$1f db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80 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,$18,$00,$3c,$00,$3c - db $00,$e0,$00,$e0,$00,$e0,$00,$e0,$00,$e0,$00,$e0,$00,$e0,$00,$e0 + db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$fe,$00,$fc,$00,$f8 db $00,$03,$00,$03,$00,$03,$00,$03,$00,$03,$00,$03,$00,$03,$00,$03 + db $00,$e0,$00,$c0,$00,$80,$00,$80,$00,$00,$00,$00,$00,$00,$00,$00 + db $f0,$f0,$f0,$f0,$f0,$f0,$f0,$f0,$e0,$e8,$c0,$cd,$c0,$df,$c0,$df + db $00,$1f,$00,$3f,$00,$7f,$00,$7f,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $80,$bf,$00,$7f,$00,$ff,$00,$ff,$00,$ff,$00,$fe,$01,$fd,$03,$fb + db $00,$fc,$00,$f0,$00,$80,$40,$40,$60,$60,$e0,$e0,$e0,$e0,$e0,$e0 + db $00,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $07,$e7,$1f,$1f,$ff,$ff,$ff,$ff,$7f,$7f,$00,$00,$00,$00,$00,$00 + db $00,$00,$00,$00,$00,$01,$00,$03,$00,$03,$00,$07,$00,$0f,$00,$1f + db $e0,$e0,$e0,$e0,$c0,$c0,$80,$80,$00,$00,$00,$00,$00,$00,$00,$00 .KeyArtTilesEnd: .BackgroundCopy: ; tiles start at 26 - db $5a, $1a, $1a, $1a, $1a, $1a, $1a, $1a - db $50, $1a, $1a, $1a, $1a, $1a, $1a, $1a - db $51, $1a, $1a, $1a, $59, $1a, $1a, $1a - db $52, $1b, $1c, $1d, $56, $57, $1a, $1a - db $53, $1e, $54, $55, $21, $58, $1a, $1a - db $22, $23, $24, $25, $26, $27, $28, $1a - db $29, $2a, $2b, $2c, $2d, $42, $2e, $1a - db $1a, $2f, $1f, $30, $31, $1f, $20, $4f - db $1a, $32, $43, $33, $34, $35, $36, $37 - db $38, $39, $3a, $1a, $1a, $1a, $3b, $3c - db $3d, $3e, $3f, $1a, $1a, $1a, $40, $41 - db $1a, $5b, $44, $45, $1a, $1a, $1a, $1a - db $46, $47, $48, $49, $1a, $1a, $1a, $1a - db $4a, $4b, $4c, $1a, $1a, $1a, $1a, $1a - db $4d, $4e, $1a, $1a, $1a, $1a, $1a, $1a + db $51, $53, $1a, $1a, $1a, $1a, $1a, $1a + db $47, $1a, $1a, $1a, $1a, $1a, $1a, $1a + db $48, $1a, $1a, $1a, $50, $1a, $1a, $1a + db $49, $1b, $1c, $1d, $4d, $4e, $1a, $1a + db $4a, $1e, $4b, $4c, $20, $4f, $1a, $1a + db $21, $22, $23, $24, $25, $26, $27, $1a + db $28, $29, $2a, $2b, $2c, $3a, $2d, $5a + db $1a, $2e, $1f, $2f, $30, $1f, $54, $55 + db $1a, $31, $3b, $32, $33, $34, $56, $57 + db $35, $36, $37, $1a, $1a, $58, $59, $5b + db $1a, $38, $39, $1a, $1a, $1a, $1a, $1a + db $1a, $52, $3c, $3d, $1a, $1a, $1a, $1a + db $3e, $3f, $40, $41, $1a, $1a, $1a, $1a + db $42, $43, $44, $1a, $1a, $1a, $1a, $1a + db $45, $46, $1a, $1a, $1a, $1a, $1a, $1a db $1a, $1a, $1a, $1a, $1a, $1a, $1a, $1a .BackgroundCopyEnd: \ No newline at end of file diff --git a/cups04.inc b/cups04.inc new file mode 100644 index 0000000..4799e1c --- /dev/null +++ b/cups04.inc @@ -0,0 +1,123 @@ +Cups04: + db 10, "FOUR of " + db 10, "CUPS " + db 10, " " + db 10, "festivals " + db 10, "happiness " + db 10, "gathering " + + db 10, "FOUR of " + db 10, "CUPS " + db 10, "(reversed)" + db 10, "indulgence" + db 10, "canceled " + db 10, "no friends" + + dw .BackgroundCopyEnd - .BackgroundCopy + dw .BackgroundCopy + dw .KeyArtTilesEnd - .KeyArtTiles + dw .KeyArtTiles + dw .SpriteTilesEnd - .SpriteTiles + dw .SpriteTiles + dw .fInit + dw .fUpdate + dw .fDraw + dw .fPrintPrep + +.fInit: ret +.fUpdate: ret +.fDraw: ret +.fPrintPrep: ret + +.SpriteTiles: +.SpriteTilesEnd: + +.KeyArtTiles: + + db $00,$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,$00,$00,$01,$01,$03,$83 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$ff,$ff,$e0,$e0,$c0,$df + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$e0,$e0,$30,$30,$18,$d8 + db $07,$87,$0f,$8f,$0f,$cf,$0f,$cf,$0f,$cf,$0f,$ef,$0f,$ef,$0f,$ef + db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff + db $00,$1f,$00,$1f,$00,$1f,$00,$1f,$80,$9e,$80,$9c,$80,$98,$80,$90 + db $00,$0f,$00,$0f,$00,$0f,$00,$0f,$00,$0f,$00,$0f,$00,$0f,$00,$0f + db $0f,$ef,$0f,$ef,$0f,$ef,$0f,$ef,$0f,$ef,$07,$e7,$03,$fb,$01,$fd + db $c0,$df,$e0,$ef,$f0,$f7,$f8,$f8,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff + db $00,$fe,$00,$fe,$01,$fd,$03,$7b,$87,$87,$fe,$fe,$fc,$fd,$f8,$f9 + db $80,$80,$80,$80,$80,$80,$80,$80,$00,$00,$01,$e1,$07,$f7,$04,$f4 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$fe,$fe,$07,$07,$07,$77 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$80 + db $10,$17,$18,$1b,$1c,$1d,$0e,$0e,$07,$07,$01,$01,$00,$00,$00,$00 + db $00,$fc,$00,$fc,$00,$f8,$00,$f0,$07,$27,$cf,$cf,$cf,$cf,$0f,$0f + db $0f,$0f,$00,$00,$00,$00,$00,$00,$f8,$f8,$ff,$ff,$ff,$ff,$ff,$ff + db $f0,$f1,$00,$01,$00,$01,$00,$01,$00,$01,$02,$02,$83,$83,$c3,$c3 + db $00,$f0,$00,$f3,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$7e,$81,$81 + db $c0,$c0,$c0,$c0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$f0,$f0,$f0,$f0 + db $0f,$0f,$1f,$1f,$1f,$1f,$1f,$1f,$1f,$1f,$1f,$1f,$0f,$0f,$0f,$0f + db $e3,$e3,$f1,$f1,$f0,$f0,$f8,$f8,$f8,$f8,$fc,$fc,$fc,$fc,$fc,$fc + db $ff,$ff,$ff,$ff,$ff,$ff,$7f,$7f,$3f,$3f,$1f,$1f,$0f,$0f,$07,$07 + db $0f,$0f,$07,$07,$07,$07,$03,$03,$03,$03,$01,$01,$00,$00,$00,$01 + db $fc,$fc,$f8,$f8,$f8,$f8,$f0,$f0,$e0,$e0,$e0,$e0,$c0,$c0,$00,$00 + db $01,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $ff,$ff,$00,$00,$00,$0f,$00,$0f,$00,$07,$00,$07,$00,$03,$00,$03 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$01,$01,$01 + db $00,$0f,$00,$1f,$00,$1f,$00,$1f,$00,$0f,$00,$0f,$f0,$ff,$f8,$ff + db $00,$f8,$00,$fc,$00,$fe,$00,$fe,$00,$fe,$00,$fe,$00,$fe,$00,$fe + db $fc,$ff,$3c,$3f,$0c,$0f,$00,$03,$00,$03,$00,$03,$00,$03,$00,$03 + db $00,$fc,$00,$f8,$00,$fc,$00,$fc,$00,$fc,$00,$fc,$00,$fc,$00,$fc + db $03,$fb,$03,$fb,$03,$fb,$07,$e7,$1f,$df,$3f,$bf,$7f,$7f,$ff,$ff + db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$0f,$ff + db $00,$fc,$00,$fe,$00,$fe,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$00,$80,$00,$80 + db $00,$00,$00,$00,$00,$03,$00,$07,$00,$3f,$00,$7f,$00,$ff,$00,$ff + db $00,$1f,$00,$3f,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$fe + db $00,$c0,$00,$c0,$00,$c0,$00,$c0,$00,$c0,$00,$80,$00,$00,$00,$00 + db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$fe,$00,$fc,$00,$f0 + db $00,$f8,$00,$f0,$00,$e0,$00,$c0,$00,$80,$00,$00,$00,$00,$00,$00 + db $00,$ff,$00,$ff,$00,$fe,$00,$f8,$00,$80,$00,$80,$00,$00,$00,$00 + db $00,$c0,$00,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $00,$f8,$00,$f0,$00,$f0,$00,$e0,$00,$e0,$00,$f0,$00,$f0,$00,$f0 + db $00,$f8,$00,$f8,$00,$fc,$00,$fc,$00,$fc,$00,$fc,$00,$fc,$00,$fe + db $00,$fe,$00,$fe,$00,$fe,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$7f + db $00,$7f,$00,$3f,$00,$3f,$00,$1f,$00,$0f,$00,$0f,$00,$0f,$00,$0f + db $80,$bf,$00,$7f,$00,$7f,$00,$7f,$00,$7f,$00,$7f,$80,$bf,$80,$bf + db $0c,$ec,$06,$f6,$03,$fb,$01,$fd,$01,$fd,$00,$fe,$00,$fe,$00,$fe + db $00,$18,$00,$00,$00,$00,$00,$00,$00,$1c,$00,$1e,$00,$1f,$00,$1f + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80 + 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,$18,$00,$3c,$00,$3c + db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$fe,$00,$fc,$00,$f8 + db $00,$03,$00,$03,$00,$03,$00,$03,$00,$03,$00,$03,$00,$03,$00,$03 + db $00,$e0,$00,$c0,$00,$80,$00,$80,$00,$00,$00,$00,$00,$00,$00,$00 + db $f0,$f0,$f0,$f0,$f0,$f0,$f0,$f0,$e0,$e8,$c0,$cd,$c0,$df,$c0,$df + db $00,$1f,$00,$3f,$00,$7f,$00,$7f,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $80,$bf,$00,$7f,$00,$ff,$00,$ff,$00,$ff,$00,$fe,$01,$fd,$03,$fb + db $00,$fc,$00,$f0,$00,$80,$40,$40,$60,$60,$e0,$e0,$e0,$e0,$e0,$e0 + db $00,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $07,$e7,$1f,$1f,$ff,$ff,$ff,$ff,$7f,$7f,$00,$00,$00,$00,$00,$00 + db $00,$00,$00,$00,$00,$01,$00,$03,$00,$03,$00,$07,$00,$0f,$00,$1f + db $e0,$e0,$e0,$e0,$c0,$c0,$80,$80,$00,$00,$00,$00,$00,$00,$00,$00 +.KeyArtTilesEnd: + +.BackgroundCopy: ; tiles start at 26 + db $51, $53, $1a, $1a, $1a, $1a, $1a, $1a + db $47, $1a, $1a, $1a, $1a, $1a, $1a, $1a + db $48, $1a, $1a, $1a, $50, $1a, $1a, $1a + db $49, $1b, $1c, $1d, $4d, $4e, $1a, $1a + db $4a, $1e, $4b, $4c, $20, $4f, $1a, $1a + db $21, $22, $23, $24, $25, $26, $27, $1a + db $28, $29, $2a, $2b, $2c, $3a, $2d, $5a + db $1a, $2e, $1f, $2f, $30, $1f, $54, $55 + db $1a, $31, $3b, $32, $33, $34, $56, $57 + db $35, $36, $37, $1a, $1a, $58, $59, $5b + db $1a, $38, $39, $1a, $1a, $1a, $1a, $1a + db $1a, $52, $3c, $3d, $1a, $1a, $1a, $1a + db $3e, $3f, $40, $41, $1a, $1a, $1a, $1a + db $42, $43, $44, $1a, $1a, $1a, $1a, $1a + db $45, $46, $1a, $1a, $1a, $1a, $1a, $1a + db $1a, $1a, $1a, $1a, $1a, $1a, $1a, $1a + +.BackgroundCopyEnd: \ No newline at end of file diff --git a/itchsrc/Archive.zip b/itchsrc/Archive.zip new file mode 100644 index 0000000..b6d77e1 Binary files /dev/null and b/itchsrc/Archive.zip differ diff --git a/itchsrc/binjgb.js b/itchsrc/binjgb.js new file mode 100644 index 0000000..3b58136 --- /dev/null +++ b/itchsrc/binjgb.js @@ -0,0 +1,21 @@ + +var Binjgb = (() => { + var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined; + + return ( +function(Binjgb) { + Binjgb = Binjgb || {}; + +var Module=typeof Binjgb!="undefined"?Binjgb:{};var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=true;var ENVIRONMENT_IS_WORKER=false;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function keepRuntimeAlive(){return noExitRuntime}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}var wasmBinaryFile;wasmBinaryFile="binjgb.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["g"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["F"];addOnInit(Module["asm"]["h"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);readyPromiseReject(e)}}instantiateAsync().catch(readyPromiseReject);return{}}function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module)}}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}var SYSCALLS={varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret}};function _proc_exit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}function exitJS(status,implicit){EXITSTATUS=status;_proc_exit(status)}var _exit=exitJS;function _fd_close(fd){return 52}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){return 70}var printCharBuffers=[null,[],[]];function printChar(stream,curr){var buffer=printCharBuffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;for(var j=0;j>2]=num;return 0}var asmLibraryArg={"f":_emscripten_memcpy_big,"d":_emscripten_resize_heap,"b":_exit,"e":_fd_close,"c":_fd_seek,"a":_fd_write};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["h"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["i"]).apply(null,arguments)};var _file_data_delete=Module["_file_data_delete"]=function(){return(_file_data_delete=Module["_file_data_delete"]=Module["asm"]["j"]).apply(null,arguments)};var _emulator_set_builtin_palette=Module["_emulator_set_builtin_palette"]=function(){return(_emulator_set_builtin_palette=Module["_emulator_set_builtin_palette"]=Module["asm"]["k"]).apply(null,arguments)};var _emulator_was_ext_ram_updated=Module["_emulator_was_ext_ram_updated"]=function(){return(_emulator_was_ext_ram_updated=Module["_emulator_was_ext_ram_updated"]=Module["asm"]["l"]).apply(null,arguments)};var _emulator_read_ext_ram=Module["_emulator_read_ext_ram"]=function(){return(_emulator_read_ext_ram=Module["_emulator_read_ext_ram"]=Module["asm"]["m"]).apply(null,arguments)};var _emulator_write_ext_ram=Module["_emulator_write_ext_ram"]=function(){return(_emulator_write_ext_ram=Module["_emulator_write_ext_ram"]=Module["asm"]["n"]).apply(null,arguments)};var _emulator_delete=Module["_emulator_delete"]=function(){return(_emulator_delete=Module["_emulator_delete"]=Module["asm"]["o"]).apply(null,arguments)};var _emulator_get_PC=Module["_emulator_get_PC"]=function(){return(_emulator_get_PC=Module["_emulator_get_PC"]=Module["asm"]["p"]).apply(null,arguments)};var _emulator_get_A=Module["_emulator_get_A"]=function(){return(_emulator_get_A=Module["_emulator_get_A"]=Module["asm"]["q"]).apply(null,arguments)};var _emulator_get_BC=Module["_emulator_get_BC"]=function(){return(_emulator_get_BC=Module["_emulator_get_BC"]=Module["asm"]["r"]).apply(null,arguments)};var _emulator_get_DE=Module["_emulator_get_DE"]=function(){return(_emulator_get_DE=Module["_emulator_get_DE"]=Module["asm"]["s"]).apply(null,arguments)};var _emulator_get_HL=Module["_emulator_get_HL"]=function(){return(_emulator_get_HL=Module["_emulator_get_HL"]=Module["asm"]["t"]).apply(null,arguments)};var _emulator_get_F=Module["_emulator_get_F"]=function(){return(_emulator_get_F=Module["_emulator_get_F"]=Module["asm"]["u"]).apply(null,arguments)};var _emulator_get_SP=Module["_emulator_get_SP"]=function(){return(_emulator_get_SP=Module["_emulator_get_SP"]=Module["asm"]["v"]).apply(null,arguments)};var _emulator_set_PC=Module["_emulator_set_PC"]=function(){return(_emulator_set_PC=Module["_emulator_set_PC"]=Module["asm"]["w"]).apply(null,arguments)};var _emulator_get_wram_ptr=Module["_emulator_get_wram_ptr"]=function(){return(_emulator_get_wram_ptr=Module["_emulator_get_wram_ptr"]=Module["asm"]["x"]).apply(null,arguments)};var _emulator_get_hram_ptr=Module["_emulator_get_hram_ptr"]=function(){return(_emulator_get_hram_ptr=Module["_emulator_get_hram_ptr"]=Module["asm"]["y"]).apply(null,arguments)};var _emulator_read_mem=Module["_emulator_read_mem"]=function(){return(_emulator_read_mem=Module["_emulator_read_mem"]=Module["asm"]["z"]).apply(null,arguments)};var _emulator_write_mem=Module["_emulator_write_mem"]=function(){return(_emulator_write_mem=Module["_emulator_write_mem"]=Module["asm"]["A"]).apply(null,arguments)};var _emulator_set_breakpoint=Module["_emulator_set_breakpoint"]=function(){return(_emulator_set_breakpoint=Module["_emulator_set_breakpoint"]=Module["asm"]["B"]).apply(null,arguments)};var _emulator_clear_breakpoints=Module["_emulator_clear_breakpoints"]=function(){return(_emulator_clear_breakpoints=Module["_emulator_clear_breakpoints"]=Module["asm"]["C"]).apply(null,arguments)};var _emulator_render_vram=Module["_emulator_render_vram"]=function(){return(_emulator_render_vram=Module["_emulator_render_vram"]=Module["asm"]["D"]).apply(null,arguments)};var _emulator_render_background=Module["_emulator_render_background"]=function(){return(_emulator_render_background=Module["_emulator_render_background"]=Module["asm"]["E"]).apply(null,arguments)};var _joypad_new=Module["_joypad_new"]=function(){return(_joypad_new=Module["_joypad_new"]=Module["asm"]["G"]).apply(null,arguments)};var _joypad_delete=Module["_joypad_delete"]=function(){return(_joypad_delete=Module["_joypad_delete"]=Module["asm"]["H"]).apply(null,arguments)};var _rewind_append=Module["_rewind_append"]=function(){return(_rewind_append=Module["_rewind_append"]=Module["asm"]["I"]).apply(null,arguments)};var _rewind_delete=Module["_rewind_delete"]=function(){return(_rewind_delete=Module["_rewind_delete"]=Module["asm"]["J"]).apply(null,arguments)};var _emulator_new_simple=Module["_emulator_new_simple"]=function(){return(_emulator_new_simple=Module["_emulator_new_simple"]=Module["asm"]["K"]).apply(null,arguments)};var _emulator_get_ticks_f64=Module["_emulator_get_ticks_f64"]=function(){return(_emulator_get_ticks_f64=Module["_emulator_get_ticks_f64"]=Module["asm"]["L"]).apply(null,arguments)};var _emulator_run_until_f64=Module["_emulator_run_until_f64"]=function(){return(_emulator_run_until_f64=Module["_emulator_run_until_f64"]=Module["asm"]["M"]).apply(null,arguments)};var _rewind_get_newest_ticks_f64=Module["_rewind_get_newest_ticks_f64"]=function(){return(_rewind_get_newest_ticks_f64=Module["_rewind_get_newest_ticks_f64"]=Module["asm"]["N"]).apply(null,arguments)};var _rewind_get_oldest_ticks_f64=Module["_rewind_get_oldest_ticks_f64"]=function(){return(_rewind_get_oldest_ticks_f64=Module["_rewind_get_oldest_ticks_f64"]=Module["asm"]["O"]).apply(null,arguments)};var _emulator_set_default_joypad_callback=Module["_emulator_set_default_joypad_callback"]=function(){return(_emulator_set_default_joypad_callback=Module["_emulator_set_default_joypad_callback"]=Module["asm"]["P"]).apply(null,arguments)};var _emulator_set_bw_palette_simple=Module["_emulator_set_bw_palette_simple"]=function(){return(_emulator_set_bw_palette_simple=Module["_emulator_set_bw_palette_simple"]=Module["asm"]["Q"]).apply(null,arguments)};var _rewind_new_simple=Module["_rewind_new_simple"]=function(){return(_rewind_new_simple=Module["_rewind_new_simple"]=Module["asm"]["R"]).apply(null,arguments)};var _rewind_begin=Module["_rewind_begin"]=function(){return(_rewind_begin=Module["_rewind_begin"]=Module["asm"]["S"]).apply(null,arguments)};var _emulator_set_rewind_joypad_callback=Module["_emulator_set_rewind_joypad_callback"]=function(){return(_emulator_set_rewind_joypad_callback=Module["_emulator_set_rewind_joypad_callback"]=Module["asm"]["T"]).apply(null,arguments)};var _rewind_to_ticks_wrapper=Module["_rewind_to_ticks_wrapper"]=function(){return(_rewind_to_ticks_wrapper=Module["_rewind_to_ticks_wrapper"]=Module["asm"]["U"]).apply(null,arguments)};var _rewind_end=Module["_rewind_end"]=function(){return(_rewind_end=Module["_rewind_end"]=Module["asm"]["V"]).apply(null,arguments)};var _set_joyp_up=Module["_set_joyp_up"]=function(){return(_set_joyp_up=Module["_set_joyp_up"]=Module["asm"]["W"]).apply(null,arguments)};var _set_joyp_down=Module["_set_joyp_down"]=function(){return(_set_joyp_down=Module["_set_joyp_down"]=Module["asm"]["X"]).apply(null,arguments)};var _set_joyp_left=Module["_set_joyp_left"]=function(){return(_set_joyp_left=Module["_set_joyp_left"]=Module["asm"]["Y"]).apply(null,arguments)};var _set_joyp_right=Module["_set_joyp_right"]=function(){return(_set_joyp_right=Module["_set_joyp_right"]=Module["asm"]["Z"]).apply(null,arguments)};var _set_joyp_B=Module["_set_joyp_B"]=function(){return(_set_joyp_B=Module["_set_joyp_B"]=Module["asm"]["_"]).apply(null,arguments)};var _set_joyp_A=Module["_set_joyp_A"]=function(){return(_set_joyp_A=Module["_set_joyp_A"]=Module["asm"]["$"]).apply(null,arguments)};var _set_joyp_start=Module["_set_joyp_start"]=function(){return(_set_joyp_start=Module["_set_joyp_start"]=Module["asm"]["aa"]).apply(null,arguments)};var _set_joyp_select=Module["_set_joyp_select"]=function(){return(_set_joyp_select=Module["_set_joyp_select"]=Module["asm"]["ba"]).apply(null,arguments)};var _get_frame_buffer_ptr=Module["_get_frame_buffer_ptr"]=function(){return(_get_frame_buffer_ptr=Module["_get_frame_buffer_ptr"]=Module["asm"]["ca"]).apply(null,arguments)};var _get_frame_buffer_size=Module["_get_frame_buffer_size"]=function(){return(_get_frame_buffer_size=Module["_get_frame_buffer_size"]=Module["asm"]["da"]).apply(null,arguments)};var _get_sgb_frame_buffer_ptr=Module["_get_sgb_frame_buffer_ptr"]=function(){return(_get_sgb_frame_buffer_ptr=Module["_get_sgb_frame_buffer_ptr"]=Module["asm"]["ea"]).apply(null,arguments)};var _get_sgb_frame_buffer_size=Module["_get_sgb_frame_buffer_size"]=function(){return(_get_sgb_frame_buffer_size=Module["_get_sgb_frame_buffer_size"]=Module["asm"]["fa"]).apply(null,arguments)};var _get_audio_buffer_ptr=Module["_get_audio_buffer_ptr"]=function(){return(_get_audio_buffer_ptr=Module["_get_audio_buffer_ptr"]=Module["asm"]["ga"]).apply(null,arguments)};var _get_audio_buffer_capacity=Module["_get_audio_buffer_capacity"]=function(){return(_get_audio_buffer_capacity=Module["_get_audio_buffer_capacity"]=Module["asm"]["ha"]).apply(null,arguments)};var _ext_ram_file_data_new=Module["_ext_ram_file_data_new"]=function(){return(_ext_ram_file_data_new=Module["_ext_ram_file_data_new"]=Module["asm"]["ia"]).apply(null,arguments)};var _get_file_data_ptr=Module["_get_file_data_ptr"]=function(){return(_get_file_data_ptr=Module["_get_file_data_ptr"]=Module["asm"]["ja"]).apply(null,arguments)};var _get_file_data_size=Module["_get_file_data_size"]=function(){return(_get_file_data_size=Module["_get_file_data_size"]=Module["asm"]["ka"]).apply(null,arguments)};var _set_log_apu_writes=Module["_set_log_apu_writes"]=function(){return(_set_log_apu_writes=Module["_set_log_apu_writes"]=Module["asm"]["la"]).apply(null,arguments)};var _get_apu_log_data_size=Module["_get_apu_log_data_size"]=function(){return(_get_apu_log_data_size=Module["_get_apu_log_data_size"]=Module["asm"]["ma"]).apply(null,arguments)};var _get_apu_log_data_ptr=Module["_get_apu_log_data_ptr"]=function(){return(_get_apu_log_data_ptr=Module["_get_apu_log_data_ptr"]=Module["asm"]["na"]).apply(null,arguments)};var _reset_apu_log=Module["_reset_apu_log"]=function(){return(_reset_apu_log=Module["_reset_apu_log"]=Module["asm"]["oa"]).apply(null,arguments)};var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run(); + + + return Binjgb.ready +} +); +})(); +if (typeof exports === 'object' && typeof module === 'object') + module.exports = Binjgb; +else if (typeof define === 'function' && define['amd']) + define([], function() { return Binjgb; }); +else if (typeof exports === 'object') + exports["Binjgb"] = Binjgb; diff --git a/itchsrc/binjgb.wasm b/itchsrc/binjgb.wasm new file mode 100644 index 0000000..32a01bc Binary files /dev/null and b/itchsrc/binjgb.wasm differ diff --git a/itchsrc/index.html b/itchsrc/index.html new file mode 100644 index 0000000..2abae81 --- /dev/null +++ b/itchsrc/index.html @@ -0,0 +1,31 @@ + + + + + + + + binjgb (simple) + + +
+ No Canvas Support +
+
+
+
+
+
+
+
+
Select
+
Start
+
B
+
A
+
+ + + diff --git a/itchsrc/lcdt.gb b/itchsrc/lcdt.gb new file mode 100644 index 0000000..01b0288 Binary files /dev/null and b/itchsrc/lcdt.gb differ diff --git a/itchsrc/simple.css b/itchsrc/simple.css new file mode 100644 index 0000000..d95b3a2 --- /dev/null +++ b/itchsrc/simple.css @@ -0,0 +1,249 @@ +/* copied from + * https://github.com/chrismaltby/gb-studio/blob/v2beta/appData/js-emulator/css/style.css + * (see LICENSE.gbstudio) + * + * modifications are marked with binjgb below. + */ +body { + background: #031921; + color: #fff; + font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", + Helvetica, Arial, "Lucida Grande", sans-serif; + font-weight: 300; + margin: 0; /* binjgb */ + padding: 0; /* binjgb */ + touch-action: none; + -webkit-touch-callout: none; + user-select: none; + -webkit-user-select: none; /* binjgb */ + overflow: hidden; +} + +#game { + display: flex; + flex-direction: column; + position: absolute; + width: 100%; + height: 100%; + touch-action: none; +} + +#game canvas { + object-fit: contain; + image-rendering: -moz-crisp-edges; + image-rendering: -webkit-crisp-edges; + image-rendering: pixelated; + image-rendering: crisp-edges; +} + +#controller { + display: none; + position: fixed; + bottom: 0px; + height: 210px; + width: 100%; + touch-action: none; + opacity: 0.8; +} + +#controller_dpad { + position: absolute; + bottom: 20px; + left: 0px; + width: 184px; + height: 184px; +} + +#controller_dpad:before { + content: ""; + display: block; + width: 48px; + height: 48px; + background: #5c5c5c; + background: radial-gradient( + ellipse at center, + #5c5c5c 0%, + #555 59%, + #5c5c5c 60% + ); + position: absolute; + left: 68px; + top: 68px; +} + +#controller_left { + position: absolute; + left: 20px; + top: 68px; + width: 48px; + height: 48px; + background: #666; + background: radial-gradient(ellipse at center, #666 0%, #5c5c5c 80%); + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} + +#controller_right { + position: absolute; + left: 116px; + top: 68px; + width: 48px; + height: 48px; + background: #666; + background: radial-gradient(ellipse at center, #666 0%, #5c5c5c 80%); + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} + +#controller_up { + position: absolute; + left: 68px; + top: 20px; + width: 48px; + height: 48px; + background: #666; + background: radial-gradient(ellipse at center, #666 0%, #5c5c5c 80%); + border-top-left-radius: 4px; + border-top-right-radius: 4px; +} + +#controller_down { + position: absolute; + left: 68px; + top: 116px; + width: 48px; + height: 48px; + background: #666; + background: radial-gradient(ellipse at center, #666 0%, #5c5c5c 80%); + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; +} + +#controller_a { + position: absolute; + bottom: 110px; + right: 20px; +} + +#controller_b { + position: absolute; + bottom: 80px; + right: 100px; +} + +.roundBtn { + display: flex; + justify-content: center; + align-items: center; + font-weight: bold; + font-size: 32px; + color: #440f1f; + line-height: 64px; + width: 64px; + height: 64px; + border-radius: 64px; + background: #870a4c; + background: radial-gradient(ellipse at center, #ab1465 0%, #8b1e57 100%); + box-shadow: 0px 4px 5px rgba(0, 0, 0, 0.2); +} + +.capsuleBtn { + font-weight: bold; + font-size: 10px; + color: #111; + display: flex; + justify-content: center; + align-items: center; + line-height: 40px; + text-transform: uppercase; + width: 64px; + height: 32px; + border-radius: 40px; + background: #222; + background: radial-gradient(ellipse at center, #666 0%, #555 100%); + box-shadow: 0px 4px 5px rgba(0, 0, 0, 0.2); +} + +#controller_start { + position: absolute; + bottom: 20px; + right: 15px; +} + +#controller_select { + position: absolute; + bottom: 20px; + right: 100px; +} + +.btnPressed { + opacity: 0.5; +} + +@media only screen and (max-device-width: 320px) and (orientation: portrait) { + #controller_dpad { + left: -5px; + bottom: -5px; + } + + #controller_a { + right: 5px; + bottom: 95px; + } + + #controller_b { + right: 80px; + } + + #controller_start { + right: 5px; + } + + #controller_select { + right: 80px; + } +} + +@media only screen and (max-width: 500px) and (max-height: 400px) { + #controller { + display: none; + } +} + +/* Small devices in landscape */ +@media only screen and (max-device-width: 300px) and (orientation: landscape) { + html, + body { + height: 100%; + } + body { + display: flex; + justify-content: center; + align-items: center; + } + + #game:after { + content: "PLEASE ROTATE ↻"; + font-size: 24px; + font-weight: bold; + color: #fff; + } + + #game canvas { + display: none; + max-width: 480px; + } + + #controller { + display: none; + } +} + +/* Devices large enough for landscape */ +@media only screen and (min-width: 300px) and (orientation: landscape) { + #controller { + bottom: 50%; + transform: translateY(50%); + opacity: 0.5; + } +} diff --git a/itchsrc/simple.js b/itchsrc/simple.js new file mode 100644 index 0000000..1c90fc9 --- /dev/null +++ b/itchsrc/simple.js @@ -0,0 +1,818 @@ +/* + * Copyright (C) 2020 Ben Smith + * + * This software may be modified and distributed under the terms + * of the MIT license. See the LICENSE file for details. + * + * + * Some code from GB-Studio, see LICENSE.gbstudio + */ +"use strict"; + +// User configurable. +const ROM_FILENAME = 'lcdt.gb'; +const ENABLE_FAST_FORWARD = false; +const ENABLE_REWIND = false; +const ENABLE_PAUSE = false; +const ENABLE_SWITCH_PALETTES = true; +const OSGP_DEADZONE = 0.1; // On screen gamepad deadzone range +const CGB_COLOR_CURVE = 2; // 0: none, 1: Sameboy "Emulate Hardware" 2: Gambatte/Gameboy Online + +// List of DMG palettes to switch between. By default it includes all 84 +// built-in palettes. If you want to restrict this, change it to an array of +// the palettes you want to use and change DEFAULT_PALETTE_IDX to the index of the +// default palette in that list. +// +// Example: (only allow one palette with index 16): +// const DEFAULT_PALETTE_IDX = 0; +// const PALETTES = [16]; +// +// Example: (allow three palettes, 16, 32, 64, with default 32): +// const DEFAULT_PALETTE_IDX = 1; +// const PALETTES = [16, 32, 64]; +// +const DEFAULT_PALETTE_IDX = 79; +const PALETTES = [ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, +]; + +// It's probably OK to leave these alone. But you can tweak them to get better +// rewind performance. +const REWIND_FRAMES_PER_BASE_STATE = 45; // How many delta frames until keyframe +const REWIND_BUFFER_CAPACITY = 4 * 1024 * 1024; // Total rewind capacity +const REWIND_FACTOR = 1.5; // How fast is rewind compared to normal speed +const REWIND_UPDATE_MS = 16; // Rewind setInterval rate + +// Probably OK to leave these alone too. +const AUDIO_FRAMES = 4096; // Number of audio frames pushed per buffer +const AUDIO_LATENCY_SEC = 0.1; +const MAX_UPDATE_SEC = 5 / 60; // Max. time to run emulator per step (== 5 frames) + +// Constants +const RESULT_OK = 0; +const RESULT_ERROR = 1; +const SCREEN_WIDTH = 160; +const SCREEN_HEIGHT = 144; +const CPU_TICKS_PER_SECOND = 4194304; +const EVENT_NEW_FRAME = 1; +const EVENT_AUDIO_BUFFER_FULL = 2; +const EVENT_UNTIL_TICKS = 4; + +const $ = document.querySelector.bind(document); +let emulator = null; + +const controllerEl = $('#controller'); +const dpadEl = $('#controller_dpad'); +const selectEl = $('#controller_select'); +const startEl = $('#controller_start'); +const bEl = $('#controller_b'); +const aEl = $('#controller_a'); + +const binjgbPromise = Binjgb(); + +// Extract stuff from the vue.js implementation in demo.js. +class VM { + constructor() { + this.ticks = 0; + this.extRamUpdated = false; + this.paused_ = false; + this.volume = 0.5; + this.palIdx = DEFAULT_PALETTE_IDX; + this.rewind = { + minTicks: 0, + maxTicks: 0, + }; + setInterval(() => { + if (this.extRamUpdated) { + this.updateExtRam(); + this.extRamUpdated = false; + } + }, 1000); + } + + get paused() { return this.paused_; } + set paused(newPaused) { + let oldPaused = this.paused_; + this.paused_ = newPaused; + if (!emulator) return; + if (newPaused == oldPaused) return; + if (newPaused) { + emulator.pause(); + this.ticks = emulator.ticks; + this.rewind.minTicks = emulator.rewind.oldestTicks; + this.rewind.maxTicks = emulator.rewind.newestTicks; + } else { + emulator.resume(); + } + } + + togglePause() { + this.paused = !this.paused; + } + + updateExtRam() { + if (!emulator) return; + const extram = emulator.getExtRam(); + localStorage.setItem('extram', JSON.stringify(Array.from(extram))); + } +}; + +const vm = new VM(); + +// Load a ROM. +(async function go() { + let response = await fetch(ROM_FILENAME); + let romBuffer = await response.arrayBuffer(); + const extRam = new Uint8Array(JSON.parse(localStorage.getItem('extram'))); + Emulator.start(await binjgbPromise, romBuffer, extRam); + emulator.setBuiltinPalette(vm.palIdx); +})(); + + +// Copied from demo.js +function makeWasmBuffer(module, ptr, size) { + return new Uint8Array(module.HEAP8.buffer, ptr, size); +} + +class Emulator { + static start(module, romBuffer, extRamBuffer) { + Emulator.stop(); + emulator = new Emulator(module, romBuffer, extRamBuffer); + emulator.run(); + } + + static stop() { + if (emulator) { + emulator.destroy(); + emulator = null; + } + } + + constructor(module, romBuffer, extRamBuffer) { + this.module = module; + // Align size up to 32k. + const size = (romBuffer.byteLength + 0x7fff) & ~0x7fff; + this.romDataPtr = this.module._malloc(size); + makeWasmBuffer(this.module, this.romDataPtr, size) + .fill(0) + .set(new Uint8Array(romBuffer)); + this.e = this.module._emulator_new_simple( + this.romDataPtr, size, Audio.ctx.sampleRate, AUDIO_FRAMES, + CGB_COLOR_CURVE); + if (this.e == 0) { + throw new Error('Invalid ROM.'); + } + + this.audio = new Audio(module, this.e); + this.video = new Video(module, this.e, $('canvas')); + this.rewind = new Rewind(module, this.e); + this.rewindIntervalId = 0; + + this.lastRafSec = 0; + this.leftoverTicks = 0; + this.fps = 60; + this.fastForward = false; + + if (extRamBuffer) { + this.loadExtRam(extRamBuffer); + } + + this.bindKeys(); + this.bindTouch(); + + this.touchEnabled = 'ontouchstart' in document.documentElement; + this.updateOnscreenGamepad(); + } + + destroy() { + this.unbindTouch(); + this.unbindKeys(); + this.cancelAnimationFrame(); + clearInterval(this.rewindIntervalId); + this.rewind.destroy(); + this.module._emulator_delete(this.e); + this.module._free(this.romDataPtr); + } + + withNewFileData(cb) { + const fileDataPtr = this.module._ext_ram_file_data_new(this.e); + const buffer = makeWasmBuffer( + this.module, this.module._get_file_data_ptr(fileDataPtr), + this.module._get_file_data_size(fileDataPtr)); + const result = cb(fileDataPtr, buffer); + this.module._file_data_delete(fileDataPtr); + return result; + } + + loadExtRam(extRamBuffer) { + this.withNewFileData((fileDataPtr, buffer) => { + if (buffer.byteLength === extRamBuffer.byteLength) { + buffer.set(new Uint8Array(extRamBuffer)); + this.module._emulator_read_ext_ram(this.e, fileDataPtr); + } + }); + } + + getExtRam() { + return this.withNewFileData((fileDataPtr, buffer) => { + this.module._emulator_write_ext_ram(this.e, fileDataPtr); + return new Uint8Array(buffer); + }); + } + + get isPaused() { + return this.rafCancelToken === null; + } + + pause() { + if (!this.isPaused) { + this.cancelAnimationFrame(); + this.audio.pause(); + this.beginRewind(); + } + } + + resume() { + if (this.isPaused) { + this.endRewind(); + this.requestAnimationFrame(); + this.audio.resume(); + } + } + + setBuiltinPalette(palIdx) { + this.module._emulator_set_builtin_palette(this.e, PALETTES[palIdx]); + } + + get isRewinding() { + return ENABLE_REWIND && this.rewind.isRewinding; + } + + beginRewind() { + if (!ENABLE_REWIND) { return; } + this.rewind.beginRewind(); + } + + rewindToTicks(ticks) { + if (!ENABLE_REWIND) { return; } + if (this.rewind.rewindToTicks(ticks)) { + this.runUntil(ticks); + this.video.renderTexture(); + } + } + + endRewind() { + if (!ENABLE_REWIND) { return; } + this.rewind.endRewind(); + this.lastRafSec = 0; + this.leftoverTicks = 0; + this.audio.startSec = 0; + } + + set autoRewind(enabled) { + if (!ENABLE_REWIND) { return; } + if (enabled) { + this.rewindIntervalId = setInterval(() => { + const oldest = this.rewind.oldestTicks; + const start = this.ticks; + const delta = + REWIND_FACTOR * REWIND_UPDATE_MS / 1000 * CPU_TICKS_PER_SECOND; + const rewindTo = Math.max(oldest, start - delta); + this.rewindToTicks(rewindTo); + vm.ticks = emulator.ticks; + }, REWIND_UPDATE_MS); + } else { + clearInterval(this.rewindIntervalId); + this.rewindIntervalId = 0; + } + } + + requestAnimationFrame() { + this.rafCancelToken = requestAnimationFrame(this.rafCallback.bind(this)); + } + + cancelAnimationFrame() { + cancelAnimationFrame(this.rafCancelToken); + this.rafCancelToken = null; + } + + run() { + this.requestAnimationFrame(); + } + + get ticks() { + return this.module._emulator_get_ticks_f64(this.e); + } + + runUntil(ticks) { + while (true) { + const event = this.module._emulator_run_until_f64(this.e, ticks); + if (event & EVENT_NEW_FRAME) { + this.rewind.pushBuffer(); + this.video.uploadTexture(); + } + if ((event & EVENT_AUDIO_BUFFER_FULL) && !this.isRewinding) { + this.audio.pushBuffer(); + } + if (event & EVENT_UNTIL_TICKS) { + break; + } + } + if (this.module._emulator_was_ext_ram_updated(this.e)) { + vm.extRamUpdated = true; + } + } + + rafCallback(startMs) { + this.requestAnimationFrame(); + let deltaSec = 0; + if (!this.isRewinding) { + const startSec = startMs / 1000; + deltaSec = Math.max(startSec - (this.lastRafSec || startSec), 0); + + const startTimeMs = performance.now(); + const deltaTicks = + Math.min(deltaSec, MAX_UPDATE_SEC) * CPU_TICKS_PER_SECOND; + let runUntilTicks = this.ticks + deltaTicks - this.leftoverTicks; + this.runUntil(runUntilTicks); + const deltaTimeMs = performance.now() - startTimeMs; + const deltaTimeSec = deltaTimeMs / 1000; + + if (this.fastForward) { + // Estimate how much faster we can run in fast-forward, keeping the + // same rAF update rate. + const speedUp = (deltaTicks / CPU_TICKS_PER_SECOND) / deltaTimeSec; + const extraFrames = Math.floor(speedUp - deltaTimeSec); + const extraTicks = extraFrames * deltaTicks; + runUntilTicks = this.ticks + extraTicks - this.leftoverTicks; + this.runUntil(runUntilTicks); + } + + this.leftoverTicks = (this.ticks - runUntilTicks) | 0; + this.lastRafSec = startSec; + } + const lerp = (from, to, alpha) => (alpha * from) + (1 - alpha) * to; + this.fps = lerp(this.fps, Math.min(1 / deltaSec, 10000), 0.3); + this.video.renderTexture(); + } + + updateOnscreenGamepad() { + $('#controller').style.display = this.touchEnabled ? 'block' : 'none'; + } + + bindTouch() { + this.touchFuncs = { + 'controller_b': this.setJoypB.bind(this), + 'controller_a': this.setJoypA.bind(this), + 'controller_start': this.setJoypStart.bind(this), + 'controller_select': this.setJoypSelect.bind(this), + }; + + this.boundButtonTouchStart = this.buttonTouchStart.bind(this); + this.boundButtonTouchEnd = this.buttonTouchEnd.bind(this); + selectEl.addEventListener('touchstart', this.boundButtonTouchStart); + selectEl.addEventListener('touchend', this.boundButtonTouchEnd); + startEl.addEventListener('touchstart', this.boundButtonTouchStart); + startEl.addEventListener('touchend', this.boundButtonTouchEnd); + bEl.addEventListener('touchstart', this.boundButtonTouchStart); + bEl.addEventListener('touchend', this.boundButtonTouchEnd); + aEl.addEventListener('touchstart', this.boundButtonTouchStart); + aEl.addEventListener('touchend', this.boundButtonTouchEnd); + + this.boundDpadTouchStartMove = this.dpadTouchStartMove.bind(this); + this.boundDpadTouchEnd = this.dpadTouchEnd.bind(this); + dpadEl.addEventListener('touchstart', this.boundDpadTouchStartMove); + dpadEl.addEventListener('touchmove', this.boundDpadTouchStartMove); + dpadEl.addEventListener('touchend', this.boundDpadTouchEnd); + + this.boundTouchRestore = this.touchRestore.bind(this); + window.addEventListener('touchstart', this.boundTouchRestore); + } + + unbindTouch() { + selectEl.removeEventListener('touchstart', this.boundButtonTouchStart); + selectEl.removeEventListener('touchend', this.boundButtonTouchEnd); + startEl.removeEventListener('touchstart', this.boundButtonTouchStart); + startEl.removeEventListener('touchend', this.boundButtonTouchEnd); + bEl.removeEventListener('touchstart', this.boundButtonTouchStart); + bEl.removeEventListener('touchend', this.boundButtonTouchEnd); + aEl.removeEventListener('touchstart', this.boundButtonTouchStart); + aEl.removeEventListener('touchend', this.boundButtonTouchEnd); + + dpadEl.removeEventListener('touchstart', this.boundDpadTouchStartMove); + dpadEl.removeEventListener('touchmove', this.boundDpadTouchStartMove); + dpadEl.removeEventListener('touchend', this.boundDpadTouchEnd); + + window.removeEventListener('touchstart', this.boundTouchRestore); + } + + buttonTouchStart(event) { + if (event.currentTarget.id in this.touchFuncs) { + this.touchFuncs[event.currentTarget.id](true); + event.currentTarget.classList.add('btnPressed'); + event.preventDefault(); + } + } + + buttonTouchEnd(event) { + if (event.currentTarget.id in this.touchFuncs) { + this.touchFuncs[event.currentTarget.id](false); + event.currentTarget.classList.remove('btnPressed'); + event.preventDefault(); + } + } + + dpadTouchStartMove(event) { + const rect = event.currentTarget.getBoundingClientRect(); + const x = (2 * (event.targetTouches[0].clientX - rect.left)) / rect.width - 1; + const y = (2 * (event.targetTouches[0].clientY - rect.top)) / rect.height - 1; + + if (Math.abs(x) > OSGP_DEADZONE) { + if (y > x && y < -x) { + this.setJoypLeft(true); + this.setJoypRight(false); + } else if (y < x && y > -x) { + this.setJoypLeft(false); + this.setJoypRight(true); + } + } else { + this.setJoypLeft(false); + this.setJoypRight(false); + } + + if (Math.abs(y) > OSGP_DEADZONE) { + if (x > y && x < -y) { + this.setJoypUp(true); + this.setJoypDown(false); + } else if (x < y && x > -y) { + this.setJoypUp(false); + this.setJoypDown(true); + } + } else { + this.setJoypUp(false); + this.setJoypDown(false); + } + event.preventDefault(); + } + + dpadTouchEnd(event) { + this.setJoypLeft(false); + this.setJoypRight(false); + this.setJoypUp(false); + this.setJoypDown(false); + event.preventDefault(); + } + + touchRestore() { + this.touchEnabled = true; + this.updateOnscreenGamepad(); + } + + bindKeys() { + this.keyFuncs = { + 'ArrowDown': this.setJoypDown.bind(this), + 'ArrowLeft': this.setJoypLeft.bind(this), + 'ArrowRight': this.setJoypRight.bind(this), + 'ArrowUp': this.setJoypUp.bind(this), + 'KeyZ': this.setJoypB.bind(this), + 'KeyX': this.setJoypA.bind(this), + 'Enter': this.setJoypStart.bind(this), + 'Tab': this.setJoypSelect.bind(this), + 'Backspace': this.keyRewind.bind(this), + 'Space': this.keyPause.bind(this), + 'BracketLeft': this.keyPrevPalette.bind(this), + 'BracketRight': this.keyNextPalette.bind(this), + 'ShiftLeft': this.setFastForward.bind(this), + }; + this.boundKeyDown = this.keyDown.bind(this); + this.boundKeyUp = this.keyUp.bind(this); + + window.addEventListener('keydown', this.boundKeyDown); + window.addEventListener('keyup', this.boundKeyUp); + } + + unbindKeys() { + window.removeEventListener('keydown', this.boundKeyDown); + window.removeEventListener('keyup', this.boundKeyUp); + } + + keyDown(event) { + if (event.code in this.keyFuncs) { + if (this.touchEnabled) { + this.touchEnabled = false; + this.updateOnscreenGamepad(); + } + this.keyFuncs[event.code](true); + event.preventDefault(); + } + } + + keyUp(event) { + if (event.code in this.keyFuncs) { + this.keyFuncs[event.code](false); + event.preventDefault(); + } + } + + keyRewind(isKeyDown) { + if (!ENABLE_REWIND) { return; } + if (this.isRewinding !== isKeyDown) { + if (isKeyDown) { + vm.paused = true; + this.autoRewind = true; + } else { + this.autoRewind = false; + vm.paused = false; + } + } + } + + keyPause(isKeyDown) { + if (!ENABLE_PAUSE) { return; } + if (isKeyDown) vm.togglePause(); + } + + keyPrevPalette(isKeyDown) { + if (!ENABLE_SWITCH_PALETTES) { return; } + if (isKeyDown) { + vm.palIdx = (vm.palIdx + PALETTES.length - 1) % PALETTES.length; + emulator.setBuiltinPalette(vm.palIdx); + } + } + + keyNextPalette(isKeyDown) { + if (!ENABLE_SWITCH_PALETTES) { return; } + if (isKeyDown) { + vm.palIdx = (vm.palIdx + 1) % PALETTES.length; + emulator.setBuiltinPalette(vm.palIdx); + } + } + + setFastForward(isKeyDown) { + if (!ENABLE_FAST_FORWARD) { return; } + this.fastForward = isKeyDown; + } + + setJoypDown(set) { this.module._set_joyp_down(this.e, set); } + setJoypUp(set) { this.module._set_joyp_up(this.e, set); } + setJoypLeft(set) { this.module._set_joyp_left(this.e, set); } + setJoypRight(set) { this.module._set_joyp_right(this.e, set); } + setJoypSelect(set) { this.module._set_joyp_select(this.e, set); } + setJoypStart(set) { this.module._set_joyp_start(this.e, set); } + setJoypB(set) { this.module._set_joyp_B(this.e, set); } + setJoypA(set) { this.module._set_joyp_A(this.e, set); } +} + +class Audio { + constructor(module, e) { + this.started = false; + this.module = module; + this.buffer = makeWasmBuffer( + this.module, this.module._get_audio_buffer_ptr(e), + this.module._get_audio_buffer_capacity(e)); + this.startSec = 0; + this.resume(); + + this.boundStartPlayback = this.startPlayback.bind(this); + window.addEventListener('keydown', this.boundStartPlayback, true); + window.addEventListener('click', this.boundStartPlayback, true); + window.addEventListener('touchend', this.boundStartPlayback, true); + } + + startPlayback() { + window.removeEventListener('touchend', this.boundStartPlayback, true); + window.removeEventListener('keydown', this.boundStartPlayback, true); + window.removeEventListener('click', this.boundStartPlayback, true); + this.started = true; + this.resume(); + } + + get sampleRate() { return Audio.ctx.sampleRate; } + + pushBuffer() { + if (!this.started) { return; } + const nowSec = Audio.ctx.currentTime; + const nowPlusLatency = nowSec + AUDIO_LATENCY_SEC; + const volume = vm.volume; + this.startSec = (this.startSec || nowPlusLatency); + if (this.startSec >= nowSec) { + const buffer = Audio.ctx.createBuffer(2, AUDIO_FRAMES, this.sampleRate); + const channel0 = buffer.getChannelData(0); + const channel1 = buffer.getChannelData(1); + for (let i = 0; i < AUDIO_FRAMES; i++) { + channel0[i] = this.buffer[2 * i] * volume / 255; + channel1[i] = this.buffer[2 * i + 1] * volume / 255; + } + const bufferSource = Audio.ctx.createBufferSource(); + bufferSource.buffer = buffer; + bufferSource.connect(Audio.ctx.destination); + bufferSource.start(this.startSec); + const bufferSec = AUDIO_FRAMES / this.sampleRate; + this.startSec += bufferSec; + } else { + console.log( + 'Resetting audio (' + this.startSec.toFixed(2) + ' < ' + + nowSec.toFixed(2) + ')'); + this.startSec = nowPlusLatency; + } + } + + pause() { + if (!this.started) { return; } + Audio.ctx.suspend(); + } + + resume() { + if (!this.started) { return; } + Audio.ctx.resume(); + } +} + +Audio.ctx = new AudioContext; + +class Video { + constructor(module, e, el) { + this.module = module; + // iPhone Safari doesn't upscale using image-rendering: pixelated on webgl + // canvases. See https://bugs.webkit.org/show_bug.cgi?id=193895. + // For now, default to Canvas2D. + if (window.navigator.userAgent.match(/iPhone|iPad/)) { + this.renderer = new Canvas2DRenderer(el); + } else { + try { + this.renderer = new WebGLRenderer(el); + } catch (error) { + console.log(`Error creating WebGLRenderer: ${error}`); + this.renderer = new Canvas2DRenderer(el); + } + } + this.buffer = makeWasmBuffer( + this.module, this.module._get_frame_buffer_ptr(e), + this.module._get_frame_buffer_size(e)); + } + + uploadTexture() { + this.renderer.uploadTexture(this.buffer); + } + + renderTexture() { + this.renderer.renderTexture(); + } +} + +class Canvas2DRenderer { + constructor(el) { + this.ctx = el.getContext('2d'); + this.imageData = this.ctx.createImageData(el.width, el.height); + } + + renderTexture() { + this.ctx.putImageData(this.imageData, 0, 0); + } + + uploadTexture(buffer) { + this.imageData.data.set(buffer); + } +} + +class WebGLRenderer { + constructor(el) { + const gl = this.gl = el.getContext('webgl', {preserveDrawingBuffer: true}); + if (gl === null) { + throw new Error('unable to create webgl context'); + } + + const w = SCREEN_WIDTH / 256; + const h = SCREEN_HEIGHT / 256; + const buffer = gl.createBuffer(); + gl.bindBuffer(gl.ARRAY_BUFFER, buffer); + gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([ + -1, -1, 0, h, + +1, -1, w, h, + -1, +1, 0, 0, + +1, +1, w, 0, + ]), gl.STATIC_DRAW); + + const texture = gl.createTexture(); + gl.bindTexture(gl.TEXTURE_2D, texture); + gl.texImage2D( + gl.TEXTURE_2D, 0, gl.RGBA, 256, 256, 0, gl.RGBA, gl.UNSIGNED_BYTE, null); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); + + function compileShader(type, source) { + const shader = gl.createShader(type); + gl.shaderSource(shader, source); + gl.compileShader(shader); + if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) { + throw new Error(`compileShader failed: ${gl.getShaderInfoLog(shader)}`); + } + return shader; + } + + const vertexShader = compileShader(gl.VERTEX_SHADER, + `attribute vec2 aPos; + attribute vec2 aTexCoord; + varying highp vec2 vTexCoord; + void main(void) { + gl_Position = vec4(aPos, 0.0, 1.0); + vTexCoord = aTexCoord; + }`); + const fragmentShader = compileShader(gl.FRAGMENT_SHADER, + `varying highp vec2 vTexCoord; + uniform sampler2D uSampler; + void main(void) { + gl_FragColor = texture2D(uSampler, vTexCoord); + }`); + + const program = gl.createProgram(); + gl.attachShader(program, vertexShader); + gl.attachShader(program, fragmentShader); + gl.linkProgram(program); + if (!gl.getProgramParameter(program, gl.LINK_STATUS)) { + throw new Error(`program link failed: ${gl.getProgramInfoLog(program)}`); + } + gl.useProgram(program); + + const aPos = gl.getAttribLocation(program, 'aPos'); + const aTexCoord = gl.getAttribLocation(program, 'aTexCoord'); + const uSampler = gl.getUniformLocation(program, 'uSampler'); + + gl.enableVertexAttribArray(aPos); + gl.enableVertexAttribArray(aTexCoord); + gl.vertexAttribPointer(aPos, 2, gl.FLOAT, gl.FALSE, 16, 0); + gl.vertexAttribPointer(aTexCoord, 2, gl.FLOAT, gl.FALSE, 16, 8); + gl.uniform1i(uSampler, 0); + } + + renderTexture() { + this.gl.clearColor(0.5, 0.5, 0.5, 1.0); + this.gl.clear(this.gl.COLOR_BUFFER_BIT); + this.gl.drawArrays(this.gl.TRIANGLE_STRIP, 0, 4); + } + + uploadTexture(buffer) { + this.gl.texSubImage2D( + this.gl.TEXTURE_2D, 0, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, this.gl.RGBA, + this.gl.UNSIGNED_BYTE, buffer); + } +} + +class Rewind { + constructor(module, e) { + this.module = module; + this.e = e; + this.joypadBufferPtr = this.module._joypad_new(); + this.statePtr = 0; + this.bufferPtr = this.module._rewind_new_simple( + e, REWIND_FRAMES_PER_BASE_STATE, REWIND_BUFFER_CAPACITY); + this.module._emulator_set_default_joypad_callback(e, this.joypadBufferPtr); + } + + destroy() { + this.module._rewind_delete(this.bufferPtr); + this.module._joypad_delete(this.joypadBufferPtr); + } + + get oldestTicks() { + return this.module._rewind_get_oldest_ticks_f64(this.bufferPtr); + } + + get newestTicks() { + return this.module._rewind_get_newest_ticks_f64(this.bufferPtr); + } + + pushBuffer() { + if (!this.isRewinding) { + this.module._rewind_append(this.bufferPtr, this.e); + } + } + + get isRewinding() { + return this.statePtr !== 0; + } + + beginRewind() { + if (this.isRewinding) return; + this.statePtr = + this.module._rewind_begin(this.e, this.bufferPtr, this.joypadBufferPtr); + } + + rewindToTicks(ticks) { + if (!this.isRewinding) return; + return this.module._rewind_to_ticks_wrapper(this.statePtr, ticks) === + RESULT_OK; + } + + endRewind() { + if (!this.isRewinding) return; + this.module._emulator_set_default_joypad_callback( + this.e, this.joypadBufferPtr); + this.module._rewind_end(this.statePtr); + this.statePtr = 0; + } +} diff --git a/source.zip b/source.zip index 7783280..8791091 100644 Binary files a/source.zip and b/source.zip differ diff --git a/swords03.inc b/swords03.inc index ac07911..64b547d 100644 --- a/swords03.inc +++ b/swords03.inc @@ -34,93 +34,86 @@ Swords03: .KeyArtTiles: db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $fe,$fe,$fc,$fc,$f8,$f8,$f0,$f0,$e0,$e0,$c0,$c0,$f1,$f1,$fb,$fb - db $00,$00,$00,$00,$00,$00,$01,$01,$03,$03,$07,$07,$8f,$8f,$df,$df - db $fb,$fb,$73,$73,$07,$07,$07,$07,$07,$07,$07,$07,$0f,$0f,$0f,$0f - db $df,$df,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fe,$fe,$fc,$fc - db $0f,$0f,$0f,$0f,$1f,$1f,$1f,$1f,$3f,$3f,$7f,$7f,$ff,$ff,$ff,$ff - db $f0,$f0,$f0,$f0,$f0,$f0,$f0,$f0,$f0,$f0,$f0,$f0,$f0,$f0,$f0,$f0 - db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$f7,$f7,$f7,$f7,$e7,$e7 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$01,$03,$03,$07,$07 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$80,$c0,$c0,$e0,$e0 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1e,$1e,$3e,$3e db $07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07 - db $f0,$f0,$f0,$f0,$f0,$f0,$f0,$f0,$f0,$f0,$f0,$f0,$e0,$e0,$e0,$e0 - db $e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e1,$e0,$e1,$e0,$e1 - db $07,$07,$07,$07,$07,$07,$07,$07,$7f,$7f,$ff,$ff,$ff,$ff,$7f,$7f - db $e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff - db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1c,$1c,$3e,$3e - db $7e,$7e,$fe,$fe,$fc,$fc,$fc,$fc,$fc,$fc,$f8,$f8,$f8,$f8,$f0,$f0 - db $e0,$e0,$e0,$e0,$c0,$c0,$80,$80,$80,$80,$00,$00,$00,$00,$00,$00 - db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$01 - db $fc,$fc,$f8,$f8,$f0,$f0,$f0,$f0,$f3,$f3,$f7,$f7,$f7,$f7,$f3,$f3 - db $01,$01,$03,$03,$03,$03,$07,$07,$0f,$0f,$1f,$1f,$3f,$3f,$7d,$7d - db $00,$00,$00,$00,$01,$01,$01,$01,$03,$03,$07,$07,$07,$07,$0f,$0f - db $fb,$fb,$f3,$f3,$f7,$f7,$ef,$ef,$ff,$ff,$df,$df,$be,$be,$bc,$bc - db $e7,$e7,$c7,$c7,$c7,$c7,$87,$87,$07,$07,$07,$07,$07,$07,$07,$07 - db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$18,$18,$3d,$3d,$3f,$3f - db $1f,$1f,$3e,$3e,$3d,$3d,$7f,$7f,$ff,$ff,$f7,$f7,$f7,$f7,$ef,$ef - db $7c,$7c,$f8,$f8,$f0,$f0,$e0,$e0,$c0,$c0,$80,$80,$80,$80,$80,$80 - db $3f,$3f,$1f,$1f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$cf,$07,$e7 - db $ff,$ff,$de,$de,$fe,$fe,$fc,$fc,$fc,$fc,$fc,$fc,$fe,$fe,$ff,$ff - db $0f,$ff,$0f,$ff,$0f,$ff,$03,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff - db $ff,$ff,$ff,$ff,$ff,$ff,$3f,$3f,$07,$07,$00,$80,$00,$80,$00,$80 - db $80,$80,$c0,$c0,$e0,$e0,$e0,$e0,$c0,$c0,$00,$00,$00,$00,$00,$00 - db $00,$00,$00,$ff,$00,$7f,$00,$00,$80,$80,$c0,$c0,$c0,$c0,$80,$80 - db $0d,$0d,$1f,$1f,$18,$1f,$10,$1f,$10,$1f,$00,$0f,$00,$0f,$00,$1f - db $fe,$fe,$f8,$f8,$e0,$fe,$40,$ff,$00,$ff,$00,$ff,$00,$ff,$08,$ff - db $01,$1f,$00,$7f,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $e0,$e0,$e0,$e0,$e1,$e1,$e3,$e3,$e7,$e7,$ef,$ef,$ef,$ef,$ef,$ef + db $7e,$7e,$fe,$fe,$fe,$fe,$fc,$fc,$f8,$f8,$f0,$f0,$e0,$e0,$c0,$c0 + db $f7,$f7,$f7,$f7,$77,$77,$37,$37,$17,$17,$07,$07,$17,$17,$37,$37 + db $ef,$ef,$ef,$ef,$ee,$ee,$ec,$ec,$e8,$e8,$e0,$e0,$e8,$e8,$ec,$ec + db $80,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $00,$00,$00,$00,$01,$01,$03,$03,$07,$07,$0f,$0f,$1f,$1f,$3f,$3f + db $77,$77,$f7,$f7,$f7,$f7,$f7,$f7,$f7,$f7,$f7,$f7,$f7,$f7,$e7,$e7 + db $7f,$7f,$ff,$ff,$ff,$ff,$fe,$fe,$fc,$fc,$f8,$f8,$f0,$f0,$e0,$e0 + db $c7,$c7,$87,$87,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07 + db $e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0 + db $00,$80,$00,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$01,$01,$01,$00,$00 + db $07,$07,$07,$07,$07,$07,$07,$07,$c7,$c7,$ff,$ff,$ff,$ff,$ff,$ff + db $e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e3,$e3,$ff,$ff,$ff,$ff,$ff,$ff + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$80,$80,$80,$00,$00 + db $03,$03,$03,$0b,$03,$1b,$01,$3d,$00,$3e,$00,$1f,$00,$1f,$00,$3f + db $c0,$c0,$c0,$c0,$c0,$dc,$80,$be,$00,$7e,$00,$ff,$00,$ff,$00,$ff + db $00,$c0,$00,$80,$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,$01 + db $00,$00,$00,$00,$00,$01,$00,$03,$00,$07,$00,$1f,$00,$3f,$00,$ff + db $00,$7f,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$fe,$00,$fc,$00,$f8,$00,$e0 + db $00,$00,$00,$00,$00,$00,$00,$80,$00,$e0,$00,$f9,$00,$ff,$00,$ff + db $00,$07,$00,$1f,$00,$3f,$00,$7f,$00,$ff,$00,$ff,$00,$ff,$00,$ff db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff - db $00,$fe,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $1f,$1f,$0f,$0f,$0f,$0f,$0f,$0f,$1f,$1f,$7f,$7f,$ff,$ff,$ff,$ff - db $7e,$7e,$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,$70,$70 - db $f8,$f8,$f8,$f8,$f8,$f8,$7c,$7c,$7c,$7c,$3c,$3c,$3e,$3e,$3f,$3f - db $00,$00,$00,$00,$00,$00,$00,$00,$80,$80,$c0,$c0,$c0,$c0,$e0,$e0 - db $f7,$f7,$ff,$ff,$ff,$ff,$f7,$f7,$f7,$f7,$f7,$f7,$f3,$f3,$f3,$f3 - db $e0,$e0,$f0,$f0,$f0,$f0,$f8,$f8,$f8,$f8,$fc,$fc,$fc,$fc,$fe,$fe - db $f1,$f1,$f1,$f1,$f0,$f0,$f0,$f0,$f0,$f0,$f0,$f0,$f0,$f0,$f0,$f0 - db $ff,$ff,$ff,$ff,$f7,$f7,$ff,$ff,$7b,$7b,$7d,$7d,$3d,$3d,$3f,$3f - db $00,$00,$80,$80,$80,$80,$c0,$c0,$e0,$e0,$e0,$e0,$e0,$e0,$f0,$f0 - db $1f,$1f,$0f,$0f,$0f,$0f,$0f,$0f,$07,$07,$03,$03,$03,$03,$01,$01 - db $f0,$f0,$f0,$f0,$f8,$f8,$fc,$fc,$fc,$fc,$fc,$fc,$fe,$fe,$fe,$fe - db $ff,$ff,$7f,$7f,$7f,$7f,$3f,$3f,$3f,$3f,$1f,$ff,$1f,$7f,$0f,$3f - db $00,$00,$00,$00,$00,$00,$80,$80,$80,$80,$c0,$c0,$c0,$c0,$e0,$e0 - db $0f,$1f,$07,$1f,$07,$1f,$03,$ff,$03,$ff,$01,$7f,$01,$ff,$00,$ff - db $f0,$f0,$f0,$fe,$f8,$ff,$f8,$ff,$f8,$ff,$f8,$ff,$f0,$ff,$e0,$ff - db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$60 - db $00,$60,$00,$70,$00,$38,$00,$1f,$00,$0f,$00,$80,$00,$ff,$00,$ff - db $00,$1f,$00,$ff,$00,$ff,$00,$0f,$00,$1f,$00,$3e,$00,$7c,$00,$70 - db $00,$ff,$00,$fe,$00,$fc,$00,$f0,$00,$e0,$00,$c0,$00,$00,$00,$00 - db $00,$e0,$00,$c0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$00,$80,$00,$80 - db $00,$00,$00,$00,$00,$00,$00,$01,$00,$03,$00,$0f,$00,$1f,$00,$ff - db $00,$80,$00,$80,$00,$80,$00,$80,$00,$80,$00,$80,$00,$00,$00,$00 - db $00,$00,$00,$00,$00,$80,$00,$c0,$00,$f0,$00,$fc,$00,$ff,$00,$ff - db $00,$01,$00,$03,$00,$1f,$00,$3f,$00,$7f,$00,$ff,$00,$ff,$00,$ff + db $00,$ff,$00,$fc,$03,$fb,$03,$f3,$01,$e1,$00,$c0,$00,$80,$00,$80 + db $00,$80,$00,$00,$c0,$c0,$c0,$c0,$80,$80,$00,$00,$00,$00,$00,$00 db $00,$ff,$00,$fe,$00,$fc,$00,$f8,$00,$f0,$00,$e0,$00,$e0,$00,$c0 - db $00,$ff,$00,$ff,$00,$fe,$00,$fc,$00,$f8,$00,$f0,$00,$e0,$00,$e0 - db $00,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$fe,$00,$fe,$00,$fc - db $00,$c0,$00,$c0,$00,$80,$00,$80,$00,$00,$00,$00,$00,$00,$00,$00 - db $00,$ff,$00,$ff,$00,$ff,$00,$fe,$00,$7e,$00,$3e,$00,$1c,$00,$00 + db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$fe,$00,$fc,$00,$fc,$00,$f8 + db $00,$00,$00,$00,$00,$00,$00,$00,$f8,$f8,$7e,$7e,$1f,$1f,$1f,$1f + db $00,$00,$00,$00,$01,$01,$03,$03,$07,$07,$0f,$0f,$1f,$1f,$bf,$bf + db $1f,$1f,$0f,$0f,$07,$07,$03,$3b,$03,$7b,$07,$f7,$07,$ff,$07,$ff + db $ff,$ff,$ff,$ff,$ff,$ff,$fe,$fe,$fc,$fc,$fe,$fe,$ff,$ff,$ff,$ff + db $c0,$c0,$80,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$80 + db $07,$ff,$01,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $df,$df,$8f,$af,$07,$f7,$03,$f3,$00,$f0,$00,$f0,$00,$e0,$00,$e0 + db $c0,$c0,$c0,$c0,$e0,$e0,$e0,$e0,$60,$60,$60,$60,$20,$20,$00,$00 + db $00,$7f,$80,$bf,$c0,$de,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $ee,$ee,$ef,$ef,$ef,$ef,$ef,$ef,$ef,$ef,$ef,$ef,$ef,$ef,$e7,$e7 + db $00,$00,$00,$00,$80,$80,$c0,$c0,$e0,$e0,$f0,$f0,$f8,$f8,$fc,$fc + db $e3,$e3,$e1,$e1,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0 + db $fe,$fe,$ff,$ff,$ff,$ff,$7f,$7f,$3f,$3f,$1f,$1f,$0f,$2f,$07,$37 + db $00,$00,$00,$00,$80,$81,$c0,$df,$e0,$ef,$f0,$f7,$f8,$fb,$fc,$fd + db $03,$03,$01,$01,$00,$00,$00,$03,$00,$03,$00,$07,$00,$07,$00,$0e + db $00,$f8,$00,$e0,$00,$e0,$00,$e0,$00,$c0,$10,$d0,$18,$d8,$1c,$dc + db $00,$1c,$00,$78,$00,$71,$00,$01,$00,$03,$00,$07,$00,$0f,$00,$0e + db $00,$ff,$00,$ff,$00,$ee,$00,$ce,$00,$8e,$00,$be,$00,$3c,$00,$18 + db $1e,$de,$1e,$de,$1e,$de,$1e,$de,$1e,$de,$00,$c0,$00,$c0,$00,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$00,$0f + db $fe,$fe,$fc,$fd,$f8,$fb,$70,$77,$20,$af,$00,$df,$00,$ff,$00,$ff + db $00,$00,$80,$80,$c0,$c0,$c0,$c0,$80,$80,$e0,$e0,$f0,$f0,$f8,$f8 + db $fc,$fc,$7e,$7e,$3f,$3f,$1f,$1f,$0f,$0f,$07,$07,$03,$03,$07,$07 + db $07,$07,$17,$17,$37,$37,$f7,$f7,$f7,$f7,$e7,$e7,$f7,$f7,$f7,$f7 + db $0f,$0f,$1e,$1e,$3c,$3c,$78,$78,$70,$70,$60,$60,$00,$00,$00,$00 + db $00,$00,$07,$07,$0f,$0f,$1f,$1f,$1f,$1f,$1f,$1f,$1f,$1f,$0d,$0d + .KeyArtTilesEnd: .BackgroundCopy: - db $1a, $1a, $40, $1a, $1a, $1a, $1a, $1a - db $1a, $1a, $41, $27, $1a, $27, $1a, $1a - db $1a, $1a, $3e, $1b, $1c, $28, $1a, $1a - db $1a, $1a, $3f, $1d, $1e, $29, $1a, $1a - db $1a, $1a, $2a, $1f, $2b, $42, $1a, $1a - db $1a, $1a, $2c, $21, $43, $44, $1a, $1a - db $1a, $2d, $2e, $2f, $45, $46, $47, $1a - db $30, $31, $32, $22, $20, $48, $49, $1a - db $33, $34, $1a, $22, $23, $4e, $4a, $4b - db $35, $36, $37, $22, $24, $4f, $4c, $4d - db $5d, $5a, $1a, $25, $26, $38, $50, $51 - db $1a, $1a, $1a, $39, $3a, $53, $52, $1a - db $1a, $1a, $54, $3b, $3c, $55, $1a, $1a - db $56, $57, $3c, $58, $3d, $1a, $1a, $1a - db $3c, $3c, $59, $5a, $1a, $1a, $1a, $1a - db $3c, $5b, $5c, $1a, $1a, $1a, $1a, $1a + db $1a, $1a, $1a, $1a, $1a, $1a, $1a, $1a + db $1a, $1a, $1a, $1a, $1a, $1a, $1a, $1a + db $1a, $1a, $1a, $1b, $1c, $1a, $1a, $1a + db $1a, $55, $51, $1e, $28, $1d, $1a, $1a + db $1a, $1a, $52, $53, $1f, $20, $1a, $1a + db $1a, $1a, $54, $21, $22, $23, $1a, $1a + db $1a, $1a, $24, $25, $45, $46, $1a, $4f + db $3c, $3d, $26, $27, $47, $48, $49, $33 + db $3e, $3f, $40, $1e, $28, $4a, $50, $4b + db $41, $42, $43, $1e, $28, $4c, $4d, $4e + db $44, $30, $2a, $2b, $2c, $2d, $1a, $1a + db $1a, $1a, $1a, $2e, $2f, $1a, $1a, $1a + db $1a, $31, $32, $33, $34, $1a, $1a, $1a + db $35, $36, $37, $38, $39, $1a, $1a, $1a + db $37, $37, $3a, $1a, $1a, $1a, $1a, $1a + db $37, $3b, $29, $1a, $1a, $1a, $1a, $1a .BackgroundCopyEnd: \ No newline at end of file diff --git a/swords04.inc b/swords04.inc new file mode 100644 index 0000000..ba3a0fa --- /dev/null +++ b/swords04.inc @@ -0,0 +1,119 @@ +Swords04: + db 10, "FOUR of " + db 10, "SWORDS " + db 10, " " + db 10, "betrayal " + db 10, "grief " + db 10, "loneliness" + + db 10, "FOUR of " + db 10, "SWORDS " + db 10, "(reversed)" + db 10, "release " + db 10, "forgiven " + db 10, "overcoming" + + dw .BackgroundCopyEnd - .BackgroundCopy + dw .BackgroundCopy + dw .KeyArtTilesEnd - .KeyArtTiles + dw .KeyArtTiles + dw .SpriteTilesEnd - .SpriteTiles + dw .SpriteTiles + dw .fInit + dw .fUpdate + dw .fDraw + dw .fPrintPrep + +.fInit: ret +.fUpdate: ret +.fDraw: ret +.fPrintPrep: ret + +.SpriteTiles: +.SpriteTilesEnd: + +.KeyArtTiles: + db $00,$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,$01,$01,$03,$03,$07,$07 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$80,$c0,$c0,$e0,$e0 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1e,$1e,$3e,$3e + db $07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07 + db $e0,$e0,$e0,$e0,$e1,$e1,$e3,$e3,$e7,$e7,$ef,$ef,$ef,$ef,$ef,$ef + db $7e,$7e,$fe,$fe,$fe,$fe,$fc,$fc,$f8,$f8,$f0,$f0,$e0,$e0,$c0,$c0 + db $f7,$f7,$f7,$f7,$77,$77,$37,$37,$17,$17,$07,$07,$17,$17,$37,$37 + db $ef,$ef,$ef,$ef,$ee,$ee,$ec,$ec,$e8,$e8,$e0,$e0,$e8,$e8,$ec,$ec + db $80,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $00,$00,$00,$00,$01,$01,$03,$03,$07,$07,$0f,$0f,$1f,$1f,$3f,$3f + db $77,$77,$f7,$f7,$f7,$f7,$f7,$f7,$f7,$f7,$f7,$f7,$f7,$f7,$e7,$e7 + db $7f,$7f,$ff,$ff,$ff,$ff,$fe,$fe,$fc,$fc,$f8,$f8,$f0,$f0,$e0,$e0 + db $c7,$c7,$87,$87,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07 + db $e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0 + db $00,$80,$00,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$01,$01,$01,$00,$00 + db $07,$07,$07,$07,$07,$07,$07,$07,$c7,$c7,$ff,$ff,$ff,$ff,$ff,$ff + db $e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e3,$e3,$ff,$ff,$ff,$ff,$ff,$ff + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$80,$80,$80,$00,$00 + db $03,$03,$03,$0b,$03,$1b,$01,$3d,$00,$3e,$00,$1f,$00,$1f,$00,$3f + db $c0,$c0,$c0,$c0,$c0,$dc,$80,$be,$00,$7e,$00,$ff,$00,$ff,$00,$ff + db $00,$c0,$00,$80,$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,$01 + db $00,$00,$00,$00,$00,$01,$00,$03,$00,$07,$00,$1f,$00,$3f,$00,$ff + db $00,$7f,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$fe,$00,$fc,$00,$f8,$00,$e0 + db $00,$00,$00,$00,$00,$00,$00,$80,$00,$e0,$00,$f9,$00,$ff,$00,$ff + db $00,$07,$00,$1f,$00,$3f,$00,$7f,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $00,$ff,$00,$fc,$03,$fb,$03,$f3,$01,$e1,$00,$c0,$00,$80,$00,$80 + db $00,$80,$00,$00,$c0,$c0,$c0,$c0,$80,$80,$00,$00,$00,$00,$00,$00 + db $00,$ff,$00,$fe,$00,$fc,$00,$f8,$00,$f0,$00,$e0,$00,$e0,$00,$c0 + db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$fe,$00,$fc,$00,$fc,$00,$f8 + db $00,$00,$00,$00,$00,$00,$00,$00,$f8,$f8,$7e,$7e,$1f,$1f,$1f,$1f + db $00,$00,$00,$00,$01,$01,$03,$03,$07,$07,$0f,$0f,$1f,$1f,$bf,$bf + db $1f,$1f,$0f,$0f,$07,$07,$03,$3b,$03,$7b,$07,$f7,$07,$ff,$07,$ff + db $ff,$ff,$ff,$ff,$ff,$ff,$fe,$fe,$fc,$fc,$fe,$fe,$ff,$ff,$ff,$ff + db $c0,$c0,$80,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$80 + db $07,$ff,$01,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $df,$df,$8f,$af,$07,$f7,$03,$f3,$00,$f0,$00,$f0,$00,$e0,$00,$e0 + db $c0,$c0,$c0,$c0,$e0,$e0,$e0,$e0,$60,$60,$60,$60,$20,$20,$00,$00 + db $00,$7f,$80,$bf,$c0,$de,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $ee,$ee,$ef,$ef,$ef,$ef,$ef,$ef,$ef,$ef,$ef,$ef,$ef,$ef,$e7,$e7 + db $00,$00,$00,$00,$80,$80,$c0,$c0,$e0,$e0,$f0,$f0,$f8,$f8,$fc,$fc + db $e3,$e3,$e1,$e1,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0 + db $fe,$fe,$ff,$ff,$ff,$ff,$7f,$7f,$3f,$3f,$1f,$1f,$0f,$2f,$07,$37 + db $00,$00,$00,$00,$80,$81,$c0,$df,$e0,$ef,$f0,$f7,$f8,$fb,$fc,$fd + db $03,$03,$01,$01,$00,$00,$00,$03,$00,$03,$00,$07,$00,$07,$00,$0e + db $00,$f8,$00,$e0,$00,$e0,$00,$e0,$00,$c0,$10,$d0,$18,$d8,$1c,$dc + db $00,$1c,$00,$78,$00,$71,$00,$01,$00,$03,$00,$07,$00,$0f,$00,$0e + db $00,$ff,$00,$ff,$00,$ee,$00,$ce,$00,$8e,$00,$be,$00,$3c,$00,$18 + db $1e,$de,$1e,$de,$1e,$de,$1e,$de,$1e,$de,$00,$c0,$00,$c0,$00,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$00,$0f + db $fe,$fe,$fc,$fd,$f8,$fb,$70,$77,$20,$af,$00,$df,$00,$ff,$00,$ff + db $00,$00,$80,$80,$c0,$c0,$c0,$c0,$80,$80,$e0,$e0,$f0,$f0,$f8,$f8 + db $fc,$fc,$7e,$7e,$3f,$3f,$1f,$1f,$0f,$0f,$07,$07,$03,$03,$07,$07 + db $07,$07,$17,$17,$37,$37,$f7,$f7,$f7,$f7,$e7,$e7,$f7,$f7,$f7,$f7 + db $0f,$0f,$1e,$1e,$3c,$3c,$78,$78,$70,$70,$60,$60,$00,$00,$00,$00 + db $00,$00,$07,$07,$0f,$0f,$1f,$1f,$1f,$1f,$1f,$1f,$1f,$1f,$0d,$0d + +.KeyArtTilesEnd: + + +.BackgroundCopy: + db $1a, $1a, $1a, $1a, $1a, $1a, $1a, $1a + db $1a, $1a, $1a, $1a, $1a, $1a, $1a, $1a + db $1a, $1a, $1a, $1b, $1c, $1a, $1a, $1a + db $1a, $55, $51, $1e, $28, $1d, $1a, $1a + db $1a, $1a, $52, $53, $1f, $20, $1a, $1a + db $1a, $1a, $54, $21, $22, $23, $1a, $1a + db $1a, $1a, $24, $25, $45, $46, $1a, $4f + db $3c, $3d, $26, $27, $47, $48, $49, $33 + db $3e, $3f, $40, $1e, $28, $4a, $50, $4b + db $41, $42, $43, $1e, $28, $4c, $4d, $4e + db $44, $30, $2a, $2b, $2c, $2d, $1a, $1a + db $1a, $1a, $1a, $2e, $2f, $1a, $1a, $1a + db $1a, $31, $32, $33, $34, $1a, $1a, $1a + db $35, $36, $37, $38, $39, $1a, $1a, $1a + db $37, $37, $3a, $1a, $1a, $1a, $1a, $1a + db $37, $3b, $29, $1a, $1a, $1a, $1a, $1a + + +.BackgroundCopyEnd: \ No newline at end of file diff --git a/wands03.inc b/wands03.inc index cd0ebf3..a293e37 100644 --- a/wands03.inc +++ b/wands03.inc @@ -35,60 +35,62 @@ Wands03: .KeyArtTiles: db $00,$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,$00,$00,$00,$00,$78,$78 - db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$03,$07,$07,$07,$07 - db $00,$00,$00,$00,$00,$00,$00,$00,$7f,$7f,$ff,$ff,$ff,$ff,$ff,$ff - db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$80,$c0,$c0,$e0,$e0 - db $00,$00,$00,$00,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01 - db $fc,$fc,$fe,$fe,$fe,$fe,$fe,$fe,$fc,$fc,$fc,$fc,$fc,$fc,$fc,$fc - db $0f,$0f,$0f,$0f,$1e,$1e,$1f,$1f,$1f,$1f,$0f,$0f,$06,$06,$00,$00 - db $c3,$c3,$01,$01,$01,$01,$00,$00,$00,$00,$00,$00,$01,$01,$01,$01 - db $e0,$e0,$e0,$e0,$f0,$f0,$f0,$f0,$f0,$f0,$f0,$f0,$f0,$f0,$e0,$e0 - db $01,$01,$01,$01,$00,$00,$01,$01,$01,$01,$01,$01,$00,$00,$00,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$78,$78,$fc,$fc + db $00,$00,$00,$00,$00,$00,$00,$00,$03,$03,$07,$07,$07,$07,$0f,$0f + db $00,$00,$00,$00,$00,$00,$7f,$7f,$ff,$ff,$ff,$ff,$ff,$ff,$c3,$c3 + db $00,$00,$00,$00,$00,$00,$00,$00,$80,$80,$c0,$c0,$e0,$e0,$e0,$e0 + db $00,$00,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01 + db $fe,$fe,$fe,$fe,$fe,$fe,$fc,$fc,$fc,$fc,$fc,$fc,$fc,$fc,$fc,$fc + db $0f,$0f,$1e,$1e,$1f,$1f,$1f,$1f,$0f,$0f,$06,$06,$00,$00,$00,$00 + db $01,$01,$01,$01,$00,$00,$00,$00,$00,$00,$01,$01,$01,$01,$01,$01 + db $e0,$e0,$f0,$f0,$f0,$f0,$f0,$f0,$f0,$f0,$f0,$f0,$e0,$e0,$e0,$e0 + db $01,$01,$00,$00,$01,$01,$01,$01,$01,$01,$00,$00,$00,$00,$00,$00 db $fc,$fc,$fc,$fc,$fc,$fc,$fc,$fc,$fc,$fc,$fc,$fc,$fc,$fc,$fc,$fc - db $01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$03,$03 - db $e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0 - db $fc,$fc,$7c,$7c,$fc,$fc,$78,$78,$78,$78,$78,$78,$78,$7b,$38,$3b - db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$00,$e3 - db $00,$80,$00,$86,$00,$8f,$00,$8f,$00,$9f,$00,$bf,$00,$bf,$00,$bf - db $00,$00,$00,$00,$00,$01,$00,$9f,$00,$ff,$00,$ff,$00,$ff,$00,$ff - db $03,$03,$07,$07,$07,$87,$0f,$ef,$0f,$ef,$1f,$df,$3e,$fe,$3c,$bd - db $e0,$e3,$c0,$cf,$80,$9f,$80,$bf,$80,$bf,$00,$7f,$00,$ff,$00,$ff - db $78,$7b,$78,$7b,$78,$7b,$78,$7b,$78,$7b,$38,$3b,$78,$7b,$78,$7b - db $60,$ed,$00,$cd,$00,$c1,$00,$c0,$00,$c0,$00,$c0,$00,$c0,$00,$c0 - db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ef,$00,$ff,$00,$fe,$00,$fe - db $7c,$fd,$78,$fb,$78,$fb,$78,$7b,$f8,$fb,$f0,$f7,$f0,$f7,$f0,$f7 + db $60,$67,$60,$67,$60,$67,$60,$60,$60,$6f,$00,$0f,$00,$6f,$00,$7f + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$00,$c0,$00,$c0,$00,$c0 + db $01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$03,$03,$03,$03 + db $e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e3 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$f6,$00,$ff,$00,$ff + db $7c,$7c,$fc,$fc,$78,$78,$78,$78,$78,$78,$78,$7b,$38,$3b,$78,$7b + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$00,$e3,$00,$ff + db $00,$1f,$60,$6f,$60,$6f,$60,$6f,$60,$6c,$60,$6d,$60,$6d,$60,$6c + db $00,$c6,$00,$8f,$00,$8f,$00,$df,$00,$df,$00,$df,$00,$bf,$00,$3f + db $00,$00,$00,$01,$00,$9f,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $07,$07,$07,$87,$0f,$ef,$0f,$ef,$1f,$df,$3e,$be,$3c,$bd,$7c,$7d + db $c0,$df,$80,$bf,$80,$bf,$80,$bf,$00,$7f,$00,$ff,$00,$ff,$00,$ff db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff - db $78,$7b,$70,$73,$70,$77,$70,$77,$30,$37,$70,$77,$70,$77,$70,$77 - db $00,$c0,$00,$80,$00,$80,$00,$80,$00,$80,$00,$80,$00,$00,$00,$00 - db $00,$1f,$00,$1f,$00,$1f,$00,$3f,$00,$3f,$00,$3f,$00,$3f,$00,$3f - db $00,$fe,$00,$fe,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff - db $f0,$f7,$f0,$f7,$70,$77,$70,$77,$70,$77,$70,$77,$70,$77,$70,$77 + db $78,$7b,$78,$7b,$78,$7b,$78,$7b,$38,$3b,$78,$7b,$78,$7b,$78,$7b + db $00,$0c,$00,$c0,$00,$c0,$00,$c0,$00,$c0,$00,$c0,$00,$c0,$00,$c0 + db $00,$3f,$00,$3f,$00,$3f,$00,$3f,$00,$3f,$00,$3f,$00,$1f,$00,$1f + db $00,$ff,$00,$ff,$00,$ff,$00,$fe,$00,$fe,$00,$fe,$00,$fe,$00,$fe + db $78,$7b,$78,$7b,$78,$7b,$f8,$fb,$f0,$f7,$f0,$f7,$f0,$f7,$f0,$f7 + db $70,$73,$70,$77,$70,$77,$30,$37,$70,$77,$70,$77,$70,$77,$70,$77 + db $00,$80,$00,$80,$00,$80,$00,$80,$00,$80,$00,$00,$00,$00,$00,$00 + db $00,$1f,$00,$1f,$00,$3f,$00,$3f,$00,$3f,$00,$3f,$00,$3f,$00,$1f + db $00,$fe,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $f0,$f7,$70,$77,$70,$77,$70,$77,$70,$77,$70,$77,$70,$77,$70,$77 db $70,$77,$70,$77,$70,$77,$70,$77,$70,$77,$70,$77,$70,$77,$70,$77 - db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$fe,$00,$fe,$00,$fe,$00,$fe - db $70,$77,$70,$77,$30,$b7,$38,$bb,$38,$bb,$38,$bb,$38,$bb,$38,$bb - db $70,$77,$70,$77,$70,$77,$60,$6f,$60,$6f,$60,$6f,$60,$6f,$60,$6f - db $00,$fe,$00,$fe,$00,$fc,$00,$fc,$00,$f8,$00,$f8,$00,$f8,$00,$f8 - db $00,$0f,$00,$0f,$00,$0f,$00,$0f,$00,$07,$00,$07,$00,$07,$00,$07 - db $38,$bb,$38,$bb,$18,$db,$18,$db,$1c,$dd,$1c,$dd,$1c,$dd,$1c,$dd - db $60,$6f,$60,$6f,$60,$6f,$20,$af,$00,$df,$00,$ff,$00,$ff,$00,$ff - db $00,$f8,$00,$f0,$00,$f0,$00,$f0,$00,$e0,$00,$e0,$00,$e0,$00,$c0 - db $00,$07,$00,$03,$00,$01,$00,$01,$00,$00,$00,$00,$00,$00,$00,$00 - db $1c,$dd,$1c,$dd,$0c,$ed,$0c,$ed,$0c,$ed,$08,$eb,$00,$f7,$00,$ff - db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$fe,$00,$fc - db $00,$c0,$00,$c0,$00,$c0,$00,$c0,$00,$80,$00,$00,$00,$00,$00,$00 - db $00,$7f,$00,$7f,$00,$3f,$00,$3f,$00,$3f,$00,$1f,$00,$0f,$00,$07 + db $00,$1f,$00,$1f,$00,$1f,$00,$1f,$00,$1f,$00,$1f,$00,$1f,$00,$0f + db $70,$77,$30,$b7,$38,$bb,$38,$bb,$38,$bb,$38,$bb,$38,$bb,$38,$bb + db $70,$77,$70,$77,$60,$6f,$60,$6f,$60,$6f,$60,$6f,$60,$6f,$60,$6f + db $00,$fe,$00,$fc,$00,$fc,$00,$f8,$00,$f8,$00,$f8,$00,$f8,$00,$f8 + db $00,$0f,$00,$0f,$00,$0f,$00,$07,$00,$07,$00,$07,$00,$07,$00,$07 + db $38,$bb,$18,$db,$18,$db,$1c,$dd,$1c,$dd,$1c,$dd,$1c,$dd,$1c,$dd + db $60,$6f,$60,$6f,$20,$af,$00,$df,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $00,$f0,$00,$f0,$00,$f0,$00,$e0,$00,$e0,$00,$e0,$00,$c0,$00,$c0 + db $00,$03,$00,$03,$00,$01,$00,$01,$00,$01,$00,$00,$00,$00,$00,$00 db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$7f - db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$fc,$00,$f0,$00,$c0 - db $00,$f8,$00,$f0,$00,$e0,$00,$c0,$00,$00,$00,$00,$00,$00,$00,$00 - db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$7f,$00,$1f,$00,$07,$00,$03 - db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$f6,$00,$ff - db $00,$1f,$00,$1f,$00,$1f,$00,$1f,$00,$1f,$00,$1f,$00,$1f,$00,$1f - db $00,$03,$00,$01,$00,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $00,$bf,$00,$bf,$00,$3f,$00,$3f,$00,$3f,$00,$3f,$00,$3f,$00,$1f - db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$07,$60,$67,$60,$6f - db $60,$6f,$00,$ff,$00,$ff,$60,$7f,$60,$6f,$60,$6f,$60,$6d,$60,$6d - db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80 + db $1c,$dd,$0c,$ed,$0c,$ed,$0c,$ed,$08,$eb,$00,$f7,$00,$ff,$00,$ff + db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$fe,$00,$fc,$00,$f8 + db $00,$c0,$00,$80,$00,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $00,$7f,$00,$7f,$00,$3f,$00,$3f,$00,$1f,$00,$1f,$00,$0f,$00,$07 + db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$fc,$00,$f0,$00,$c0,$00,$00 + db $00,$f0,$00,$e0,$00,$c0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $00,$03,$00,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $00,$ff,$00,$ff,$00,$ff,$00,$7f,$00,$1f,$00,$07,$00,$01,$00,$00 + db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$3f + db $00,$07,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + .KeyArtTilesEnd: @@ -97,16 +99,16 @@ Wands03: db $1a, $1a, $1a, $1a, $1a, $1a, $1a, $1a db $1a, $1a, $1a, $1a, $1a, $1a, $1a, $1a db $1a, $1a, $1a, $1a, $1a, $1a, $1a, $1a - db $1a, $1a, $1a, $1a, $1a, $1a, $1a, $1a db $1a, $1b, $1a, $1a, $1a, $1c, $1d, $1e db $1f, $20, $1a, $1a, $1a, $21, $22, $23 - db $24, $25, $1a, $4e, $50, $1a, $26, $27 - db $4a, $28, $29, $4f, $2a, $2b, $2c, $2d - db $32, $2e, $32, $2f, $4d, $30, $31, $32 + db $24, $25, $1a, $26, $27, $1a, $28, $29 + db $2a, $2b, $2c, $2d, $2e, $2f, $30, $31 db $32, $33, $32, $34, $35, $36, $37, $32 - db $32, $38, $39, $1a, $4b, $32, $3a, $32 - db $32, $3b, $3c, $1a, $3d, $32, $3e, $32 - db $32, $3f, $40, $1a, $41, $46, $42, $32 - db $32, $43, $44, $1a, $1a, $45, $32, $32 - db $47, $48, $1a, $1a, $1a, $4c, $49, $32 + db $32, $38, $32, $39, $3a, $3b, $3c, $32 + db $32, $3d, $36, $1a, $3e, $32, $3f, $32 + db $32, $40, $41, $1a, $42, $32, $43, $32 + db $32, $44, $45, $1a, $46, $47, $48, $32 + db $32, $49, $4a, $1a, $1a, $4b, $32, $32 + db $4c, $4d, $1a, $1a, $1a, $4e, $4f, $50 + db $1a, $1a, $1a, $1a, $1a, $1a, $1a, $51 .BackgroundCopyEnd: \ No newline at end of file diff --git a/wands04.inc b/wands04.inc new file mode 100644 index 0000000..a4fdd72 --- /dev/null +++ b/wands04.inc @@ -0,0 +1,114 @@ +Wands04: + db 10, "FOUR of " + db 10, "WANDS " + db 10, " " + db 10, "moving " + db 10, "freedom " + db 10, "payoff " + + db 10, "FOUR of " + db 10, "WANDS " + db 10, "(reversed)" + db 10, "return " + db 10, "plans fail" + db 10, "no growth " + + dw .BackgroundCopyEnd - .BackgroundCopy + dw .BackgroundCopy + dw .KeyArtTilesEnd - .KeyArtTiles + dw .KeyArtTiles + dw .SpriteTilesEnd - .SpriteTiles + dw .SpriteTiles + dw .fInit + dw .fUpdate + dw .fDraw + dw .fPrintPrep + +.fInit: ret +.fUpdate: ret +.fDraw: ret +.fPrintPrep: ret + +.SpriteTiles: +.SpriteTilesEnd: + +.KeyArtTiles: + + db $00,$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,$00,$00,$78,$78,$fc,$fc + db $00,$00,$00,$00,$00,$00,$00,$00,$03,$03,$07,$07,$07,$07,$0f,$0f + db $00,$00,$00,$00,$00,$00,$7f,$7f,$ff,$ff,$ff,$ff,$ff,$ff,$c3,$c3 + db $00,$00,$00,$00,$00,$00,$00,$00,$80,$80,$c0,$c0,$e0,$e0,$e0,$e0 + db $00,$00,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01 + db $fe,$fe,$fe,$fe,$fe,$fe,$fc,$fc,$fc,$fc,$fc,$fc,$fc,$fc,$fc,$fc + db $0f,$0f,$1e,$1e,$1f,$1f,$1f,$1f,$0f,$0f,$06,$06,$00,$00,$00,$00 + db $01,$01,$01,$01,$00,$00,$00,$00,$00,$00,$01,$01,$01,$01,$01,$01 + db $e0,$e0,$f0,$f0,$f0,$f0,$f0,$f0,$f0,$f0,$f0,$f0,$e0,$e0,$e0,$e0 + db $01,$01,$00,$00,$01,$01,$01,$01,$01,$01,$00,$00,$00,$00,$00,$00 + db $fc,$fc,$fc,$fc,$fc,$fc,$fc,$fc,$fc,$fc,$fc,$fc,$fc,$fc,$fc,$fc + db $60,$67,$60,$67,$60,$67,$60,$60,$60,$6f,$00,$0f,$00,$6f,$00,$7f + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$00,$c0,$00,$c0,$00,$c0 + db $01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$03,$03,$03,$03 + db $e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e3 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$f6,$00,$ff,$00,$ff + db $7c,$7c,$fc,$fc,$78,$78,$78,$78,$78,$78,$78,$7b,$38,$3b,$78,$7b + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$00,$e3,$00,$ff + db $00,$1f,$60,$6f,$60,$6f,$60,$6f,$60,$6c,$60,$6d,$60,$6d,$60,$6c + db $00,$c6,$00,$8f,$00,$8f,$00,$df,$00,$df,$00,$df,$00,$bf,$00,$3f + db $00,$00,$00,$01,$00,$9f,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $07,$07,$07,$87,$0f,$ef,$0f,$ef,$1f,$df,$3e,$be,$3c,$bd,$7c,$7d + db $c0,$df,$80,$bf,$80,$bf,$80,$bf,$00,$7f,$00,$ff,$00,$ff,$00,$ff + db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $78,$7b,$78,$7b,$78,$7b,$78,$7b,$38,$3b,$78,$7b,$78,$7b,$78,$7b + db $00,$0c,$00,$c0,$00,$c0,$00,$c0,$00,$c0,$00,$c0,$00,$c0,$00,$c0 + db $00,$3f,$00,$3f,$00,$3f,$00,$3f,$00,$3f,$00,$3f,$00,$1f,$00,$1f + db $00,$ff,$00,$ff,$00,$ff,$00,$fe,$00,$fe,$00,$fe,$00,$fe,$00,$fe + db $78,$7b,$78,$7b,$78,$7b,$f8,$fb,$f0,$f7,$f0,$f7,$f0,$f7,$f0,$f7 + db $70,$73,$70,$77,$70,$77,$30,$37,$70,$77,$70,$77,$70,$77,$70,$77 + db $00,$80,$00,$80,$00,$80,$00,$80,$00,$80,$00,$00,$00,$00,$00,$00 + db $00,$1f,$00,$1f,$00,$3f,$00,$3f,$00,$3f,$00,$3f,$00,$3f,$00,$1f + db $00,$fe,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $f0,$f7,$70,$77,$70,$77,$70,$77,$70,$77,$70,$77,$70,$77,$70,$77 + db $70,$77,$70,$77,$70,$77,$70,$77,$70,$77,$70,$77,$70,$77,$70,$77 + db $00,$1f,$00,$1f,$00,$1f,$00,$1f,$00,$1f,$00,$1f,$00,$1f,$00,$0f + db $70,$77,$30,$b7,$38,$bb,$38,$bb,$38,$bb,$38,$bb,$38,$bb,$38,$bb + db $70,$77,$70,$77,$60,$6f,$60,$6f,$60,$6f,$60,$6f,$60,$6f,$60,$6f + db $00,$fe,$00,$fc,$00,$fc,$00,$f8,$00,$f8,$00,$f8,$00,$f8,$00,$f8 + db $00,$0f,$00,$0f,$00,$0f,$00,$07,$00,$07,$00,$07,$00,$07,$00,$07 + db $38,$bb,$18,$db,$18,$db,$1c,$dd,$1c,$dd,$1c,$dd,$1c,$dd,$1c,$dd + db $60,$6f,$60,$6f,$20,$af,$00,$df,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $00,$f0,$00,$f0,$00,$f0,$00,$e0,$00,$e0,$00,$e0,$00,$c0,$00,$c0 + db $00,$03,$00,$03,$00,$01,$00,$01,$00,$01,$00,$00,$00,$00,$00,$00 + db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$7f + db $1c,$dd,$0c,$ed,$0c,$ed,$0c,$ed,$08,$eb,$00,$f7,$00,$ff,$00,$ff + db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$fe,$00,$fc,$00,$f8 + db $00,$c0,$00,$80,$00,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $00,$7f,$00,$7f,$00,$3f,$00,$3f,$00,$1f,$00,$1f,$00,$0f,$00,$07 + db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$fc,$00,$f0,$00,$c0,$00,$00 + db $00,$f0,$00,$e0,$00,$c0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $00,$03,$00,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $00,$ff,$00,$ff,$00,$ff,$00,$7f,$00,$1f,$00,$07,$00,$01,$00,$00 + db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$3f + db $00,$07,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + + +.KeyArtTilesEnd: + +.BackgroundCopy: ; tiles start at 26 + db $1a, $1a, $1a, $1a, $1a, $1a, $1a, $1a + db $1a, $1a, $1a, $1a, $1a, $1a, $1a, $1a + db $1a, $1a, $1a, $1a, $1a, $1a, $1a, $1a + db $1a, $1a, $1a, $1a, $1a, $1a, $1a, $1a + db $1a, $1b, $1a, $1a, $1a, $1c, $1d, $1e + db $1f, $20, $1a, $1a, $1a, $21, $22, $23 + db $24, $25, $1a, $26, $27, $1a, $28, $29 + db $2a, $2b, $2c, $2d, $2e, $2f, $30, $31 + db $32, $33, $32, $34, $35, $36, $37, $32 + db $32, $38, $32, $39, $3a, $3b, $3c, $32 + db $32, $3d, $36, $1a, $3e, $32, $3f, $32 + db $32, $40, $41, $1a, $42, $32, $43, $32 + db $32, $44, $45, $1a, $46, $47, $48, $32 + db $32, $49, $4a, $1a, $1a, $4b, $32, $32 + db $4c, $4d, $1a, $1a, $1a, $4e, $4f, $50 + db $1a, $1a, $1a, $1a, $1a, $1a, $1a, $51 +.BackgroundCopyEnd: \ No newline at end of file