Files
scorch_src/artwork/splash_v2/splash.asm
T
2026-01-02 19:53:49 +01:00

294 lines
5.1 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
; ---
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
org $1fff
SplashTypeFlag .ds 1
* --- 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" Unknown Father of All Games "
main
.IF CART_VERSION
lda random
sta SplashTypeFlag
cmp #100 ; (0 - 100 ; first splash , 101 - 200 ; second splash , 201 - 255 ; KAZ)
bcc this_splash ; first splash
rts ; next splash
this_splash
.ENDIF
/*
mva #00 ManualLangFlag ; no manual page
*/
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
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
sta chbas
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
; jmp stop
//--------------------
// 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
org $8000 ; fixed address of music routine and data
icl "lzss_player.asm" ; player (and data) for splash music
;---
.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