diff --git a/demos/fatdog/assets/all-sprites.gif b/demos/fatdog/assets/all-sprites.gif new file mode 100644 index 0000000..f2995e6 Binary files /dev/null and b/demos/fatdog/assets/all-sprites.gif differ diff --git a/demos/fatdog/assets/all-sprites.png b/demos/fatdog/assets/all-sprites.png new file mode 100644 index 0000000..31200b7 Binary files /dev/null and b/demos/fatdog/assets/all-sprites.png differ diff --git a/demos/fatdog/assets/shooter-sprites.gif b/demos/fatdog/assets/shooter-sprites.gif new file mode 100644 index 0000000..08c728a Binary files /dev/null and b/demos/fatdog/assets/shooter-sprites.gif differ diff --git a/demos/fatdog/build-sprites.bat b/demos/fatdog/build-sprites.bat new file mode 100644 index 0000000..9b67e7f --- /dev/null +++ b/demos/fatdog/build-sprites.bat @@ -0,0 +1,15 @@ +echo off + +set MRSPRITE="%1" + +mkdir build +copy assets\all-sprites.gif build\all-sprites.gif +%MRSPRITE% EXTRACT build\all-sprites.gif 0026FF FC0204 +%MRSPRITE% RENAME build\all-sprites_spr*.gif Ship +%MRSPRITE% CODE build\Ship_*.gif 0026FF 09162A 181425 293C5A 3A455B 5400D9 9C44FF A50989 FC0204 FF00AF FFCA00 FFFFFF +type build\Ship_*.txt > sprites\Ships.s + +REM Create a wallpaper and copy that for reference +%MRSPRITE% WALLPAPER build\Ship_*.gif 0026FF FC0204 +copy build\Ship_Wall.gif sprites\Ship_Wallpaper.gif +del /q build\* diff --git a/demos/fatdog/package.json b/demos/fatdog/package.json new file mode 100644 index 0000000..6dd30a5 --- /dev/null +++ b/demos/fatdog/package.json @@ -0,0 +1,31 @@ +{ + "name": "fatdog-shooter", + "version": "1.0.0", + "description": "Horizontal shoot-em-up", + "main": "index.js", + "config": { + "merlin32": "C:\\Programs\\IIgsXDev\\bin\\Merlin32-1.1.10.exe", + "cadius": "C:\\Programs\\IIgsXDev\\bin\\Cadius.exe", + "gsport": "C:\\Programs\\gsport\\gsport_0.31\\GSPort.exe", + "macros": "C:\\Programs\\BrutalDeluxe\\Merlin32\\Library", + "crossrunner": "C:\\Programs\\Crossrunner\\Crossrunner.exe", + "mrsprite": "C:\\Programs\\IIgsXDev\\bin\\MrSprite.exe" + }, + "scripts": { + "build": "%npm_package_config_merlin32% -V %npm_package_config_macros% App.s", + "build:sprites": "build-sprites.bat %npm_package_config_mrsprite%" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/lscharen/iigs-game-engine.git" + }, + "author": "Lucas Scharenbroich", + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/lscharen/iigs-game-engine/issues" + }, + "homepage": "https://github.com/lscharen/iigs-game-engine#readme", + "devDependencies": { + } + } + \ No newline at end of file diff --git a/demos/fatdog/sprites/Ship_Wallpaper.gif b/demos/fatdog/sprites/Ship_Wallpaper.gif new file mode 100644 index 0000000..6d6ac4f Binary files /dev/null and b/demos/fatdog/sprites/Ship_Wallpaper.gif differ diff --git a/demos/fatdog/sprites/Ships.s b/demos/fatdog/sprites/Ships.s new file mode 100644 index 0000000..020441a --- /dev/null +++ b/demos/fatdog/sprites/Ships.s @@ -0,0 +1,2292 @@ +Spr_000 CLC ; 36x10, 295 bytes, 490 cycles + SEI ; Disable Interrupts + PHD ; Backup Direct Page + TSC ; Backup Stack + STA StackAddress + LDAL $E1C068 ; Direct Page and Stack in Bank 01/ + ORA #$0030 + STAL $E1C068 + TYA ; Y = Sprite Target Screen Address (upper left corner) + TCS ; New Stack address + LDX #$4444 ; Pattern #1 : 9 + LDY #$8888 ; Pattern #2 : 6 + LDA #$0020 ; Pattern #3 : 5 + TCD +*-- + LDA $04,S ; Line 0 + AND #$00F0 + ORA #$5505 + STA $04,S + LDA $0A,S + AND #$0F00 + ORA #$A0AA + STA $0A,S + TSC + ADC #$0009 + TCS + PEA $AA88 + PHY + TSC ; Line 1 + ADC #$00A7 + TCS + LDA $A1,S + AND #$0F00 + ORA #$A0AA + STA $A1,S + SEP #$20 + LDA $98,S + AND #$F0 + STA $98,S + REP #$30 + PEA $AAAA + PEA $AA88 + PEA $5844 + PEA $4400 + TSC ; Line 2 + ADC #$00A8 + TCS + SEP #$20 + LDA #$9A + STA $96,S + LDA $94,S + AND #$0F + ORA #$A0 + STA $94,S + REP #$30 + PEA $AAAA + PEA $8858 + PEA $2402 + PHD + TSC ; Line 3 + ADC #$00AB + TCS + SEP #$20 + LDA $A1,S + AND #$0F + ORA #$50 + STA $A1,S + REP #$30 + PEA $8288 + PHY + PEA $8858 + PEA $2440 + PEA $4404 + PEA $0209 + TSC ; Line 4 + ADC #$00AC + TCS + LDA $9F,S + AND #$0F00 + ORA #$2022 + STA $9F,S + SEP #$20 + LDA #$9A + STA $93,S + LDA $91,S + AND #$0F + ORA #$A0 + STA $91,S + REP #$30 + PHX + PHX + PEA $4424 + PEA $5044 + PHX + PEA $2000 + TSC ; Line 5 + ADC #$00AA + TCS + SEP #$20 + LDA $97,S + AND #$F0 + STA $97,S + REP #$30 + PEA $2222 + PEA $2282 + PEA $8855 + PHX + PEA $0409 + TSC ; Line 6 + ADC #$00A9 + TCS + LDA $98,S + AND #$00F0 + ORA #$4400 + STA $98,S + PEA $0000 + PEA $2088 + PEA $8855 + PHX + TSC ; Line 7 + ADC #$00A5 + TCS + PHD + PEA $8855 + TSC ; Line 8 + ADC #$00A2 + TCS + TDC + STA $9D,S + PHD + PEA $5525 +*-- + LDAL $E1C068 ; Direct Page and Stack in Bank 00/ + AND #$FFCF + STAL $E1C068 + LDA StackAddress ; Restore Stack + TCS + PLD ; Restore Direct Page + CLI ; Enable Interrupts + RTL + +*------------------------------- +Spr_001 CLC ; 48x11, 427 bytes, 707 cycles + SEI ; Disable Interrupts + PHD ; Backup Direct Page + TSC ; Backup Stack + STA StackAddress + LDAL $E1C068 ; Direct Page and Stack in Bank 01/ + ORA #$0030 + STAL $E1C068 + TYA ; Y = Sprite Target Screen Address (upper left corner) + TCS ; New Stack address + LDX #$4444 ; Pattern #1 : 8 + LDY #$0000 ; Pattern #2 : 7 + LDA #$8888 ; Pattern #3 : 6 + TCD +*-- + LDA $0B,S ; Line 0 + AND #$00F0 + STA $0B,S + LDA $11,S + AND #$0F00 + ORA #$2022 + STA $11,S + LDA $A4,S + AND #$000F + ORA #$AAA0 + STA $A4,S + SEP #$20 + LDA #$05 + STA $AB,S + LDA $A0,S + AND #$F0 + ORA #$0A + STA $A0,S + REP #$30 + TSC + ADC #$0010 + TCS + PEA $2202 + PHY + TSC ; Line 1 + ADC #$00A7 + TCS + LDA $8F,S + AND #$F00F + ORA #$0AA0 + STA $8F,S + LDA $98,S + AND #$00F0 + STA $98,S + SEP #$20 + LDA $93,S + AND #$F0 + ORA #$0A + STA $93,S + LDA $A2,S + AND #$0F + ORA #$20 + STA $A2,S + REP #$30 + PEA $22A2 + PEA $AAAA + PHD + PEA $8855 + TSC ; Line 2 + ADC #$00A9 + TCS + LDA $A1,S + AND #$0F00 + ORA #$20A2 + STA $A1,S + SEP #$20 + LDA $93,S + AND #$0F + ORA #$A0 + STA $93,S + LDA $95,S + AND #$0F + ORA #$A0 + STA $95,S + REP #$30 + PEA $22AA + PEA $AAAA + PEA $8858 + PHX + TSC ; Line 3 + ADC #$00A8 + TCS + LDA $92,S + AND #$F00F + ORA #$0AA0 + STA $92,S + SEP #$20 + LDA #$82 + STA $A2,S + LDA $8F,S + AND #$0F + ORA #$A0 + STA $8F,S + REP #$30 + PEA $AAAA + PEA $AA88 + PEA $5824 + PEA $0200 + PEA $2202 + TSC ; Line 4 + ADC #$00AB + TCS + LDA $A1,S + AND #$0F00 + ORA #$5044 + STA $A1,S + SEP #$20 + LDA $90,S + AND #$F0 + ORA #$0A + STA $90,S + LDA $93,S + AND #$F0 + ORA #$0A + STA $93,S + REP #$30 + PHD + PHD + PEA $5824 + PEA $4044 + PEA $0420 + PEA $44A0 + TSC ; Line 5 + ADC #$00AC + TCS + LDA $8B,S + AND #$F00F + ORA #$0AA0 + STA $8B,S + LDA $8F,S + AND #$0F0F + ORA #$A0A0 + STA $8F,S + SEP #$20 + LDA $95,S + AND #$F0 + STA $95,S + REP #$30 + PHX + PHX + PEA $2450 + PHX + PEA $4400 + PEA $2202 + TSC ; Line 6 + ADC #$00AD + TCS + SEP #$20 + LDA $95,S + AND #$F0 + STA $95,S + REP #$30 + PEA $0200 + PEA $0022 + PEA $0280 + PEA $8855 + PHX + PEA $0400 + TSC ; Line 7 + ADC #$00A9 + TCS + PHY + PEA $0088 + PEA $8855 + PHX + TSC ; Line 8 + ADC #$00A5 + TCS + SEP #$20 + LDA $9A,S + AND #$F0 + STA $9A,S + REP #$30 + PHY + PEA $8855 + PEA $4404 + TSC ; Line 9 + ADC #$00A4 + TCS + TYA + STA $9D,S + SEP #$20 + LDA $9C,S + AND #$F0 + STA $9C,S + REP #$30 + PHY + PEA $5555 +*-- + LDAL $E1C068 ; Direct Page and Stack in Bank 00/ + AND #$FFCF + STAL $E1C068 + LDA StackAddress ; Restore Stack + TCS + PLD ; Restore Direct Page + CLI ; Enable Interrupts + RTL + +*------------------------------- +Spr_002 CLC ; 20x8, 218 bytes, 357 cycles + SEI ; Disable Interrupts + PHD ; Backup Direct Page + TSC ; Backup Stack + STA StackAddress + LDAL $E1C068 ; Direct Page and Stack in Bank 01/ + ORA #$0030 + STAL $E1C068 + TYA ; Y = Sprite Target Screen Address (upper left corner) + TCS ; New Stack address + LDX #$8888 ; Pattern #1 : 3 + LDY #$0000 ; Pattern #2 : 3 + LDA #$22AA ; Pattern #3 : 2 + TCD +*-- + SEP #$20 ; Line 0 + LDA #$22 + STA $05,S + LDA $A0,S + AND #$F0 + STA $A0,S + REP #$30 + TSC + ADC #$0004 + TCS + PEA $2202 + PHY + TSC ; Line 1 + ADC #$00A6 + TCS + LDA $9A,S + AND #$00F0 + ORA #$4200 + STA $9A,S + SEP #$20 + LDA $A2,S + AND #$0F + ORA #$20 + STA $A2,S + REP #$30 + PHD + PEA $AA88 + PEA $8855 + TSC ; Line 2 + ADC #$00A7 + TCS + SEP #$20 + LDA #$85 + STA $A1,S + REP #$30 + PHD + PEA $8A58 + PEA $2400 + TSC ; Line 3 + ADC #$00A6 + TCS + SEP #$20 + LDA #$42 + STA $A1,S + REP #$30 + PHX + PEA $8824 + PEA $4004 + PEA $2004 + TSC ; Line 4 + ADC #$00A8 + TCS + LDA $A0,S + AND #$0F00 + STA $A0,S + PEA $4422 + PEA $4488 + PEA $4544 + PEA $0400 + TSC ; Line 5 + ADC #$00A7 + TCS + SEP #$20 + LDA $9A,S + AND #$F0 + STA $9A,S + REP #$30 + PHY + PEA $8858 + PEA $4544 + TSC ; Line 6 + ADC #$00A4 + TCS + TYA + STA $9C,S + LDA $9E,S + AND #$0F00 + ORA #$2022 + STA $9E,S + PEA $0080 + PEA $5844 +*-- + LDAL $E1C068 ; Direct Page and Stack in Bank 00/ + AND #$FFCF + STAL $E1C068 + LDA StackAddress ; Restore Stack + TCS + PLD ; Restore Direct Page + CLI ; Enable Interrupts + RTL + +*------------------------------- +Spr_003 CLC ; 36x11, 316 bytes, 531 cycles + SEI ; Disable Interrupts + PHD ; Backup Direct Page + TSC ; Backup Stack + STA StackAddress + LDAL $E1C068 ; Direct Page and Stack in Bank 01/ + ORA #$0030 + STAL $E1C068 + TYA ; Y = Sprite Target Screen Address (upper left corner) + TCS ; New Stack address + LDX #$AAAA ; Pattern #1 : 7 + LDY #$0000 ; Pattern #2 : 6 + LDA #$8888 ; Pattern #3 : 4 + TCD +*-- + LDA $AC,S ; Line 0 + AND #$0F00 + ORA #$2022 + STA $AC,S + SEP #$20 + LDA $A5,S + AND #$F0 + STA $A5,S + REP #$30 + TSC + ADC #$000B + TCS + PEA $2222 + PEA $2222 + PEA $0200 + TSC ; Line 1 + ADC #$00A6 + TCS + LDA $A2,S + AND #$0F00 + ORA #$20A2 + STA $A2,S + PEA $AA99 + PEA $4544 + PEA $2422 + TSC ; Line 2 + ADC #$00A7 + TCS + LDA $A2,S + AND #$0F00 + ORA #$20A2 + STA $A2,S + PEA $AA99 + PEA $5555 + PEA $2400 + PEA $00AA + PHX + PHX + TSC ; Line 3 + ADC #$00AD + TCS + LDA $A3,S + AND #$0F00 + ORA #$2022 + STA $A3,S + SEP #$20 + LDA $94,S + AND #$F0 + ORA #$0A + STA $94,S + REP #$30 + PEA $9A99 + PEA $55AA + PEA $0A00 + PEA $2000 + PEA $9A99 + PEA $9999 + PHX + TSC ; Line 4 + ADC #$00B0 + TCS + SEP #$20 + LDA $94,S + AND #$F0 + ORA #$0A + STA $94,S + REP #$30 + PEA $5255 + PEA $5555 + PEA $AA0A + PEA $5045 + PEA $0402 + PEA $A09A + PEA $99AA + TSC ; Line 5 + ADC #$00B0 + TCS + SEP #$20 + LDA $A0,S + AND #$0F + STA $A0,S + REP #$30 + PEA $8288 + PHD + PHD + PEA $0680 + PEA $5555 + PEA $4420 + PEA $00AA + TSC ; Line 6 + ADC #$00AD + TCS + LDA $9D,S + AND #$0F00 + STA $9D,S + PHY + PEA $A0AA + PEA $AAA0 + PEA $AA88 + PEA $5545 + PEA $0402 + TSC ; Line 7 + ADC #$00A8 + TCS + PHY + PHX + PEA $8855 + PEA $4400 + TSC ; Line 8 + ADC #$00A6 + TCS + PHY + PEA $AA88 + PEA $4504 + TSC ; Line 9 + ADC #$00A4 + TCS + TYA + STA $9D,S + PHY + PEA $8808 +*-- + LDAL $E1C068 ; Direct Page and Stack in Bank 00/ + AND #$FFCF + STAL $E1C068 + LDA StackAddress ; Restore Stack + TCS + PLD ; Restore Direct Page + CLI ; Enable Interrupts + RTL + +*------------------------------- +Spr_004 CLC ; 36x11, 312 bytes, 534 cycles + SEI ; Disable Interrupts + PHD ; Backup Direct Page + TSC ; Backup Stack + STA StackAddress + LDAL $E1C068 ; Direct Page and Stack in Bank 01/ + ORA #$0030 + STAL $E1C068 + TYA ; Y = Sprite Target Screen Address (upper left corner) + TCS ; New Stack address + LDX #$0000 ; Pattern #1 : 14 + LDY #$5555 ; Pattern #2 : 9 + LDA #$9999 ; Pattern #3 : 6 + TCD +*-- + LDA $06,S ; Line 0 + AND #$00F0 + ORA #$2202 + STA $06,S + LDA $AC,S + AND #$0F00 + ORA #$4044 + STA $AC,S + SEP #$20 + LDA $A5,S + AND #$F0 + ORA #$02 + STA $A5,S + REP #$30 + TSC + ADC #$000B + TCS + PEA $4444 + PEA $4444 + TSC ; Line 1 + ADC #$00A4 + TCS + LDA $A2,S + AND #$0F00 + ORA #$4094 + STA $A2,S + PHD + PEA $2222 + PEA $2222 + TSC ; Line 2 + ADC #$00A7 + TCS + SEP #$20 + LDA #$94 + STA $A2,S + REP #$30 + PHD + PHY + PHY + PEA $0099 + PEA $99AA + PEA $AAAA + TSC ; Line 3 + ADC #$00AD + TCS + LDA $94,S + AND #$00F0 + ORA #$AA0A + STA $94,S + LDA $A2,S + AND #$0F00 + ORA #$4044 + STA $A2,S + PHD + PEA $55AA + PEA $0A00 + PHX + PEA $9099 + PHD + PEA $AAAA + TSC ; Line 4 + ADC #$00AF + TCS + SEP #$20 + LDA $95,S + AND #$F0 + ORA #$0A + STA $95,S + REP #$30 + PHY + PEA $55AA + PEA $0A50 + PEA $5505 + PHX + PEA $9A99 + TSC ; Line 5 + ADC #$00AF + TCS + SEP #$20 + LDA #$00 + STA $94,S + REP #$30 + PEA $8088 + PEA $8888 + PEA $8888 + PEA $0880 + PHY + PEA $5500 + PEA $00AA + TSC ; Line 6 + ADC #$00AE + TCS + SEP #$20 + LDA $94,S + AND #$F0 + STA $94,S + REP #$30 + PHX + PHX + PHX + PEA $A0AA + PEA $8855 + PEA $5505 + TSC ; Line 7 + ADC #$00A8 + TCS + LDA $98,S + AND #$00F0 + ORA #$5500 + STA $98,S + PHX + PEA $00AA + PEA $AA88 + PHY + TSC ; Line 8 + ADC #$00A5 + TCS + PHX + PEA $AA88 + TSC ; Line 9 + ADC #$00A2 + TCS + TXA + STA $9D,S + PHX + PEA $8808 +*-- + LDAL $E1C068 ; Direct Page and Stack in Bank 00/ + AND #$FFCF + STAL $E1C068 + LDA StackAddress ; Restore Stack + TCS + PLD ; Restore Direct Page + CLI ; Enable Interrupts + RTL + +*------------------------------- +Spr_005 CLC ; 24x9, 263 bytes, 431 cycles + SEI ; Disable Interrupts + PHD ; Backup Direct Page + TSC ; Backup Stack + STA StackAddress + LDAL $E1C068 ; Direct Page and Stack in Bank 01/ + ORA #$0030 + STAL $E1C068 + TYA ; Y = Sprite Target Screen Address (upper left corner) + TCS ; New Stack address + LDX #$4444 ; Pattern #1 : 5 + LDY #$8888 ; Pattern #2 : 4 + LDA #$0000 ; Pattern #3 : 2 + TCD +*-- + LDA $01,S ; Line 0 + AND #$00F0 + STA $01,S + SEP #$20 + LDA #$22 + STA $A7,S + REP #$30 + TSC + ADC #$0006 + TCS + PEA $2222 + PEA $0200 + TSC ; Line 1 + ADC #$00A4 + TCS + PEA $AAAA + PHY + PEA $5805 + TSC ; Line 2 + ADC #$00A8 + TCS + LDA $98,S + AND #$00F0 + ORA #$4200 + STA $98,S + SEP #$20 + LDA $A2,S + AND #$0F + ORA #$20 + STA $A2,S + REP #$30 + PEA $22AA + PEA $AA88 + PEA $2544 + PEA $0400 + TSC ; Line 3 + ADC #$00A9 + TCS + SEP #$20 + LDA #$45 + STA $A1,S + REP #$30 + PHY + PHY + PEA $2540 + PEA $4400 + TSC ; Line 4 + ADC #$00A8 + TCS + SEP #$20 + LDA $97,S + AND #$F0 + STA $97,S + REP #$30 + PHX + PHX + PEA $5244 + PEA $4404 + PEA $2004 + TSC ; Line 5 + ADC #$00AB + TCS + SEP #$20 + LDA $97,S + AND #$F0 + ORA #$04 + STA $97,S + REP #$30 + PEA $2200 + PEA $0022 + PEA $0088 + PEA $5544 + PEA $4400 + TSC ; Line 6 + ADC #$00A7 + TCS + LDA #$0050 + STA $9B,S + LDA $99,S + AND #$00F0 + ORA #$5500 + STA $99,S + LDA $9D,S + AND #$0F00 + ORA #$2022 + STA $9D,S + PHD + PEA $8088 + PEA $4544 + TSC ; Line 8 + ADC #$013F + TCS + LDA $00,S + AND #$00F0 + STA $00,S + SEP #$20 + LDA $02,S + AND #$0F + STA $02,S + REP #$30 +*-- + LDAL $E1C068 ; Direct Page and Stack in Bank 00/ + AND #$FFCF + STAL $E1C068 + LDA StackAddress ; Restore Stack + TCS + PLD ; Restore Direct Page + CLI ; Enable Interrupts + RTL + +*------------------------------- +Spr_006 CLC ; 24x33, 731 bytes, 1214 cycles + SEI ; Disable Interrupts + PHD ; Backup Direct Page + TSC ; Backup Stack + STA StackAddress + LDAL $E1C068 ; Direct Page and Stack in Bank 01/ + ORA #$0030 + STAL $E1C068 + TYA ; Y = Sprite Target Screen Address (upper left corner) + TCS ; New Stack address + LDX #$0000 ; Pattern #1 : 31 + LDY #$4024 ; Pattern #2 : 4 + LDA #$0224 ; Pattern #3 : 3 + TCD +*-- + LDA #$0500 ; Line 0 + STA $07,S + LDA #$5000 + STA $A8,S + LDA $A6,S + AND #$00F0 + ORA #$8000 + STA $A6,S + SEP #$20 + LDA $09,S + AND #$0F + STA $09,S + REP #$30 + TSC ; Line 2 + ADC #$0149 + TCS + LDA $9C,S + AND #$00F0 + ORA #$4400 + STA $9C,S + SEP #$20 + LDA $01,S + AND #$0F + STA $01,S + REP #$30 + PEA $0500 + PEA $8004 + TSC ; Line 3 + ADC #$00A5 + TCS + LDA $A0,S + AND #$0F00 + ORA #$0005 + STA $A0,S + SEP #$20 + LDA $9B,S + AND #$F0 + STA $9B,S + REP #$30 + PEA $5080 + PEA $0664 + TSC ; Line 4 + ADC #$00A3 + TCS + LDA $A1,S + AND #$0F00 + ORA #$0088 + STA $A1,S + SEP #$20 + LDA $9C,S + AND #$F0 + STA $9C,S + REP #$30 + PEA $4008 + PEA $4495 + TSC ; Line 5 + ADC #$00A4 + TCS + SEP #$20 + LDA $A2,S + AND #$0F + ORA #$80 + STA $A2,S + REP #$30 + PEA $8005 + PEA $4244 + TSC ; Line 6 + ADC #$00A5 + TCS + LDA $9A,S + AND #$00F0 + ORA #$6800 + STA $9A,S + LDA $A0,S + AND #$0F00 + ORA #$8006 + STA $A0,S + PEA $6880 + PEA $6606 + PEA $4200 + TSC ; Line 7 + ADC #$00A5 + TCS + LDA $A1,S + AND #$0F00 + ORA #$00A0 + STA $A1,S + PEA $0088 + PEA $8888 + TSC ; Line 8 + ADC #$00A4 + TCS + SEP #$20 + LDA $9A,S + AND #$F0 + STA $9A,S + REP #$30 + PEA $5560 + PEA $0888 + PEA $0806 + TSC ; Line 9 + ADC #$00A8 + TCS + SEP #$20 + LDA #$A0 + STA $A0,S + REP #$30 + PEA $A05A + PEA $5560 + PEA $0808 + PEA $0606 + TSC ; Line 10 + ADC #$00A7 + TCS + LDA $96,S + AND #$00F0 + ORA #$5400 + STA $96,S + PEA $5455 + PEA $6066 + PEA $0686 + PEA $A800 + PHX + TSC ; Line 11 + ADC #$00AB + TCS + PEA $5055 + PEA $005A + PEA $5585 + PEA $A550 + PEA $0A42 + TSC ; Line 12 + ADC #$00AA + TCS + PHX + PEA $00A0 + PEA $5555 + PEA $A550 + PEA $0542 + PEA $6428 + TSC ; Line 13 + ADC #$00AC + TCS + PHY + PHX + PEA $5A82 + PEA $A200 + PEA $0522 + PEA $8428 + TSC ; Line 14 + ADC #$00AC + TCS + PHY + PEA $0066 + PEA $6608 + PEA $6600 + PHX + PHX + TSC ; Line 15 + ADC #$00AC + TCS + PEA $4022 + PEA $0060 + PEA $4288 + PEA $4802 + TSC ; Line 16 + ADC #$00A8 + TCS + PEA $8056 + PEA $0060 + PEA $8858 + PEA $6806 + TSC ; Line 17 + ADC #$00A8 + TCS + PEA $8006 + PHX + PHX + PHX + TSC ; Line 18 + ADC #$00A8 + TCS + LDA $9D,S + AND #$0F00 + ORA #$005A + STA $9D,S + PHX + PEA $00AA + PEA $5550 + PEA $550A + TSC ; Line 19 + ADC #$00A4 + TCS + LDA $A1,S + AND #$0F00 + ORA #$005A + STA $A1,S + SEP #$20 + LDA $9C,S + AND #$F0 + STA $9C,S + REP #$30 + PEA $5500 + PEA $050A + TSC ; Line 20 + ADC #$00A4 + TCS + LDA $A1,S + AND #$0F00 + ORA #$005A + STA $A1,S + SEP #$20 + LDA $9C,S + AND #$F0 + STA $9C,S + REP #$30 + PEA $5500 + PEA $05A5 + TSC ; Line 21 + ADC #$00A4 + TCS + LDA $A1,S + AND #$0F00 + ORA #$005A + STA $A1,S + SEP #$20 + LDA $9C,S + AND #$F0 + STA $9C,S + REP #$30 + PEA $5502 + PEA $55A5 + TSC ; Line 22 + ADC #$00A4 + TCS + PEA $5502 + PHX + TSC ; Line 23 + ADC #$00A5 + TCS + PHX + PHD + PEA $4402 + TSC ; Line 24 + ADC #$00A6 + TCS + SEP #$20 + LDA $9A,S + AND #$F0 + STA $9A,S + REP #$30 + PHY + PHD + PEA $4202 + TSC ; Line 25 + ADC #$00A6 + TCS + LDA $9A,S + AND #$00F0 + ORA #$5400 + STA $9A,S + SEP #$20 + LDA $A0,S + AND #$0F + STA $A0,S + REP #$30 + PEA $4044 + PHD + PHY + TSC ; Line 26 + ADC #$00A5 + TCS + LDA #$2040 + STA $9D,S + LDA $9B,S + AND #$00F0 + ORA #$4400 + STA $9B,S + PHX + PEA $2040 + TSC ; Line 28 + ADC #$0142 + TCS + LDA #$4404 + STA $9D,S + LDA $9F,S + AND #$0F00 + ORA #$0044 + STA $9F,S + PEA $4044 + PEA $5402 + TSC ; Line 30 + ADC #$0146 + TCS + SEP #$20 + LDA #$00 + STA $A1,S + REP #$30 + PHX + PEA $0044 + PEA $4404 + TSC ; Line 31 + ADC #$00A6 + TCS + SEP #$20 + LDA $9B,S + AND #$F0 + STA $9B,S + REP #$30 + PHX + PHX + PHX + TSC ; Line 32 + ADC #$00A7 + TCS + PHX + PHX + PHX +*-- + LDAL $E1C068 ; Direct Page and Stack in Bank 00/ + AND #$FFCF + STAL $E1C068 + LDA StackAddress ; Restore Stack + TCS + PLD ; Restore Direct Page + CLI ; Enable Interrupts + RTL + +*------------------------------- +Spr_007 CLC ; 28x5, 120 bytes, 244 cycles + SEI ; Disable Interrupts + PHD ; Backup Direct Page + TSC ; Backup Stack + STA StackAddress + LDAL $E1C068 ; Direct Page and Stack in Bank 01/ + ORA #$0030 + STAL $E1C068 + TYA ; Y = Sprite Target Screen Address (upper left corner) + TCS ; New Stack address + LDX #$0000 ; Pattern #1 : 35 +*-- + LDA $A9,S ; Line 0 + AND #$0F00 + STA $A9,S + SEP #$20 + LDA $01,S + AND #$F0 + STA $01,S + REP #$30 + TSC + ADC #$0005 + TCS + PHX + PHX + TSC ; Line 1 + ADC #$00A7 + TCS + SEP #$20 + LDA $98,S + AND #$F0 + STA $98,S + REP #$30 + PHX + PHX + PHX + PHX + TSC ; Line 2 + ADC #$00AC + TCS + PHX + PHX + PHX + PHX + PHX + PHX + TSC ; Line 3 + ADC #$00AB + TCS + LDA $99,S + AND #$0F00 + STA $99,S + PHX + PHX + PHX + PHX + PHX + PHX + TSC ; Line 4 + ADC #$00A4 + TCS + PHX + PHX +*-- + LDAL $E1C068 ; Direct Page and Stack in Bank 00/ + AND #$FFCF + STAL $E1C068 + LDA StackAddress ; Restore Stack + TCS + PLD ; Restore Direct Page + CLI ; Enable Interrupts + RTL + +*------------------------------- +Spr_008 CLC ; 24x9, 264 bytes, 441 cycles + SEI ; Disable Interrupts + PHD ; Backup Direct Page + TSC ; Backup Stack + STA StackAddress + LDAL $E1C068 ; Direct Page and Stack in Bank 01/ + ORA #$0030 + STAL $E1C068 + TYA ; Y = Sprite Target Screen Address (upper left corner) + TCS ; New Stack address + LDX #$4444 ; Pattern #1 : 5 + LDY #$AAAA ; Pattern #2 : 4 + LDA #$0000 ; Pattern #3 : 3 + TCD +*-- + SEP #$20 ; Line 0 + LDA #$22 + STA $A9,S + LDA $01,S + AND #$F0 + STA $01,S + REP #$30 + TSC + ADC #$0007 + TCS + PEA $2222 + PEA $2202 + PHD + TSC ; Line 1 + ADC #$00A7 + TCS + PEA $22AA + PHY + PEA $8888 + PEA $5805 + TSC ; Line 2 + ADC #$00AA + TCS + LDA $96,S + AND #$00F0 + ORA #$4200 + STA $96,S + LDA $A0,S + AND #$0F00 + ORA #$2088 + STA $A0,S + PEA $22AA + PHY + PEA $8A58 + PEA $2200 + PEA $2004 + TSC ; Line 3 + ADC #$00A9 + TCS + LDA $A1,S + AND #$0F00 + ORA #$5044 + STA $A1,S + PEA $8888 + PEA $8858 + PEA $2444 + PEA $4400 + TSC ; Line 4 + ADC #$00A8 + TCS + LDA $97,S + AND #$00F0 + STA $97,S + LDA $A1,S + AND #$0F00 + ORA #$2000 + STA $A1,S + PHX + PEA $4424 + PEA $5044 + PEA $4404 + PEA $2004 + TSC ; Line 5 + ADC #$00AA + TCS + LDA $9C,S + AND #$0F00 + STA $9C,S + PHD + PEA $0080 + PEA $8845 + PHX + TSC ; Line 6 + ADC #$00A3 + TCS + LDA #$5055 + STA $9D,S + LDA $9F,S + AND #$0F00 + STA $9F,S + SEP #$20 + LDA $9C,S + AND #$F0 + STA $9C,S + REP #$30 + PEA $8058 + PEA $4504 + TSC ; Line 8 + ADC #$0140 + TCS + LDA $00,S + AND #$00F0 + STA $00,S + SEP #$20 + LDA $02,S + AND #$0F + STA $02,S + REP #$30 +*-- + LDAL $E1C068 ; Direct Page and Stack in Bank 00/ + AND #$FFCF + STAL $E1C068 + LDA StackAddress ; Restore Stack + TCS + PLD ; Restore Direct Page + CLI ; Enable Interrupts + RTL + +*------------------------------- +Spr_009 CLC ; 28x10, 285 bytes, 482 cycles + SEI ; Disable Interrupts + PHD ; Backup Direct Page + TSC ; Backup Stack + STA StackAddress + LDAL $E1C068 ; Direct Page and Stack in Bank 01/ + ORA #$0030 + STAL $E1C068 + TYA ; Y = Sprite Target Screen Address (upper left corner) + TCS ; New Stack address + LDX #$4444 ; Pattern #1 : 7 + LDY #$0000 ; Pattern #2 : 7 + LDA #$8888 ; Pattern #3 : 4 + TCD +*-- + SEP #$20 ; Line 0 + LDA $01,S + AND #$F0 + STA $01,S + LDA $A9,S + AND #$0F + ORA #$20 + STA $A9,S + REP #$30 + TSC + ADC #$0007 + TCS + PEA $2222 + PEA $2200 + PHY + TSC ; Line 1 + ADC #$00A7 + TCS + PEA $22AA + PEA $AA8A + PHD + PEA $5805 + TSC ; Line 2 + ADC #$00AA + TCS + LDA $96,S + AND #$00F0 + ORA #$4200 + STA $96,S + PEA $22A2 + PEA $AAAA + PEA $8A88 + PHX + PHY + TSC ; Line 3 + ADC #$00AB + TCS + SEP #$20 + LDA $A1,S + AND #$0F + ORA #$50 + STA $A1,S + REP #$30 + PEA $8288 + PHD + PEA $8845 + PEA $0244 + PEA $0420 + TSC ; Line 4 + ADC #$00AA + TCS + LDA $95,S + AND #$00F0 + STA $95,S + SEP #$20 + LDA $A1,S + AND #$0F + STA $A1,S + REP #$30 + PHX + PHX + PEA $4402 + PEA $4544 + PEA $4400 + PEA $2204 + TSC ; Line 5 + ADC #$00AC + TCS + LDA $96,S + AND #$00F0 + ORA #$4400 + STA $96,S + SEP #$20 + LDA $9E,S + AND #$0F + STA $9E,S + REP #$30 + PHY + PEA $2022 + PEA $0088 + PEA $5844 + PEA $4404 + TSC ; Line 6 + ADC #$00A7 + TCS + LDA $9D,S + AND #$0F00 + STA $9D,S + PHY + PEA $8088 + PEA $5544 + TSC ; Line 7 + ADC #$00A2 + TCS + SEP #$20 + LDA $9C,S + AND #$F0 + STA $9C,S + REP #$30 + PEA $8855 + PEA $4404 + TSC ; Line 8 + ADC #$00A4 + TCS + TYA + STA $9D,S + SEP #$20 + LDA $9C,S + AND #$F0 + STA $9C,S + REP #$30 + PHY + PEA $5555 +*-- + LDAL $E1C068 ; Direct Page and Stack in Bank 00/ + AND #$FFCF + STAL $E1C068 + LDA StackAddress ; Restore Stack + TCS + PLD ; Restore Direct Page + CLI ; Enable Interrupts + RTL + +*------------------------------- +Spr_010 CLC ; 32x12, 379 bytes, 643 cycles + SEI ; Disable Interrupts + PHD ; Backup Direct Page + TSC ; Backup Stack + STA StackAddress + LDAL $E1C068 ; Direct Page and Stack in Bank 01/ + ORA #$0030 + STAL $E1C068 + TYA ; Y = Sprite Target Screen Address (upper left corner) + TCS ; New Stack address + LDX #$4444 ; Pattern #1 : 10 + LDY #$8888 ; Pattern #2 : 8 + LDA #$0000 ; Pattern #3 : 6 + TCD +*-- + LDA $01,S ; Line 0 + AND #$00F0 + STA $01,S + LDA $A9,S + AND #$0F00 + ORA #$2022 + STA $A9,S + TSC + ADC #$0008 + TCS + PEA $2222 + PEA $2200 + PHD + TSC ; Line 1 + ADC #$00A6 + TCS + SEP #$20 + LDA $99,S + AND #$F0 + STA $99,S + REP #$30 + PEA $AAAA + PEA $8A88 + PHY + PEA $5805 + TSC ; Line 2 + ADC #$00AB + TCS + SEP #$20 + LDA $A2,S + AND #$0F + ORA #$20 + STA $A2,S + REP #$30 + PEA $22A2 + PEA $AAAA + PEA $8A88 + PEA $5544 + PEA $4400 + TSC ; Line 3 + ADC #$00AB + TCS + LDA $94,S + AND #$00F0 + ORA #$0400 + STA $94,S + PEA $22AA + PEA $AAAA + PEA $8A88 + PEA $4522 + PEA $0200 + PEA $4204 + TSC ; Line 4 + ADC #$00AD + TCS + LDA $93,S + AND #$00F0 + ORA #$4200 + STA $93,S + SEP #$20 + LDA $A1,S + AND #$0F + ORA #$20 + STA $A1,S + REP #$30 + PEA $A2AA + PEA $AA8A + PHY + PEA $4502 + PEA $4044 + PEA $0020 + TSC ; Line 5 + ADC #$00AC + TCS + SEP #$20 + LDA $A1,S + AND #$0F + ORA #$50 + STA $A1,S + REP #$30 + PHY + PHY + PEA $8858 + PEA $4440 + PHX + PEA $0400 + TSC ; Line 6 + ADC #$00AC + TCS + LDA $A0,S + AND #$0F00 + ORA #$2002 + STA $A0,S + SEP #$20 + LDA $93,S + AND #$F0 + STA $93,S + REP #$30 + PHX + PHX + PHX + PEA $0245 + PHX + PEA $4400 + PEA $2004 + TSC ; Line 7 + ADC #$00AD + TCS + LDA $95,S + AND #$00F0 + ORA #$4400 + STA $95,S + LDA $9D,S + AND #$0F00 + STA $9D,S + PHD + PEA $2022 + PEA $0088 + PEA $5855 + PHX + PEA $0400 + TSC ; Line 8 + ADC #$00A8 + TCS + SEP #$20 + LDA $9F,S + AND #$0F + STA $9F,S + REP #$30 + PEA $0080 + PHY + PEA $5544 + TSC ; Line 9 + ADC #$00A4 + TCS + SEP #$20 + LDA $9A,S + AND #$F0 + STA $9A,S + REP #$30 + PHD + PEA $8855 + PEA $4404 + TSC ; Line 10 + ADC #$00A4 + TCS + TDC + STA $9D,S + SEP #$20 + LDA $9C,S + AND #$F0 + STA $9C,S + REP #$30 + PHD + PEA $5555 +*-- + LDAL $E1C068 ; Direct Page and Stack in Bank 00/ + AND #$FFCF + STAL $E1C068 + LDA StackAddress ; Restore Stack + TCS + PLD ; Restore Direct Page + CLI ; Enable Interrupts + RTL + +*------------------------------- +Spr_011 CLC ; 32x16, 484 bytes, 800 cycles + SEI ; Disable Interrupts + PHD ; Backup Direct Page + TSC ; Backup Stack + STA StackAddress + LDAL $E1C068 ; Direct Page and Stack in Bank 01/ + ORA #$0030 + STAL $E1C068 + TYA ; Y = Sprite Target Screen Address (upper left corner) + TCS ; New Stack address + LDX #$0000 ; Pattern #1 : 5 + LDY #$4444 ; Pattern #2 : 4 + LDA #$5555 ; Pattern #3 : 4 + TCD +*-- + LDA #$4224 ; Line 0 + STA $0D,S + LDA #$3924 + STA $AC,S + LDA $AE,S + AND #$0F00 + ORA #$209A + STA $AE,S + TSC ; Line 2 + ADC #$0140 + TCS + LDA #$A3AA + STA $AB,S + LDA $05,S + AND #$0F00 + ORA #$2022 + STA $05,S + LDA $A9,S + AND #$00F0 + ORA #$2202 + STA $A9,S + LDA $AD,S + AND #$0F00 + ORA #$0039 + STA $AD,S + SEP #$20 + LDA $A3,S + AND #$F0 + ORA #$02 + STA $A3,S + REP #$30 + TSC + ADC #$000E + TCS + PEA $A2A3 + PEA $AA24 + TSC ; Line 3 + ADC #$009D + TCS + LDA $9B,S + AND #$00F0 + ORA #$2902 + STA $9B,S + PEA $2292 + PEA $9922 + TSC ; Line 4 + ADC #$00AA + TCS + LDA $9F,S + AND #$0F00 + ORA #$0044 + STA $9F,S + SEP #$20 + LDA $94,S + AND #$F0 + ORA #$02 + STA $94,S + REP #$30 + PEA $4034 + PEA $13AA + PEA $2A22 + PEA $9999 + PEA $9999 + TSC ; Line 5 + ADC #$00A8 + TCS + SEP #$20 + LDA $A2,S + AND #$0F + STA $A2,S + REP #$30 + PEA $5155 + PEA $A54A + PEA $9449 + PEA $4499 + PEA $9929 + TSC ; Line 6 + ADC #$00AB + TCS + LDA $94,S + AND #$00F0 + ORA #$4400 + STA $94,S + PEA $0055 + PEA $4524 + PEA $A54A + PEA $A488 + PHY + PEA $9429 + TSC ; Line 7 + ADC #$00AD + TCS + LDA $93,S + AND #$00F0 + STA $93,S + PEA $8008 + PEA $5594 + PEA $4952 + PEA $A54A + PEA $5488 + PEA $8808 + TSC ; Line 8 + ADC #$00AC + TCS + PEA $9020 + PEA $4599 + PEA $AA24 + PHD + PEA $4555 + PEA $5585 + TSC ; Line 9 + ADC #$00AC + TCS + PEA $9020 + PEA $55A4 + PEA $9A49 + PHY + PEA $4522 + PEA $4244 + PEA $8808 + TSC ; Line 10 + ADC #$00AE + TCS + PEA $9008 + PEA $5245 + PEA $9924 + PHD + PEA $5440 + PEA $2242 + PEA $4502 + TSC ; Line 11 + ADC #$00AE + TCS + LDA $93,S + AND #$00F0 + STA $93,S + LDA $9F,S + AND #$0F00 + STA $9F,S + PEA $8040 + PEA $2055 + PHY + PEA $2244 + PEA $4400 + PEA $0040 + PEA $2402 + TSC ; Line 12 + ADC #$00AC + TCS + LDA $A0,S + AND #$0F00 + STA $A0,S + SEP #$20 + LDA $97,S + AND #$F0 + STA $97,S + REP #$30 + PEA $0452 + PEA $4544 + PEA $0200 + PEA $0040 + PEA $990A + TSC ; Line 13 + ADC #$00A9 + TCS + LDA $9A,S + AND #$00F0 + ORA #$4400 + STA $9A,S + SEP #$20 + LDA $A0,S + AND #$0F + STA $A0,S + REP #$30 + PEA $2022 + PEA $2220 + PHD + PHX + TSC ; Line 14 + ADC #$00A7 + TCS + TXA + STA $9C,S + SEP #$20 + LDA $9E,S + AND #$0F + STA $9E,S + REP #$30 + PHX + PEA $2042 +*-- + LDAL $E1C068 ; Direct Page and Stack in Bank 00/ + AND #$FFCF + STAL $E1C068 + LDA StackAddress ; Restore Stack + TCS + PLD ; Restore Direct Page + CLI ; Enable Interrupts + RTL + +*------------------------------- +Spr_012 CLC ; 20x7, 183 bytes, 306 cycles + SEI ; Disable Interrupts + PHD ; Backup Direct Page + TSC ; Backup Stack + STA StackAddress + LDAL $E1C068 ; Direct Page and Stack in Bank 01/ + ORA #$0030 + STAL $E1C068 + TYA ; Y = Sprite Target Screen Address (upper left corner) + TCS ; New Stack address + LDX #$2222 ; Pattern #1 : 4 + LDY #$6022 ; Pattern #2 : 2 + LDA #$9A86 ; Pattern #3 : 2 + TCD +*-- + LDA #$84A9 ; Line 0 + STA $01,S + LDA $A1,S + AND #$00F0 + ORA #$6204 + STA $A1,S + SEP #$20 + LDA $03,S + AND #$0F + STA $03,S + REP #$30 + TSC ; Line 1 + ADC #$00A6 + TCS + LDA $9A,S + AND #$00F0 + ORA #$4202 + STA $9A,S + PHY + PHX + TSC ; Line 2 + ADC #$00A5 + TCS + SEP #$20 + LDA $A1,S + AND #$0F + STA $A1,S + REP #$30 + PEA $8029 + PEA $A9AA + PHD + TSC ; Line 3 + ADC #$00A6 + TCS + LDA $99,S + AND #$00F0 + ORA #$4202 + STA $99,S + PEA $6682 + PEA $4855 + PEA $6498 + PEA $4A86 + TSC ; Line 4 + ADC #$00A8 + TCS + LDA $9A,S + AND #$00F0 + ORA #$6204 + STA $9A,S + PEA $6029 + PEA $A9AA + PHD + TSC ; Line 5 + ADC #$00A5 + TCS + LDA #$84A9 + STA $9B,S + SEP #$20 + LDA $9D,S + AND #$0F + STA $9D,S + REP #$30 + PHY + PHX +*-- + LDAL $E1C068 ; Direct Page and Stack in Bank 00/ + AND #$FFCF + STAL $E1C068 + LDA StackAddress ; Restore Stack + TCS + PLD ; Restore Direct Page + CLI ; Enable Interrupts + RTL + +*------------------------------- +Spr_013 CLC ; 32x13, 399 bytes, 683 cycles + SEI ; Disable Interrupts + PHD ; Backup Direct Page + TSC ; Backup Stack + STA StackAddress + LDAL $E1C068 ; Direct Page and Stack in Bank 01/ + ORA #$0030 + STAL $E1C068 + TYA ; Y = Sprite Target Screen Address (upper left corner) + TCS ; New Stack address + LDX #$4444 ; Pattern #1 : 12 + LDY #$0000 ; Pattern #2 : 11 + LDA #$AAAA ; Pattern #3 : 8 + TCD +*-- + LDA $08,S ; Line 0 + AND #$0F00 + ORA #$2022 + STA $08,S + SEP #$20 + LDA $01,S + AND #$F0 + STA $01,S + LDA $AB,S + AND #$0F + ORA #$20 + STA $AB,S + REP #$30 + TSC + ADC #$0007 + TCS + PEA $2222 + PHY + PHY + TSC ; Line 1 + ADC #$00A9 + TCS + SEP #$20 + LDA #$A2 + STA $A1,S + REP #$30 + PEA $22A2 + PHD + PEA $8A88 + PEA $8888 + PEA $5805 + TSC ; Line 2 + ADC #$00AA + TCS + LDA $97,S + AND #$00F0 + STA $97,S + PHD + PEA $AA8A + PEA $8845 + PHX + PHY + TSC ; Line 3 + ADC #$00AC + TCS + SEP #$20 + LDA #$22 + STA $A1,S + REP #$30 + PEA $22A2 + PHD + PEA $AA88 + PEA $5844 + PEA $4404 + TSC ; Line 4 + ADC #$00AA + TCS + LDA $94,S + AND #$00F0 + ORA #$4200 + STA $94,S + SEP #$20 + LDA $A2,S + AND #$0F + ORA #$20 + STA $A2,S + REP #$30 + PHD + PHD + PEA $8858 + PEA $4420 + PHY + PEA $2204 + TSC ; Line 5 + ADC #$00AD + TCS + SEP #$20 + LDA #$45 + STA $A1,S + REP #$30 + PEA $8888 + PEA $8888 + PEA $8858 + PEA $2400 + PHX + PEA $0020 + TSC ; Line 6 + ADC #$00AC + TCS + SEP #$20 + LDA $93,S + AND #$F0 + STA $93,S + REP #$30 + PHX + PHX + PEA $4424 + PEA $5044 + PHX + PEA $0400 + PEA $2204 + TSC ; Line 7 + ADC #$00AF + TCS + SEP #$20 + LDA $93,S + AND #$F0 + STA $93,S + REP #$30 + PEA $0020 + PEA $2222 + PEA $2202 + PEA $8088 + PEA $5544 + PHX + PHY + TSC ; Line 8 + ADC #$00AD + TCS + LDA $94,S + AND #$00F0 + ORA #$4400 + STA $94,S + LDA $9A,S + AND #$0F00 + STA $9A,S + PHY + PHY + PHY + PEA $8888 + PEA $4544 + PEA $4404 + TSC ; Line 9 + ADC #$00A5 + TCS + SEP #$20 + LDA $A1,S + AND #$0F + STA $A1,S + REP #$30 + PEA $8858 + PEA $4544 + TSC ; Line 10 + ADC #$00A4 + TCS + LDA #$5055 + STA $9C,S + LDA $9A,S + AND #$00F0 + ORA #$5500 + STA $9A,S + LDA $9E,S + AND #$0F00 + STA $9E,S + PEA $0080 + PEA $5845 + PEA $4404 + TSC ; Line 12 + ADC #$0140 + TCS + LDA $00,S + AND #$00F0 + STA $00,S + LDA $02,S + AND #$0F00 + STA $02,S +*-- + LDAL $E1C068 ; Direct Page and Stack in Bank 00/ + AND #$FFCF + STAL $E1C068 + LDA StackAddress ; Restore Stack + TCS + PLD ; Restore Direct Page + CLI ; Enable Interrupts + RTL + +*------------------------------- +Spr_014 CLC ; 16x3, 91 bytes, 170 cycles + SEI ; Disable Interrupts + PHD ; Backup Direct Page + TSC ; Backup Stack + STA StackAddress + LDAL $E1C068 ; Direct Page and Stack in Bank 01/ + ORA #$0030 + STAL $E1C068 + TYA ; Y = Sprite Target Screen Address (upper left corner) + TCS ; New Stack address + LDX #$0000 ; Pattern #1 : 15 +*-- + SEP #$20 ; Line 0 + LDA $06,S + AND #$0F + STA $06,S + LDA $A0,S + AND #$F0 + STA $A0,S + REP #$30 + TSC + ADC #$0005 + TCS + PHX + PHX + PHX + TSC ; Line 1 + ADC #$00A7 + TCS + SEP #$20 + LDA $A0,S + AND #$0F + STA $A0,S + REP #$30 + PHX + PHX + PHX + TSC ; Line 2 + ADC #$00A5 + TCS + PHX + PHX + PHX +*-- + LDAL $E1C068 ; Direct Page and Stack in Bank 00/ + AND #$FFCF + STAL $E1C068 + LDA StackAddress ; Restore Stack + TCS + PLD ; Restore Direct Page + CLI ; Enable Interrupts + RTL + +*-------------------------------