mirror of
https://github.com/pkali/scorch_src.git
synced 2026-05-20 22:34:21 +02:00
283 lines
4.8 KiB
NASM
283 lines
4.8 KiB
NASM
/***************************************/
|
|
/* Use MADS http://mads.atari8.info/ */
|
|
/* Mode: GED- (bitmap mode) */
|
|
/***************************************/
|
|
|
|
icl "splash.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
|
|
; ---
|
|
|
|
org $00
|
|
|
|
fcnt .ds 2
|
|
fadr .ds 2
|
|
fhlp .ds 2
|
|
cloc .ds 1
|
|
regA .ds 1
|
|
regX .ds 1
|
|
regY .ds 1
|
|
byt2 .ds 1
|
|
|
|
zc .ds ZCOLORS
|
|
|
|
* --- BASIC switch OFF
|
|
org $2000\ mva #$ff portb\ rts\ ini $2000
|
|
|
|
* --- MAIN PROGRAM
|
|
org $2010
|
|
IFT PIC_HEIGHT>=204
|
|
scr ins "output.png.mic", 0, 8160
|
|
:16 .byte 0
|
|
ins "output.png.mic" , +8160
|
|
ELS
|
|
scr ins "output.png.mic"
|
|
EIF
|
|
|
|
.ifdef nil_used
|
|
nil :8*40 brk
|
|
eif
|
|
|
|
.ALIGN $0400
|
|
ant ANTIC_PROGRAM scr,ant
|
|
|
|
fnt
|
|
|
|
ift USESPRITES
|
|
.ALIGN $0800
|
|
.ds $0300
|
|
pmg SPRITES
|
|
eif
|
|
|
|
FontSplash
|
|
ins '../../artwork/weapons_AW6_mod.fnt' ; 'artwork/weapons.fnt'
|
|
|
|
mother
|
|
; dta d" The Mother of All Games "
|
|
dta d" Father Unknown of All Games "
|
|
icl "lzss_player.asm" ; player (and data) for splash music
|
|
|
|
main
|
|
jsr init_song
|
|
|
|
* --- init PMG
|
|
|
|
ift USESPRITES
|
|
mva >pmg pmbase ;missiles and players data address
|
|
mva #$03 pmcntl ;enable players and missiles
|
|
eif
|
|
|
|
lda:cmp:req $14 ;wait 1 frame
|
|
|
|
sei ;stop interrups
|
|
mva #$00 nmien ;stop all interrupts
|
|
mva #$fe portb ;switch off ROM to get 16k more ram
|
|
|
|
ZPINIT
|
|
|
|
////////////////////
|
|
// RASTER PROGRAM //
|
|
////////////////////
|
|
|
|
; jmp line239
|
|
jmp raster_program_end
|
|
|
|
LOOP lda vcount ;synchronization for the first screen (picture) line
|
|
cmp #$02
|
|
;sta colpf0
|
|
;sta colpm0
|
|
;sta colbak
|
|
bne LOOP
|
|
|
|
mva #%00111110 dmactl ;set new screen width
|
|
mva <ant dlptr
|
|
mva >ant dlptr+1
|
|
|
|
icl "output.png.rp.ini"
|
|
|
|
;--- 16 lines down ---- !!!
|
|
:16 sta wsync
|
|
|
|
; wait 13 cycles !!!
|
|
:4 nop
|
|
inc byt2
|
|
|
|
;--- wait 18 cycles
|
|
; jsr _rts
|
|
; inc byt3
|
|
|
|
|
|
;--- set global offset (23 cycles)
|
|
jsr _rts
|
|
cmp byt3\ pha:pla
|
|
|
|
;--- empty line
|
|
jsr wait54cycle
|
|
inc byt2
|
|
|
|
icl "output.png.rp"
|
|
|
|
raster_program_end
|
|
|
|
lda >FontSplash
|
|
sta chbase
|
|
c0 lda #$00
|
|
sta colbak
|
|
c1 lda #$00
|
|
sta colpf0
|
|
c2 lda #$02
|
|
sta colpf1
|
|
c3 lda #$08
|
|
sta colpf2
|
|
c4 lda #$00
|
|
sta colpf3
|
|
s0 lda #$03
|
|
sta sizep0
|
|
sta sizep1
|
|
sta sizep2
|
|
sta sizep3
|
|
mva #$ff sizem
|
|
sta grafm
|
|
mva #$20 hposm0
|
|
mva #$28 hposm1
|
|
mva #$d0 hposm2
|
|
mva #$d8 hposm3
|
|
mva #$02 pmcntl
|
|
lda #$14
|
|
sta gtictl
|
|
|
|
|
|
//--------------------
|
|
// EXIT
|
|
//--------------------
|
|
|
|
lda trig0 ; FIRE #0
|
|
beq stop
|
|
|
|
lda trig1 ; FIRE #1
|
|
beq stop
|
|
|
|
lda consol ; START
|
|
and #1
|
|
beq stop
|
|
|
|
lda skctl ; ANY KEY
|
|
and #$04
|
|
bne skp
|
|
|
|
stop mva #$00 pmcntl ;PMG disabled
|
|
tax
|
|
sta:rne hposp0,x+
|
|
|
|
; silent
|
|
lda #0
|
|
ldx #8
|
|
@ sta POKEY,x
|
|
sta POKEY2,x ; stereo
|
|
dex
|
|
bpl @-
|
|
|
|
;no glitching please (issue #67)
|
|
lda #0
|
|
sta $D400 ;dmactl
|
|
sta $022F ;dmactls
|
|
|
|
|
|
mva #$ff portb ;ROM switch on
|
|
mva #$40 nmien ;only NMI interrupts, DLI disabled
|
|
cli ;IRQ enabled
|
|
|
|
rts ;return to ... DOS
|
|
skp
|
|
|
|
//--------------------
|
|
jsr play_frame
|
|
|
|
jmp LOOP
|
|
|
|
;---
|
|
|
|
wait54cycle
|
|
:2 inc byt2
|
|
wait44cycle
|
|
inc byt3
|
|
nop
|
|
wait36cycle
|
|
inc byt3
|
|
jsr _rts
|
|
wait18cycle
|
|
inc byt3
|
|
_rts rts
|
|
|
|
byt3 brk
|
|
|
|
|
|
;---
|
|
|
|
.MACRO ANTIC_PROGRAM
|
|
dta $70,$70
|
|
:+8 dta $4e,a(:1+$0000+#*40)
|
|
:+8 dta $4e,a(:1+$0140+#*40)
|
|
:+8 dta $4e,a(:1+$0280+#*40)
|
|
:+8 dta $4e,a(:1+$03C0+#*40)
|
|
:+8 dta $4e,a(:1+$0500+#*40)
|
|
:+8 dta $4e,a(:1+$0640+#*40)
|
|
:+8 dta $4e,a(:1+$0780+#*40)
|
|
:+8 dta $4e,a(:1+$08C0+#*40)
|
|
:+8 dta $4e,a(:1+$0A00+#*40)
|
|
:+8 dta $4e,a(:1+$0B40+#*40)
|
|
:+8 dta $4e,a(:1+$0C80+#*40)
|
|
:+8 dta $4e,a(:1+$0DC0+#*40)
|
|
:+8 dta $4e,a(:1+$0F00+#*40)
|
|
:+8 dta $4e,a(:1+$1040+#*40)
|
|
:+8 dta $4e,a(:1+$1180+#*40)
|
|
:+8 dta $4e,a(:1+$12C0+#*40)
|
|
:+8 dta $4e,a(:1+$1400+#*40)
|
|
:+8 dta $4e,a(:1+$1540+#*40)
|
|
:+8 dta $4e,a(:1+$1680+#*40)
|
|
:+8 dta $4e,a(:1+$17C0+#*40)
|
|
:+8 dta $4e,a(:1+$1900+#*40)
|
|
:+8 dta $4e,a(:1+$1A40+#*40)
|
|
:+8 dta $4e,a(:1+$1B80+#*40)
|
|
:+8 dta $4e,a(:1+$1CC0+#*40)
|
|
:+8 dta $4e,a(:1+$1E00+#*40)
|
|
; :+4 dta $4e,a(:1+$1F40+#*40)
|
|
; :+4 dta $4e,a(:1+$1FF0+#*40)
|
|
; :+8 dta $4e,a(:1+$2090+#*40)
|
|
; :+8 dta $4e,a(:1+$21D0+#*40)
|
|
; :+8 dta $4e,a(:1+$2310+#*40)
|
|
; :+8 dta $4e,a(:1+$2450+#*40)
|
|
dta $00
|
|
dta $42,a(mother)
|
|
dta $41,a(:2)
|
|
.ENDM
|
|
|
|
CL
|
|
|
|
.MACRO ZPINIT
|
|
.ENDM
|
|
|
|
ZCOLORS = 0
|
|
|
|
;---
|
|
ini main
|
|
;---
|
|
|
|
opt l-
|
|
|
|
.MACRO SPRITES
|
|
icl "output.png.pmg"
|
|
.ENDM
|
|
|
|
USESPRITES = 1
|
|
|