From 3b0388fdaf1bd9679c49821aef1cbe964fbc0749 Mon Sep 17 00:00:00 2001 From: pkali Date: Thu, 11 Aug 2022 10:15:38 -0400 Subject: [PATCH] Scorch50 splash --- artwork/Scorch50.asm | 888 +++++++++++++++++++++++++++++++++++++++++++ artwork/Scorch50.fnt | Bin 0 -> 9216 bytes scorch.asm | 2 +- scorch.xex | Bin 43483 -> 50772 bytes 4 files changed, 889 insertions(+), 1 deletion(-) create mode 100644 artwork/Scorch50.asm create mode 100644 artwork/Scorch50.fnt diff --git a/artwork/Scorch50.asm b/artwork/Scorch50.asm new file mode 100644 index 0000000..faf9418 --- /dev/null +++ b/artwork/Scorch50.asm @@ -0,0 +1,888 @@ +/***************************************/ +/* Use MADS http://mads.atari8.info/ */ +/* Mode: DLI (char mode) */ +/***************************************/ + + ;icl "Scorch50.h" + +; --- dmsc LZSS player routine on zero page + org $80 + +chn_copy .ds 9 +chn_pos .ds 9 +bptr .ds 2 +cur_pos .ds 1 +chn_bits .ds 1 + +bit_data .ds 1 + +fcnt .ds 2 +fadr .ds 2 +fhlp .ds 2 +cloc .ds 1 +regA .ds 1 +regX .ds 1 +regY .ds 1 + +WIDTH = 40 +HEIGHT = 30 + +; --- BASIC switch OFF + org $2000\ mva #$ff portb\ rts\ ini $2000 + +; --- MAIN PROGRAM + org $2000 +ant dta $C2,a(scr) + dta $02,$82,$02,$02,$82,$02,$82,$02,$82,$02,$02,$02,$82,$02,$82,$82 + dta $02,$02,$82,$02,$02,$82,$02,$02,$82,$82,$02,$82,$22 + ;dta $42,a(verline) + dta $41,a(ant) + +;verline +; :37 dta d" " +; dta build + +scr ins "Scorch50.scr" + + .ds 0*40 + + .ALIGN $0400 +fnt ins "Scorch50.fnt" + + ift USESPRITES + .ALIGN $0800 +pmg .ds $0300 + ift FADECHR = 0 + SPRITES + els + .ds $500 + eif + eif + + +song_data + ins 'mmm_16.lzs' +song_end + +POKEY = $D200 + +buffers + .ds 256 * 9 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Song Initialization - this runs in the first tick: +; +.proc init_song + + mva #1 bit_data + + ; Example: here initializes song pointer: + + ;mwa #song_data song_ptr + + ; Init all channels: + ldx #8 + ldy #0 +clear + ; Read just init value and store into buffer and POKEY + jsr get_byte + sta POKEY, x + sty chn_copy, x +cbuf + sta buffers + 255 + inc cbuf + 2 + dex + bpl clear + + ; Initialize buffer pointer: + sty bptr + sty cur_pos + rts +.endp + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Wait for next frame +; +.proc wait_frame + + lda 20 +delay + cmp 20 + beq delay +.endp + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Play one frame of the song +; +.proc play_frame + lda #>buffers + sta bptr+1 + + lda song_data + sta chn_bits + ldx #8 + + ; Loop through all "channels", one for each POKEY register +chn_loop: + lsr chn_bits + bcs skip_chn ; C=1 : skip this channel + + lda chn_copy, x ; Get status of this stream + bne do_copy_byte ; If > 0 we are copying bytes + + ; We are decoding a new match/literal + lsr bit_data ; Get next bit + bne got_bit + jsr get_byte ; Not enough bits, refill! + ror ; Extract a new bit and add a 1 at the high bit (from C set above) + sta bit_data ; +got_bit: + jsr get_byte ; Always read a byte, it could mean "match size/offset" or "literal byte" + bcs store ; Bit = 1 is "literal", bit = 0 is "match" + + sta chn_pos, x ; Store in "copy pos" + + jsr get_byte + sta chn_copy, x ; Store in "copy length" + + ; And start copying first byte +do_copy_byte: + dec chn_copy, x ; Decrease match length, increase match position + inc chn_pos, x + ldy chn_pos, x + + ; Now, read old data, jump to data store + lda (bptr), y + +store: + ldy cur_pos + sta POKEY, x ; Store to output and buffer + sta (bptr), y + +skip_chn: + ; Increment channel buffer pointer + inc bptr+1 + + dex + bpl chn_loop ; Next channel + + inc cur_pos +.endp + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Check for ending of song and jump to the next frame +; + +; not checking really so the tune gets funky :))) + ;lda song_ptr + 1 + ;cmp #>song_end + ;bne wait_frame + ;lda song_ptr + ;cmp #pmg pmbase ;missiles and players data address + mva #$03 pmcntl ;enable players and missiles + eif + + lda:cmp:req $14 ;wait 1 frame + + sei ;stop IRQ interrupts + mva #$00 nmien ;stop NMI interrupts + sta dmactl + mva #$fe portb ;switch off ROM to get 16k more ram + + mwa #NMI $fffa ;new NMI handler + + mva #1 vscrol + + mva #$c0 nmien ;switch on NMI+DLI again + + ift CHANGES ;if label CHANGES defined + +_lp lda trig0 ; FIRE #0 + beq stop + + lda trig1 ; FIRE #1 + beq stop + + lda consol ; START + and #1 + beq stop + + lda skctl + and #$04 + bne _lp ;wait to press any key; here you can put any own routine + + els + +null jmp DLI.dli1 ;CPU is busy here, so no more routines allowed + + eif + + +stop + mva #$00 pmcntl ;PMG disabled + tax + sta:rne hposp0,x+ + + mva #$ff portb ;ROM switch on + mva #$40 nmien ;only NMI interrupts, DLI disabled + cli ;IRQ enabled + + lda #0 + ldx #8 +@ sta POKEY,x + dex + bpl @- + + ;no glitching please (issue #67) + lda #0 + sta $D400 ;dmactl + sta $022F ;dmactls + rts ;return to ... DOS + +; --- DLI PROGRAM + +.local DLI + + ?old_dli = * + + ift !CHANGES + +dli1 lda trig0 ; FIRE #0 + beq stop + + lda trig1 ; FIRE #1 + beq stop + + lda consol ; START + and #1 + beq stop + + lda skctl + and #$04 + beq stop + + lda vcount + cmp #$02 + bne dli1 + + :3 sta wsync + + DLINEW dli13 + + eif + +dli_start + +dli13 + sta regA + + sta wsync ;line=8 + sta wsync ;line=9 + sta wsync ;line=10 + sta wsync ;line=11 + sta wsync ;line=12 + sta wsync ;line=13 +c9 lda #$14 + sta wsync ;line=14 + sta colpm3 + DLINEW DLI.dli2 1 0 0 + +dli2 + sta regA + lda >fnt+$400*$01 + sta wsync ;line=24 + sta chbase + DLINEW dli3 1 0 0 + +dli3 + sta regA + lda >fnt+$400*$02 + sta wsync ;line=48 + sta chbase + sta wsync ;line=49 + sta wsync ;line=50 + sta wsync ;line=51 +s3 lda #$07 + sta wsync ;line=52 + sta sizem + DLINEW dli14 1 0 0 + +dli14 + sta regA + stx regX + sty regY + +x8 lda #$A3 + sta wsync ;line=64 + sta hposp3 +x9 lda #$AB + sta wsync ;line=65 + sta hposm3 + sta wsync ;line=66 + sta wsync ;line=67 + sta wsync ;line=68 + sta wsync ;line=69 + sta wsync ;line=70 +s4 lda #$13 +x10 ldx #$A6 + sta wsync ;line=71 + sta sizem + stx hposm2 +s5 lda #$01 +x11 ldx #$72 +x12 ldy #$62 + sta wsync ;line=72 + sta sizep2 + sta sizep3 + stx hposp2 + sty hposp3 +x13 lda #$A9 + sta wsync ;line=73 + sta hposp1 + DLINEW dli4 1 1 1 + +dli4 + sta regA + lda >fnt+$400*$03 + sta wsync ;line=80 + sta chbase + DLINEW dli5 1 0 0 + +dli5 + sta regA + stx regX + lda >fnt+$400*$04 + sta wsync ;line=112 + sta chbase + sta wsync ;line=113 + sta wsync ;line=114 + sta wsync ;line=115 + sta wsync ;line=116 + sta wsync ;line=117 + sta wsync ;line=118 +s6 lda #$07 +x14 ldx #$A3 + sta wsync ;line=119 + sta sizem + stx hposm1 +s7 lda #$01 +x15 ldx #$93 + sta wsync ;line=120 + sta sizep1 + stx hposp1 + DLINEW dli15 1 1 0 + +dli15 + sta regA + stx regX + + sta wsync ;line=128 + sta wsync ;line=129 + sta wsync ;line=130 + sta wsync ;line=131 +x16 lda #$4A + sta wsync ;line=132 + sta hposp1 +c10 lda #$D4 + sta wsync ;line=133 + sta color2 +s8 lda #$C3 +x17 ldx #$5A + sta wsync ;line=134 + sta sizem + stx hposm3 + DLINEW dli6 1 1 0 + +dli6 + sta regA + stx regX + sty regY + lda >fnt+$400*$05 + sta wsync ;line=136 + sta chbase + sta wsync ;line=137 + sta wsync ;line=138 + sta wsync ;line=139 + sta wsync ;line=140 + sta wsync ;line=141 + sta wsync ;line=142 +s9 lda #$C7 +x18 ldx #$A9 + sta wsync ;line=143 + sta sizem + stx hposm1 +s10 lda #$D7 +x19 ldx #$9E +c11 ldy #$02 + sta wsync ;line=144 + sta sizem + stx hposm2 + sty colpm2 + sta wsync ;line=145 +c12 lda #$04 + sta wsync ;line=146 + sta colpm1 + sta wsync ;line=147 + sta wsync ;line=148 + sta wsync ;line=149 +s11 lda #$00 +x20 ldx #$74 +c13 ldy #$02 + sta wsync ;line=150 + sta sizep3 + stx hposp3 + sty colpm3 + sta wsync ;line=151 + sta wsync ;line=152 + sta wsync ;line=153 + sta wsync ;line=154 + sta wsync ;line=155 + sta wsync ;line=156 + sta wsync ;line=157 +c14 lda #$04 + sta wsync ;line=158 + sta color0 + DLINEW dli7 1 1 1 + +dli7 + sta regA + lda >fnt+$400*$06 + sta wsync ;line=160 + sta chbase + DLINEW dli8 1 0 0 + +dli8 + sta regA + stx regX + sty regY + lda >fnt+$400*$07 + sta wsync ;line=184 + sta chbase + sta wsync ;line=185 +s12 lda #$00 +x21 ldx #$8E +c15 ldy #$08 + sta wsync ;line=186 + sta sizep2 + stx hposp2 + sty colpm2 +x22 lda #$4C +c16 ldx #$0E + sta wsync ;line=187 + sta hposp3 + stx colpm3 +c17 lda #$0A +c18 ldx #$34 + sta wsync ;line=188 + sta color1 + stx colpm3 +s13 lda #$43 +x23 ldx #$49 + sta wsync ;line=189 + sta sizem + stx hposm3 +c19 lda #$08 +c20 ldx #$34 + sta wsync ;line=190 + sta color1 + stx colpm2 + sta wsync ;line=191 +c21 lda #$0A + sta wsync ;line=192 + sta color1 +c22 lda #$08 + sta wsync ;line=193 + sta color1 +c23 lda #$0A + sta wsync ;line=194 + sta color1 +c24 lda #$34 + sta wsync ;line=195 + sta color2 +c25 lda #$0C + sta wsync ;line=196 + sta color1 +c26 lda #$0A + sta wsync ;line=197 + sta color1 +c27 lda #$0C + sta wsync ;line=198 + sta color1 + sta wsync ;line=199 + sta wsync ;line=200 +c28 lda #$0E + sta wsync ;line=201 + sta color1 +c29 lda #$0C + sta wsync ;line=202 + sta color1 +c30 lda #$0E + sta wsync ;line=203 + sta color1 +c31 lda #$0C + sta wsync ;line=204 + sta color1 +c32 lda #$0E + sta wsync ;line=205 + sta color1 + DLINEW dli16 1 1 1 + +dli16 + sta regA + + sta wsync ;line=208 + sta wsync ;line=209 +c33 lda #$0C + sta wsync ;line=210 + sta color1 +c34 lda #$0E + sta wsync ;line=211 + sta color1 +c35 lda #$0C + sta wsync ;line=212 + sta color1 + DLINEW dli9 1 0 0 + +dli9 + sta regA + stx regX + sty regY + lda >fnt+$400*$08 +c36 ldx #$0A + sta wsync ;line=216 + sta chbase + stx color1 +c37 lda #$0C + sta wsync ;line=217 + sta color1 +c38 lda #$0A +x24 ldx #$9D +c39 ldy #$34 + sta wsync ;line=218 + sta color1 + stx hposm1 + sty colpm1 +s14 lda #$03 +x25 ldx #$7D + sta wsync ;line=219 + sta sizep3 + stx hposp3 +c40 lda #$08 +s15 ldx #$13 +x26 ldy #$45 + sta wsync ;line=220 + sta color1 + stx sizem + sty hposm2 +s16 lda #$03 +x27 ldx #$59 + sta wsync ;line=221 + sta sizep2 + stx hposp2 +s17 lda #$53 +x28 ldx #$49 +x29 ldy #$79 + sta wsync ;line=222 + sta sizem + stx hposp1 + sty hposm3 +c41 lda #$06 +c42 ldx #$00 + sta wsync ;line=223 + sta color1 + stx color2 + lda >fnt+$400*$01 +s18 ldx #$50 +x30 ldy #$44 + sta wsync ;line=224 + sta chbase + stx sizem + sty hposm0 + sta wsync ;line=225 +c43 lda #$08 + sta wsync ;line=226 + sta color1 +c44 lda #$0C + sta wsync ;line=227 + sta color1 + sta wsync ;line=228 + sta wsync ;line=229 +c45 lda #$0E + sta wsync ;line=230 + sta color1 + DLINEW dli10 1 1 1 + +dli10 + sta regA + lda >fnt+$400*$00 + sta wsync ;line=232 + sta chbase + DLINEW dli11 1 0 0 + + lda regA + rti + +dli11 + sta regA + + lda #>$a000 ; system font + sta wsync ;line=232 + sta chbase + lda #$01 + sta gtictl + + lda regA + rti + + +.endl + +; --- + +CHANGES = 1 +FADECHR = 0 + +SCHR = 127 + +; --- + +.proc NMI + + bit nmist + bpl VBL + + jmp DLI.dli_start +dliv equ *-2 + +VBL + sta regA + stx regX + sty regY + + sta nmist ;reset NMI flag + + mwa #ant dlptr ;ANTIC address program + + mva #@dmactl(standard|dma|lineX1|players|missiles) dmactl ;set new screen width + + inc cloc ;little timer + +; Initial values + + lda >fnt+$400*$00 + sta chbase +c0 lda #$00 + sta colbak +c1 lda #$0E + sta color1 +c2 lda #$84 + sta color2 +c3 lda #$0E + sta color3 + lda #$02 + sta chrctl + lda #$01 + sta gtictl + sta sizep0 +s0 lda #$03 + sta sizem +x0 lda #$D0 + sta hposp0 +x1 lda #$28 + sta hposm0 +c4 lda #$00 + sta colpm0 +x2 lda #$A2 + sta hposm3 +c5 lda #$0E + sta colpm3 +s1 lda #$00 + sta sizep2 + sta sizep3 +x3 lda #$92 + sta hposp2 +x4 lda #$8A + sta hposp3 +c6 lda #$14 + sta colpm2 +s2 lda #$00 + sta sizep1 +x5 lda #$9A + sta hposp1 +c7 lda #$14 + sta colpm1 +x6 lda #$A4 + sta hposm2 +x7 lda #$A6 + sta hposm1 +c8 lda #$00 + sta color0 + + mwa #DLI.dli_start dliv ;set the first address of DLI interrupt + +;this area is for yours routines + jsr play_frame + +quit + lda regA + ldx regX + ldy regY + rti + +.endp + +; --- + ini main +; --- + + opt l- + +.MACRO SPRITES +missiles + .he 00 00 00 00 00 00 00 00 03 03 C3 03 03 03 03 03 + .he 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 + .he 03 03 03 03 03 03 03 03 03 83 83 83 C3 C3 C3 C3 + .he C3 C3 C3 C3 C3 E3 E3 E3 E3 E3 E3 F3 F3 F3 F3 FB + .he FB FB FB FB FF FF FF FF F3 33 83 83 83 83 C3 D3 + .he D3 D3 13 03 03 03 03 03 03 03 03 03 03 03 03 03 + .he 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 + .he 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 0F + .he 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 03 03 03 03 C3 C3 + .he C3 C3 C3 C3 C3 C3 C3 C3 C3 D3 FF FF 3F 3F 3F 3F + .he 3F 3F 33 13 03 03 03 03 03 03 03 03 03 03 03 03 + .he 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 + .he 03 03 03 03 03 03 03 43 43 C3 C3 C3 C3 03 03 03 + .he 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 + .he 03 03 0F 0F 3F 3F FF FC FE FE FF DB 03 03 03 03 + .he 03 03 03 03 03 03 03 03 00 00 00 00 00 00 00 00 +player0 + .he 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF + .he FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .he FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .he FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .he FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .he FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .he FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .he FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .he FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .he FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .he FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .he FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .he FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .he FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .he FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + .he FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 +player1 + .he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + .he 00 00 00 00 00 00 00 00 F0 FC FE FE FF FF FF FF + .he FF 0F 0F 0F 0F 0F 0F 0F 0F 0F 07 07 07 07 07 07 + .he 03 03 03 FF FF FF FF FF CF CF FF FF FF FF FF 9F + .he 9F FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 + .he 00 F0 F0 F0 F0 78 F8 78 78 78 78 38 78 38 3C 3C + .he 3C 3C 1C 3C 1C 1C 1C 1C 1E 1E 1E 1E 0E 1E 0E 0E + .he 0E 0F 07 0F 07 0F 07 07 07 07 07 07 06 06 06 06 + .he FF FF FF FF FF FF FF FF FF FF FF 00 00 3E 3F 7F + .he 7F 7F 7F 7F 7F 7F 7F 3F 3F 3F 00 00 00 00 00 00 + .he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + .he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + .he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + .he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + .he 00 00 00 00 00 00 FF FF FF FF FF FF 00 00 00 00 + .he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +player2 + .he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + .he 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF + .he FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + .he 00 00 00 FF FF FF FF FF 99 99 FF FF FF FF FF 33 + .he 33 FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 + .he 00 00 80 F0 F8 F8 F8 FC FC FC FC FC FC FC FC FC + .he FC FE FE FE FE FE FE FF FF FF FF FF FF FF FE FC + .he F8 F8 F8 F8 F0 F0 F0 F0 F0 F0 F0 F0 E0 E0 E0 E0 + .he E0 E0 E0 FC FE FE FF FF 8F 87 87 87 07 07 07 07 + .he 07 07 07 07 07 07 07 03 00 00 00 00 00 00 00 00 + .he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + .he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + .he 00 00 00 00 00 00 F8 FC FC FE FE FF FF 00 00 00 + .he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + .he 00 00 00 00 00 00 FF FF FF FF FF FF 00 00 00 00 + .he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +player3 + .he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + .he 00 00 00 00 00 00 00 00 01 07 0F 1F 1F 3F 3F 7F + .he 7F 78 78 F0 F0 F0 F0 F8 F8 F8 78 7C 7C 7C 3C 3E + .he 3E 3E 1E 1F 1F 1F 0F 0F 0F 0F 0F 1F 1F 1F 1F 1F + .he 1F 3F 3F 3F 3F 3F 3F 3F FF 7F 7F 3F 3F 1F 1F 0F + .he 1F 1F 1F 3F 3F 3F 3F 3F 3F 3B 30 30 30 30 30 30 + .he 30 30 30 30 38 3E 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F + .he 7F 7F 7F 7F 7F 7F 7F FF FF FF FF FF FF FF FF FF + .he FF FF FF FF FF FF FF FF 7F 7F 7F 7F 7F 7F FF FF + .he FF FF FF FF FE FE FE FE FE FE FE FE FC 1C FF 7E + .he 7E FE FE FE FE FF FF FF 7F 7E 7E 3C 00 00 00 00 + .he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + .he 00 00 00 00 00 7C FE FE FF FF FF 00 00 00 00 00 + .he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + .he 00 00 00 FF FF FF FF FF FF FF FF FF 00 00 00 00 + .he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +.ENDM + +USESPRITES = 1 + +.MACRO DLINEW + mva <:1 NMI.dliv + ift [>?old_dli]<>[>:1] + mva >:1 NMI.dliv+1 + eif + + ift :2 + lda regA + eif + + ift :3 + ldx regX + eif + + ift :4 + ldy regY + eif + + rti + + .def ?old_dli = * +.ENDM + diff --git a/artwork/Scorch50.fnt b/artwork/Scorch50.fnt new file mode 100644 index 0000000000000000000000000000000000000000..e4fced42e789ac9a438caee1dd7ddc56e8a639d4 GIT binary patch literal 9216 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 a{QRqLe)>!gj0z+Eh5mxTUl9011pWstHv;Vd literal 0 HcmV?d00001 diff --git a/scorch.asm b/scorch.asm index 1346ad3..485e28f 100644 --- a/scorch.asm +++ b/scorch.asm @@ -118,7 +118,7 @@ icl 'lib/macro.hea' ;splash screen and musix - icl 'artwork/HIMARS14.asm' + icl 'artwork/Scorch50.asm' ;Game loading address ORG $3000 WeaponFont diff --git a/scorch.xex b/scorch.xex index cb03eb0bcca9753a3c8481ec229f2e40a9c97200..66f3718eb4a07ccdb19ce701e6ca5105ea3e42c7 100644 GIT binary patch delta 11079 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 G+WrSP#ngcS