build 125, splash screen added

This commit is contained in:
Pawel Kalinowski
2022-01-23 20:50:48 -05:00
parent 5dcf6bea02
commit 4bd1527cde
12 changed files with 1363 additions and 8933 deletions
+320
View File
@@ -0,0 +1,320 @@
/***************************************/
/* Use MADS http://mads.atari8.info/ */
/* Mode: DLI (char mode) */
/***************************************/
;icl "HIMARS14.h"
;ICL '../lib/atari.hea'
org $f0
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 $F0
dta $42,a(scr),$02,$02,$02,$02,$02,$02,$02,$02,$02,$82,$02,$02,$02,$02,$82
dta $02,$02,$02,$82,$82,$82,$02,$82,$02,$02,$02,$82,$70
dta $41,a(ant)
scr ins "HIMARS14.scr"
.ds 2*40
.ALIGN $0400
fnt ins "HIMARS14.fnt"
ift USESPRITES
.ALIGN $0800
pmg .ds $0300
ift FADECHR = 0
SPRITES
els
.ds $500
eif
eif
main
; --- 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 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 #$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
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 dli10
eif
dli_start
dli10
sta regA
c4 lda #$04
sta wsync ;line=8
sta color0
sta gtictl
DLINEW DLI.dli2 1 0 0
dli2
sta regA
lda >fnt+$400*$01
sta wsync ;line=96
sta chbase
DLINEW dli3 1 0 0
dli3
sta regA
lda >fnt+$400*$02
sta wsync ;line=136
sta chbase
DLINEW dli4 1 0 0
dli4
sta regA
lda >fnt+$400*$01
sta wsync ;line=168
sta chbase
DLINEW dli5 1 0 0
dli5
sta regA
lda >fnt+$400*$02
sta wsync ;line=176
sta chbase
DLINEW dli6 1 0 0
dli6
sta regA
lda >fnt+$400*$03
sta wsync ;line=184
sta chbase
DLINEW dli7 1 0 0
dli7
sta regA
lda >fnt+$400*$00
sta wsync ;line=200
sta chbase
DLINEW dli11 1 0 0
dli11
sta regA
lda #$01
sta wsync ;line=232
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) dmactl ;set new screen width
inc cloc ;little timer
; Initial values
lda >fnt+$400*$00
sta chbase
c0 lda #$00
sta colbak
lda #$02
sta chrctl
lda #$01
sta gtictl
c1 lda #$0C
sta color1
c2 lda #$02
sta color2
c3 lda #$0E
sta color3
x0 lda #$00
sta hposp0
sta hposp1
sta hposp2
sta hposp3
sta hposm0
sta hposm1
sta hposm2
sta hposm3
sta sizep0
sta sizep1
sta sizep2
sta sizep3
sta sizem
sta colpm0
sta colpm1
sta colpm2
sta colpm3
sta color0
mwa #DLI.dli_start dliv ;set the first address of DLI interrupt
;this area is for yours routines
quit
lda regA
ldx regX
ldy regY
rti
.endp
; ---
ini main
; ---
opt l-
.MACRO SPRITES
missiles
.ds $100
player0
.ds $100
player1
.ds $100
player2
.ds $100
player3
.ds $100
.ENDM
USESPRITES = 0
.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
Binary file not shown.
Binary file not shown.
+5
View File
@@ -1,5 +1,10 @@
Changes:
Build 125
2022-01-23
- included splash screen by KAZ
Build 124
2013-12-21
- removed large chunk of redundant 4x4 print code and table generation code,
+9 -59
View File
@@ -15,8 +15,8 @@ MoreUpdl
.byte 0,$42
WeaponsListDL
.word ListOfWeapons
.byte 0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0
.byte $42
:15 .byte 0,2
.byte 0, $42
MoreDownDL
.word EmptyLine
.byte $10,$42
@@ -26,7 +26,7 @@ MoreDownDL
.word PurchaseDL
;------------------------
OptionsDL
.byte $70,$70,$70,$70,$70
:5 .byte $70
.byte $42
.word OptionsScreen
.byte $02,$02,$70,$02,0,$02,0,$2,0,$2
@@ -35,7 +35,7 @@ OptionsDL
;------------------------
;Enter names of tanks DL
NameDL
.byte $70,$70,$70,$70,$70
:5 .byte $70
.byte $42
.word NameScreen
.byte $30
@@ -77,7 +77,7 @@ PlotLine = display + screenHeight*screenBytes ; the last line is plot pointer
;Screen displays go first to avoid crossing 4kb barrier
;-----------------------------------------------
OptionsScreen
dta d"Welcome to Scorch ver. 124 (cc)2000-2013"
dta d"Welcome to Scorch ver. 125 (un)2000-2022"
dta d" Please select option with cursor keys "
dta d" and press (Return) to proceed "
OptionsHere
@@ -119,60 +119,10 @@ MoreDown
dta 93,93,93
dta d" "
ListOfWeapons
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
:36 dta d" "
ListOfWeapons1End
ListOfDefensiveWeapons
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
dta d" "
:16 dta d" "
ListOfDefensiveWeaponsEnd ;constant useful when clearing
WeaponsDescription
dta d" "
@@ -187,8 +137,8 @@ EmptyLine
dta d" "
;-----------------------------------------------
textbuffer
dta d"Player: "
dta d" "
dta d"Player: "
dta d" "
textbuffer2
dta d"Player: ******** Cash: 00000 "
dta d"----------------------------------------"
+15 -13
View File
@@ -9,12 +9,13 @@
;this source code was compiled under OMC65 crossassembler
;and on 2012-06-21 translated to mads
;
;game source code is split into 5 parts:
;program.s65 is the main game code (with many assorted routines)
;grafproc.s65 - graphics routines like line or circle
;textproc.s65 - text routines like list of weapons and shop
;variables.s65 - all non-zero page variables and constans
;display.s65 - display lists and text screen definitions
;game source code is split into 5+1 parts:
;program.asm is the main game code (with many assorted routines)
;grafproc.asm - graphics routines like line or circle
;textproc.asm - text routines like list of weapons and shop
;variables.asm - all non-zero page variables and constans
;display.asm - display lists and text screen definitions
;ai.asm - artificial stupidity of the computer players
;we were trying to use as much macros and pseudoops as possible
;they are defined in atari.hea and macro.hea files together with many
@@ -68,17 +69,18 @@
;-------------------------------
;constants
FlyDelay=150
screenheight=200
FlyDelay = 150
screenheight = 200
screenBytes = 40
screenwidth=screenBytes*8
margin=48 ;mountain drawing Y variable margin
display=$1010 ;kill dos with the casette recorder!
screenwidth = screenBytes*8
margin = 48 ;mountain drawing Y variable margin
display = $1010 ;kill dos with the casette recorder!
MaxPlayers = 6
icl '../lib/atari.hea'
icl '../lib/macro.hea'
icl 'lib/atari.hea'
icl 'lib/macro.hea'
icl 'artwork/HIMARS14.asm'
;Game loading address
ORG $3010 ;two hex thousands for screen
;-----------------------------------------------
-6
View File
@@ -1,6 +0,0 @@
.sourcemode on
.echo
.echo "Loading executable..."
.echo
bc *
.onexerun .echo "Launching executable..."
+68 -1
View File
@@ -1,4 +1,4 @@
mads 1.9.7 build 53 (29 Sep 13)
mads 2.1.3
Label table:
00 0096 FLYDELAY
00 00C8 SCREENHEIGHT
@@ -7,6 +7,34 @@ Label table:
00 0030 MARGIN
00 1010 DISPLAY
00 0006 MAXPLAYERS
FFFD 0000 @DMACTL
00 0000 @DMACTL.BLANK
00 0001 @DMACTL.NARROW
00 0002 @DMACTL.STANDARD
00 0003 @DMACTL.WIDE
00 0004 @DMACTL.MISSILES
00 0008 @DMACTL.PLAYERS
00 0010 @DMACTL.LINEX1
00 0000 @DMACTL.LINEX2
00 0020 @DMACTL.DMA
00 003F SCR48
00 003E SCR40
00 003D SCR32
FFFD 0000 @PMCNTL
00 0001 @PMCNTL.MISSILES
00 0002 @PMCNTL.PLAYERS
00 0004 @PMCNTL.TRIGS
FFFD 0000 @GTICTL
00 0000 @GTICTL.PRIOR0
00 0001 @GTICTL.PRIOR1
00 0002 @GTICTL.PRIOR2
00 0004 @GTICTL.PRIOR4
00 0008 @GTICTL.PRIOR8
00 0010 @GTICTL.PLY5
00 0020 @GTICTL.MLC
00 0040 @GTICTL.MODE9
00 0080 @GTICTL.MODE10
00 00C0 @GTICTL.MODE11
00 D000 HPOSP0
00 D001 HPOSP1
00 D002 HPOSP2
@@ -156,6 +184,45 @@ Label table:
00 00B0 DP
00 00B2 MODIFY
00 00B4 WEAPONPOINTER
00 00F0 FCNT
00 00F2 FADR
00 00F4 FHLP
00 00F6 CLOC
00 00F7 REGA
00 00F8 REGX
00 00F9 REGY
00 0028 WIDTH
00 001E HEIGHT
00 2000 ANT
00 2023 SCR
00 2800 FNT
00 3800 MAIN
00 3823 _LP
00 383B STOP
00 3853 DLI
00 3853 DLI.DLI_START
00 3853 DLI.DLI10
00 3855 DLI.C4
00 3868 DLI.DLI2
00 387A DLI.DLI3
00 388C DLI.DLI4
00 389E DLI.DLI5
00 38B0 DLI.DLI6
00 38C2 DLI.DLI7
00 38D4 DLI.DLI11
00 0001 CHANGES
00 0000 FADECHR
00 007F SCHR
00 38E1 NMI
00 38E7 NMI.DLIV
00 38E9 NMI.VBL
00 3908 NMI.C0
00 3917 NMI.C1
00 391C NMI.C2
00 3921 NMI.C3
00 3926 NMI.X0
00 3968 NMI.QUIT
00 0000 USESPRITES
00 3010 PURCHASEDL
00 3019 MOREUPDL
00 301D WEAPONSLISTDL
+940 -8846
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+2 -3
View File
@@ -1143,10 +1143,9 @@ displayloop1
rts
;-------decimal constans
zero
digits dta d"0123456789"
zero dta d"0"
nineplus ;.sbyte ('9+1)
dta d"9"+1
nineplus dta d"9"+1
space dta d" "
;--------------------------------------------------------
+4 -5
View File
@@ -60,7 +60,7 @@ MaxEnergyTableH
;-----------------------------------
AngleTable ;Angle of the barrel of each tank during the round
.by (255-90),(255-90),(255-90),(255-90),(255-90),(255-90)
:MaxPlayers .by (255-90)
NewAngle
.by 0
;-----------------------------------
@@ -109,12 +109,11 @@ scrcodes
dta d"7890.-"
;-----------------------------------
Erase .byte 0 ; if 1 only mask of the character is printed
; on the graphics screen. if 0 character is printed normally
; on the graphics screen. if 0 character is printed normally
;-----------------------------------
RangeLeft .wo 0 ;range of the soil to be fallen down
;it is being set by all Explosions
RangeRight .wo 0
RangeRight .wo 0 ;it is being set by all Explosions
;-----------------------------------
WeaponRangeLeft .wo 0 ;Range of the Explosion of the given weapon
WeaponRangeRight .wo 0
@@ -366,7 +365,7 @@ LineYdraw
LineTop
dta d"(%%%%%%%%%%%)"
.byte $ff
;# - pion, () * +, % - poziom
;# - vertical, () * +, % - horizontal
LineBottom
dta d"*%%%%%%%%%%%+"
.byte $ff