Jump to content
IGNORED

7800 Game Development... (Part 4 of 6)


Curt Vendel

Recommended Posts

*******************************************************************************

*

* STUNES.S by Kevin G. Osborn

* ADAPTED FOR SPHINX --- A GAME OF SKILL AND CHANCE

* Contains subroutines

* TUNER

* SCRAPALL

* SCRAPONE

* TUNIN

*******************************************************************************

********************************************************************************

* SIMPSONG VERSION 0.035

*

* THIS SIMPLE SOUND DRIVER HAS, IN SOME WAYS, FEWER FEATURES BUT USES LESS RAM

* AND ROM AND DOES NOT BACK UP SOUNDS FOR LATER (SOMETIMES MUCH LATER)

* CONTINUATION. IT FEATURES 256 NOTE TUNES, SINGLE DURATION PER TUNE, ENDLESS

* TUNES. IF A VALUE IN THE CONTROL OR VOLUME TABLES HAS THE HIGH BIT SET, THAT

* VOLUME OR CONTROL WILL REMAIN IN EFFECT TILL THE END OF THE TUNE.

* AN FF IN THE FREQUENCY TABLE WILL TERMINATE THE TUNE, AN FE WILL CAUSE IT TO

* RESTART. AN FD WILL DECREMENT TUNREPT. IF THIS IS NON-ZERO, THE TUNE

* CONTINUES. IF IT IS ZERO, THE NEXT BYTE IN FREQ. TABLE IS S TUNE WHICH

* SHOULD BE CALLED. TUNREPT IS SET IN TUNIN.

*

* AS A NEW WHIZZY FEATURE, TUNER ALSO SUPPORTS RESTS. IF BIT 6 IS SET (NOT BIT 7

* ALSO) IN A FREQUENCY TABLE ENTRY, IT SILENCES SOUND IN THAT CHANNEL FOR THE

* NUMBER OF FRAMES INDICATED IN THE REMAINING 5 BITS.

*

* NOTE ALSO THAT IN THIS VERSION A DURATION OF 1 INDICATES CHANGING SOUND EVERY

* FRAME. THIS IS A CHANGE OVER VERSION .03 WHERE 0 INDICATED ONCE PER FRAME

* SAMPLING.

* SUBROUTINES:

* SCRAPALL -- KILL ALL TUNES. SHOULD BE CALLED AT POWERUP, CHANGING PLAYERS,

* AND GAME OVER

*

* SCRAPONE -- KILL A PARTICULAR TUNE. PUT THE NUMBER OF THE TUNE YA WANNA

* AXE IN THE ACCUMULATOR.

*

* TUNIN -- START THAT TUNE YOU PUT IN ACC.

*

* THE ABOVE ROUTINES PRESERVE THE X AND Y REGS

*

* TABLES NEEDED ARE:

* RAM:

*DCH0 DS 1 ONE BYTE--DURATION CNTR CHAN. 0

*DCH1 DS 1 ONE BYTE--DURATION CNTR CHAN. 1

*TUNNUM DS 1 ONE BYTE--TUNE NUM FOR CHAN. 0

*TUNNUM1 DS 1 ONE BYTE--TUNE NUM FOR CHAN. 1

*TINDEX0 DS 1 ONE BYTE--NOTE POINTER 0

*TINDEX1 DS 1 ONE BYTE--NOTE POINTER 1

*CINDEX0 DS 1 CONTROL INDEX

*CINDEX1 DS 1

*VINDEX0 DS 1 VOLUME INDEX

*VINDEX1 DS 1

*TUNREPT0 DS 1 TUNE REPEAT COUNTER

*TUNREPT1 DS 1

*MPTRL EQU KTEMP0 ZERO PAGE TEMP(NOT GAMEPLAY)

*MPTRH EQU KTEMP1 ZERO PAGE TEMP(NOT GAMEPLAY)

*TUNTEMP EQU TEMP0 ANY GAMEPLAY TEMP

* ROM:

* DURTABL ONE DURATION IN FRAMES PER TUNE

* TBASE LOW ADDRESS OF THE START OF FREQ DATA BY TUNE NUMBER

* TBASEH DITTO FOR HIGH ADDRESS

* VBASE LOW ADDRESS OF THE START OF VOL DATA BY TUNE NUMBER

* VBASEH DITTO FOR HIGH ADDRESS

* CBASE LOW ADDRESS OF THE START OF CTRL DATA BY TUNE NUMBER

* CBASEH DITTO FOR HIGH ADDRESS

* PRYOR PRIORITY BY TUNE NUMBERS -- ZERO THE LOWEST

* VOLTABL VOLUMES

* FREQTABL FREQUENCIES

* CTLTABL CONTROLS

 

 

ZERODEF

 

RSEG CODE6

 

********************************************************************************

* SCRAPALL

* KILL ALL TUNES. SHOULD BE CALLED AT POWERUP, CHANGING PLAYERS,

* AND GAME OVER

* USES A , DOESN'T USE X OR Y

;IF WE CAN USE X HERE, THEN WE CAN SAVE A BYTE

SCRAPALL

LDA #0

STA AUDV0 ;CLEAR SOUND REGISTERS

STA AUDV1

LDA #$FF

STA TUNNUM ;FLAG NO TUNES, BOTH CHANNELS

STA TUNNUM1

RTS

 

; IF YOU WANT, LOOP THIS UP

 

********************************************************************************

* SCRAPONE

* KILL A PARTICULAR TUNE. PUT THE NUMBER OF THE TUNE YA WANNA

* AXE IN THE ACCUMULATOR.

;CAN WE USE X OR Y HERE??

 

SCRAPONE CMP TUNNUM ;ON CHAN 0?

BNE CKCH1

LDA #0

STA AUDV0 ;CLEAR REGISTER

LDA #$FF

STA TUNNUM ;FLAG NO TUNE, CHANNEL 0

RTS

CKCH1 SEC

SBC TUNNUM1 ;ON CHAN 1?

BNE REETS ;IF NON ZERO, RETURN

STA AUDV1 ;CLEAR REGISTER

LDA #$FF

STA TUNNUM1 ;FLAG NO TUNE, CHAN 1

REETS RTS

 

********************************************************************************

* TUNIN

* START THAT TUNE YOU PUT IN ACC.

TUNIN STA TUNTEMP

BIT GAMEU

BPL REETS2

TYA ;SAVE Y,X REGS ON STACK

PHA

TXA

PHA

LDY #1

TROIKA LDA TUNNUM,Y ;FIRST CHECK FOR AN EMPTY CHANNEL

CMP #$FF

BEQ DO

TRKNX DEY

BPL TROIKA

 

LDA TUNNUM1 ;THIS IS DONE TO PREVENT GLITCHINESS

AND #$7F

TAY

LDA TUNNUM

AND #$7F

TAX

LDA PRYOR,Y

LDY #1

CMP PRYOR,X

BCC REPTUN1

LDY #0

REPTUN1

LDA TUNNUM,Y

AND #$7F

TAX

LDA PRYOR,X

LDX TUNTEMP

CMP PRYOR,X

BCS ROOTS

 

DO LDX TUNTEMP

CPX #HISCOR0

BCC REGDO

CPX #LOSCOR1+1

BCS REGDO

 

LDA #4 ;REPEAT HISCORE TUNES FOUR TIMES

STA TUNREPT0,Y ;BEFORE GOING TO ENDING

 

REGDO

TXA ;PLAY TUNE X ON CHANNEL Y

ORA #$80 ;SET HIGH BIT

STA TUNNUM,Y

 

LDA #BACKGR0 ;PUNT BOTH CHANNELS OF BACKGROUND

JSR SCRAPONE

LDA #BACKGR1

JSR SCRAPONE

 

ROOTS PLA ;RESTORE X,Y REGISTERS

TAX

PLA

TAY

REETS2 RTS

 

********************************************************************************

*TUNER SHOULD BE CALLED ONCE PER FRAME, NO INPUTS, AND IT OPERATES WITH

*A TOTAL DISREGARD FOR REGISTER SANCTITY. EACH TUNE CAN BE 256 NOTES LONG

*IF YOUR TUNES ARE VERY SMALL, YOU COULD DO AWAY WITH ALL THE INDIRECT STUFF

 

TUNER

;PUT A CHECK FOR ATTRACT MODE HERE

 

BIT GAMEU

BMI NOREETS ; RTS WHEN IN ATTRACT MODE

LDA #0

STA AUDV0 ;TURN OFF SOUND

STA AUDV1

BEQ REETS2

 

* PLAY CHANNELS 0 AND 1 *

NOREETS LDX #1

 

TUNLOP LDY TUNNUM,X

INY

BNE NETN ;TUNNUM=FF DO NEXT CHANNEL

JNXTCH JMP NXTCH

NETN DEY

BPL BOOGIE

 

* INITIALIZE A NEW TUNE (HIGH BIT ON Y IS SET) *

TYA

AND #$7F

STA TUNNUM,X

TAY

LDA #1

STA DCH0,X ;START (DCHANNEL(X)=1)

LDA #$FF ; INCREMENTS ON THE FIRST CALL

STA TINDEX0,X ;AND INDEXES WILL BE ZEROED.

STA CINDEX0,X

STA VINDEX0,X

LDA #0

STA VRUN,X

 

BOOGIE LDA TBASE,Y

STA MPTRL

LDA TBASEH,Y

STA MPTRH ;MPTR = FREQUENCY BASE ADDRESS

 

DEC DCH0,X ;DEC DURATION

BNE JNXTCH

 

LDA DURTABL,Y ;NEW DURATION

STA DCH0,X

LDY TINDEX0,X ;FREQUENCY INDEX (OFF OF BASE)

INC CINDEX0,X

INC VINDEX0,X

INY

LDA (MPTRL),Y ;FETCH FREQUENCY

 

CMP #$FF ;IS IT OVER?

BNE CKENL

STA TUNNUM,X ;END THIS FUNKY TUNE

LDA #0

STA AUDV0,X

BEQ JNXTCH ;JMP NEXT CHANNEL

 

SKIPTWO

INY

JMP PSTFREQ ;Y BETTER NOT BE ZERO HERE

 

CKENL CMP #$FE ;CODE FOR PLAYING TUNE AGAIN

BEQ FOOBEQ

 

CKNXTT CMP #$FD

BNE SKIP ;DO A NORMAL FREQUENCY!

 

* CODE $FD --> JUMP TO ANOTHER TUNE *

INY ;DEFINATELY SKIP TO NEXT BYTE

 

DEC TUNREPT0,X ;IF NOT DONE REPEATING, SKIP THIS AND

BNE SKIPTWO ;NEXT BYTE IN FREQ TABLE.

 

LDA (MPTRL),Y ;NEXT BYTE IS NEW TUNE

STA TUNNUM,X

TAY

LDA TBASE,Y

STA MPTRL

LDA TBASEH,Y

STA MPTRH ;LOAD NEW BASE

 

* CODE $FE --> PLAY THE TUNE AGAIN *

FOOBEQ LDY #0

TYA

STA CINDEX0,X ;RESET CONTROL, VOLUME INDEXES

STA VINDEX0,X

STA VRUN,X

PSTFREQ LDA (MPTRL),Y

 

; STFREQ BPL SKIP ;IF BIT 7 CLR, DO A REST

 

* CHANGE THE DURATION *

; HUH INY

; LDA (MPTRL),Y

; STA DCH0,X ;STORE DURATION

; DEY

; LDA (MPTRL),Y

; INY

; JMP STIT0 ;STORE FREQUENCY

 

* CHECK FOR A REST *

SKIP ASL A

BPL STIT ;STORE FREQ IF BIT 6 CLEAR

LSR A

AND #$BF ;RESET BIT 6

STA DCH0,X ;USE REMAINING 5 BITS FOR

TYA ;A DURATION OF SILENCE

STA TINDEX0,X

DEC VINDEX0,X

DEC CINDEX0,X ;HOLD CONTROL AND VOLUME INDEXES

 

LDA #0 ;SILENCE

STA AUDV0,X

BEQ NXTCH ;JMP NEXT CHANNEL

 

* STORE OUT THE FREQUENCY *

STIT LSR A

STIT0 STA AUDF0,X ;STORE AUDIO FREQUENCY

TYA

STA TINDEX0,X ;TINDEX = Y

 

* LOOK UP VOLUME *

DEC VRUN,X

BPL CTRLOAD

 

LDY TUNNUM,X

LDA VBASE,Y

STA MPTRL

LDA VBASEH,Y

STA MPTRH ;MPTR = VOLUME BASE

LDY VINDEX0,X ;Y = VINDEX

LDA (MPTRL),Y

TAY

AND #$0F

STA AUDV0,X ;STORE AUDIO VOLUME

TYA

BMI CTRLOAD ;HIGH BIT SET

 

LSR A

LSR A

LSR A

LSR A

STA VRUN,X

INC VINDEX0,X

 

* LOOK UP CONTROL *

CTRLOAD

DEC VINDEX0,X

LDY TUNNUM,X

LDA CBASE,Y

STA MPTRL

LDA CBASEH,Y

STA MPTRH

LDY CINDEX0,X ;Y = CINDEX

LDA (MPTRL),Y

BPL STCTRL

DEY ;REPEAT FOREVER

AND #$7F

STCTRL STA AUDC0,X ;STORE AUDIO CONTROL

TYA

STA CINDEX0,X ;CINDEX = Y

 

NXTCH DEX ;X = 0 (NEXT CHANNEL)

BMI ROTS

JMP TUNLOP ;DO CHANNEL 0

ROTS RTS

 

RUNBACK

;PUT A CHECK FOR ATTRACT MODE HERE

 

BIT GAMEU

BMI NORTSBK ; RTS WHEN IN ATTRACT MODE

LDA #0

STA AUDV0 ;TURN OFF SOUND

STA AUDV1

RTS

 

* PLAY CHANNELS 0 AND 1 *

NORTSBK LDX #1

 

BAKLOP LDY BACKNUM,X

LDA TBASE,Y

STA MPTRL

LDA TBASEH,Y

STA MPTRH ;MPTR = FREQUENCY BASE ADDRESS

 

DEC DBK0,X ;DEC DURATION

BNE JNEXBK

 

LDA DURTABL,Y ;NEW DURATION

STA DBK0,X

LDY TBINDX0,X ;FREQUENCY INDEX (OFF OF BASE)

INC CBINDX0,X

INC VBINDX0,X

INY

LDA (MPTRL),Y ;FETCH FREQUENCY

 

CMP #$FE ;CODE FOR PLAYING TUNE AGAIN

BNE STITBK

 

* CODE $FE --> PLAY THE TUNE AGAIN *

REPEATER LDY #0

TYA

STA CBINDX0,X ;RESET CONTROL, VOLUME INDEXES

STA VBINDX0,X

STA VBRUN,X

PLOKRST LDA (MPTRL),Y

 

; LOOKRST BPL SKIPBK ;IF BIT 7 CLR, DO A REST

 

* CHANGE THE DURATION *

; HUH1 INY

; LDA (MPTRL),Y

; STA DBK0,X ;STORE DURATION

; DEY

; LDA (MPTRL),Y

; INY

; BNE STITBK ;STORE FREQUENCY

 

* CHECK FOR A REST *

SKIPBK ASL A

BPL STITBK ;STORE FREQ IF BIT 6 CLEAR

LSR A

AND #$BF ;RESET BIT 6

STA DBK0,X ;USE REMAINING 5 BITS FOR

TYA ;A DURATION OF SILENCE

STA TBINDX0,X

DEC VBINDX0,X

DEC CBINDX0,X ;HOLD CONTROL AND VOLUME INDEXES

JNEXBK JMP NEXBK

 

* STORE OUT THE FREQUENCY *

STITBK

TYA

STA TBINDX0,X ;TINDEX = Y

 

* LOOK UP VOLUME *

DEC VBRUN,X

BPL CBLOAD

 

LDY BACKNUM,X

LDA VBASE,Y

STA MPTRL

LDA VBASEH,Y

STA MPTRH ;MPTR = VOLUME BASE

LDY VBINDX0,X ;Y = VINDEX

LDA (MPTRL),Y

BMI CBLOAD ;HIGH BIT SET

 

LSR A

LSR A

LSR A

LSR A

STA VBRUN,X

INC VBINDX0,X

 

* LOOK UP CONTROL *

CBLOAD

DEC VBINDX0,X

LDY BACKNUM,X

LDA CBASE,Y

STA MPTRL

LDA CBASEH,Y

STA MPTRH

LDY CBINDX0,X ;Y = CINDEX

LDA (MPTRL),Y

BPL STCBX

DEY ;REPEAT FOREVER

STCBX

TYA

STA CBINDX0,X ;CINDEX = Y

 

NEXBK DEX ;X = 0 (NEXT CHANNEL)

BMI ROTSBK

JMP BAKLOP ;DO CHANNEL 0

ROTSBK RTS

 

BACKON

BIT GAMEU

BPL NOBAKON

 

LDA DEATH

BNE NOBAKON ;NOT WHEN BIRD IS DYING

 

LDA TUNNUM

AND TUNNUM+1

CMP #$FF

BNE NOBAKON

 

LDX #1

BAKONLP

LDA BACKNUM,X

STA TUNNUM,X

 

LDA DBK0,X

STA DCH0,X

 

LDA TBINDX0,X

STA TINDEX0,X

 

LDA CBINDX0,X

STA CINDEX0,X

 

LDA VBINDX0,X

STA VINDEX0,X

 

LDA VBRUN,X

STA VRUN,X

 

DEX

BPL BAKONLP

 

NOBAKON RTS

 

 

BRDSHOT EQU 0 ;TUNE NUMBERS

RICCHET EQU 1

UWERUN EQU 2

ALADIN0 EQU 3

ALADIN1 EQU 4

UWEEXP EQU 5

SCBEXPL EQU 6

GLDEXPL EQU 7

SWIM EQU 8

ENDGAM0 EQU 9

ENDGAM1 EQU 10

MINISHOT EQU 11

VHDEATH EQU 12

CUCKOO1 EQU 13

CUCKOO2 EQU 14

NHIERO1 EQU 15

NHIERO2 EQU 16

NHIERO3 EQU 17

HMISS3 EQU 18

SPTUNE EQU 19 ;SPAWN

RUNNING EQU 20

JWTUNE EQU 21 ;JEWEL

SFINKS EQU 22

XLPOWER EQU 23

POWRUSE EQU 24

SPHXBM0 EQU 25

SPHXBM1 EQU 26

MINIBM EQU 27

HISCOR0 EQU 28

HISCOR1 EQU 29

LOSCOR0 EQU 30

LOSCOR1 EQU 31

HISEND0 EQU 32

HISEND1 EQU 33

LOSEND0 EQU 34

LOSEND1 EQU 35

BACKGR0 EQU 36

BACKGR1 EQU 37

FLASHT0 EQU 38

FLASHT1 EQU 39

 

BACKNUM DB BACKGR0,BACKGR1

 

 

********************************************************************************

* pointer tables.

TBASE DB L(BRDSHOTF),L(RICCHETF),L(UWERUNF),L(ALADIN0F),L(ALADIN1F)

DB L(UWEEXPF),L(SCBEXPLF),L(GLDEXPLF)

DB L(SWIMF),L(ENDGAM0F),L(ENDGAM1F)

DB L(MINISHTF)

DB L(VHDEATHF),L(CUCKOO1F),L(CUCKOO2F)

DB L(NHIERO1F),L(NHIERO2F),L(NHIERO3F),L(HMISS3F)

DB L(SPAWNF),L(RUNNINGF)

DB L(JEWELF),L(SFINKSF),L(XLPOWERF)

DB L(POWRUSEF),L(SPHXBM0F),L(SPHXBM1F),L(MINIBMF)

DB L(HISCOR0F),L(HISCOR1F),L(LOSCOR0F),L(LOSCOR1F)

DB L(HISEND0F),L(HISEND1F),L(LOSEND0F),L(LOSEND1F)

DB L(BACKGR0F),L(BACKGR1F),L(FLASHT0F),L(FLASHT1F)

 

TBASEH DB H(BRDSHOTF),H(RICCHETF),H(UWERUNF),H(ALADIN0F),H(ALADIN1F)

DB H(UWEEXPF),H(SCBEXPLF),H(GLDEXPLF)

DB H(SWIMF),H(ENDGAM0F),H(ENDGAM1F)

DB H(MINISHTF)

DB H(VHDEATHF),H(CUCKOO1F),H(CUCKOO2F)

DB H(NHIERO1F),H(NHIERO2F),H(NHIERO3F),H(HMISS3F)

DB H(SPAWNF),H(RUNNINGF)

DB H(JEWELF),H(SFINKSF),H(XLPOWERF)

DB H(POWRUSEF),H(SPHXBM0F),H(SPHXBM1F),H(MINIBMF)

DB H(HISCOR0F),H(HISCOR1F),H(LOSCOR0F),H(LOSCOR1F)

DB H(HISEND0F),H(HISEND1F),H(LOSEND0F),H(LOSEND1F)

DB H(BACKGR0F),H(BACKGR1F),H(FLASHT0F),H(FLASHT1F)

 

VBASE DB L(BRDSHOTV),L(RICCHETV),L(UWERUNV),L(ALADIN0V),L(ALADIN1V)

DB L(UWEEXPV),L(SCBEXPLV),L(GLDEXPLV)

DB L(SWIMV),L(ENDGAM0V),L(ENDGAM1V)

DB L(MINISHTV)

DB L(VHDEATHV),L(CUCKOO1V),L(CUCKOO2V)

DB L(NHIERO1V),L(NHIERO2V),L(NHIERO3V),L(HMISS3V)

DB L(SPAWNV),L(RUNNINGV)

DB L(JEWELV),L(SFINKSV),L(XLPOWERV)

DB L(POWRUSEV),L(SPHXBM0V),L(SPHXBM1V),L(MINIBMV)

DB L(HISCOR0V),L(HISCOR1V),L(LOSCOR0V),L(LOSCOR1V)

DB L(HISEND0V),L(HISEND1V),L(LOSEND0V),L(LOSEND1V)

DB L(BACKGR0V),L(BACKGR1V),L(FLASHT0V),L(FLASHT1V)

 

VBASEH DB H(BRDSHOTV),H(RICCHETV),H(UWERUNV),H(ALADIN0V),H(ALADIN1V)

DB H(UWEEXPV),H(SCBEXPLV),H(GLDEXPLV)

DB H(SWIMV),H(ENDGAM0V),H(ENDGAM1V)

DB H(MINISHTV)

DB H(VHDEATHV),H(CUCKOO1V),H(CUCKOO2V)

DB H(NHIERO1V),H(NHIERO2V),H(NHIERO3V),H(HMISS3V)

DB H(SPAWNV),H(RUNNINGV)

DB H(JEWELV),H(SFINKSV),H(XLPOWERV)

DB H(POWRUSEV),H(SPHXBM0V),H(SPHXBM1V),H(MINIBMV)

DB H(HISCOR0V),H(HISCOR1V),H(LOSCOR0V),H(LOSCOR1V)

DB H(HISEND0V),H(HISEND1V),H(LOSEND0V),H(LOSEND1V)

DB H(BACKGR0V),H(BACKGR1V),H(FLASHT0V),H(FLASHT1V)

 

CBASE DB L(BRDSHOTC),L(RICCHETC),L(UWERUNC),L(ALADIN0C),L(ALADIN1C)

DB L(UWEEXPC),L(SCBEXPLC),L(GLDEXPLC)

DB L(SWIMC),L(ENDGAM0C),L(ENDGAM1C)

DB L(MINISHTC)

DB L(VHDEATHC),L(CUCKOO1C),L(CUCKOO2C)

DB L(NHIERO1C),L(NHIERO2C),L(NHIERO3C),L(HMISS3C)

DB L(SPAWNC),L(RUNNINGC)

DB L(JEWELC),L(SFINKSC),L(XLPOWERC)

DB L(POWRUSEC),L(SPHXBM0C),L(SPHXBM1C),L(MINIBMC)

DB L(HISCOR0C),L(HISCOR1C),L(LOSCOR0C),L(LOSCOR1C)

DB L(HISEND0C),L(HISEND1C),L(LOSEND0C),L(LOSEND1C)

DB L(BACKGR0C),L(BACKGR1C),L(FLASHT0C),L(FLASHT1C)

 

CBASEH DB H(BRDSHOTC),H(RICCHETC),H(UWERUNC),H(ALADIN0C),H(ALADIN1C)

DB H(UWEEXPC),H(SCBEXPLC),H(GLDEXPLC)

DB H(SWIMC),H(ENDGAM0C),H(ENDGAM1C)

DB H(MINISHTC)

DB H(VHDEATHC),H(CUCKOO1C),H(CUCKOO2C)

DB H(NHIERO1C),H(NHIERO2C),H(NHIERO3C),H(HMISS3C)

DB H(SPAWNC),H(RUNNINGC)

DB H(JEWELC),H(SFINKSC),H(XLPOWERC)

DB H(POWRUSEC),H(SPHXBM0C),H(SPHXBM1C),H(MINIBMC)

DB H(HISCOR0C),H(HISCOR1C),H(LOSCOR0C),H(LOSCOR1C)

DB H(HISEND0C),H(HISEND1C),H(LOSEND0C),H(LOSEND1C)

DB H(BACKGR0C),H(BACKGR1C),H(FLASHT0C),H(FLASHT1C)

 

********************************************************************************

DURTABL DB $01 ;BRDSHOT

DB $01 ;RICCHET

DB $02 ;UWERUN

DB $04 ;ALADIN0

DB $04 ;ALADIN1

DB $01 ;UWEEXP

DB $01 ;SCBEXPL

DB $01 ;GLDEXPL

DB $03 ;SWIM

DB $04 ;ENDGAM0

DB $04 ;ENDGAM1

DB $02 ;MINISHOT

DB $02 ;VHDEATH

DB $01 ;CUCKOO1

DB $01 ;CUCKOO2

DB $05 ;NHIERO1

DB $05 ;NHIERO2

DB $05 ;NHIERO3

DB $02 ;HMISS3

DB $02 ;SPAWN

DB $03 ;RUNNING

DB $02 ;JEWEL

DB $02 ;SFINKS

DB $03 ;XLPOWER

DB $04 ;POWRUSE

DB $02 ;SPHXBM0

DB $02 ;SPHXBM1

DB $03 ;MINIBM

DB $08 ;HISCOR0

DB $08 ;HISCOR1

DB $08 ;LOSCOR0

DB $08 ;LOSCOR1

DB $08 ;HISEND0

DB $08 ;HISEND1

DB $08 ;LOSEND0

DB $08 ;LOSEND1

DB $02 ;BACKGR0

DB $02 ;BACKGR1

DB $06 ;FLASHT0

DB $06 ;FLASHT1

 

PRYOR DB $01 ;BRDSHOT OR THESE EVEN??

DB $02 ;RICCHET

DB $02 ;UWERUN

DB $05 ;ALADIN0

DB $05 ;ALADIN1

DB $03 ;UWEEXP

DB $03 ;SCBEXPL

DB $03 ;GLDEXPL

DB $03 ;SWIM

DB $09 ;ENDGAM0

DB $09 ;ENDGAM1

DB $04 ;ANY MINISPHINX OR SPHINX SHOT

DB $06 ;VHDEATH

DB $07 ;CUCKOO1

DB $07 ;CUCKOO2

DB $04 ;NHIERO1

DB $04 ;NHIERO2

DB $04 ;NHIERO3

DB $04 ;HMISS3

DB $03 ;SPAWN

DB $02 ;RUNNING

DB $04 ;JEWEL

DB $03 ;SFINKS

DB $04 ;XLPOWER

DB $04 ;POWRUSE

DB $05 ;SPHXBM0

DB $05 ;SPHXBM1

DB $04 ;MINIBM

DB $0A ;HISCOR0

DB $0B ;HISCOR1

DB $0A ;LOSCOR0

DB $0B ;LOSCOR1

DB $0C ;HISEND0

DB $0D ;HISEND1

DB $0C ;LOSEND0

DB $0D ;LOSEND1

DB $00 ;BACKGR0

DB $00 ;BACKGR1

DB $08 ;FLASHT0

DB $08 ;FLASHT1

 

********************************************************************************

* FREQTABL

RICCHETF DB $44,$07,$07,$03,$06,$03,$06,$03,$06,$FF

 

BRDSHOTF DB $00,$01,$02,$03,$04,$05,$07,$09,$0B,$0D,$0F,$12,$14,$16

DB $18,$1C,$1B,$1A,$1C,$1B,$1A,$1C,$FF

 

ALADIN0F DB $1F,$1F,$48,$14,$44,$14,$44

DB $15,$15,$48,$14,$14,$48

 

DB $14,$14,$48,$13,$13,$48

DB $1D,$1D,$1D,$1D,$1D,$1D,$1D,$1D

 

DB $1F,$1F,$48,$14,$14,$15,$15

DB $14,$14,$15,$15,$14,$14,$15,$15

 

DB $14,$14,$48,$13,$13,$48

DB $1D,$1D,$1D,$1D,$1D,$1D,$1D,$1D

 

DB $1F,$1F,$48,$14,$44,$14,$44

DB $15,$15,$48,$14,$14,$48

 

DB $14,$14,$48,$13,$13,$48

DB $1D,$1D,$1D,$1D,$1D,$1D,$1D,$1D

 

DB $1F,$1F,$48,$14,$14,$15,$15

DB $14,$14,$15,$15,$14,$14,$15,$15

 

DB $14,$14,$48,$13,$13,$48

DB $1D,$1D,$1D,$1D,$1D,$1D,$1D,$1D

 

DB $1F,$1F,$48,$14,$44,$14,$44

DB $15,$15,$48,$14,$14,$48

 

DB $14,$14,$48,$13,$13,$48

DB $1D,$1D,$1D,$1D,$1D,$1D,$1D,$1D

 

DB $1F,$1F,$48,$14,$14,$15,$15

DB $14,$14,$15,$15,$14,$14,$15,$15

 

DB $1F,$1F,$1F,$1F,$1F,$1F,$1F,$1F

DB $FF

 

ALADIN1F DB $5F ;31

DB $5F ;62

 

DB $5F ;93

DB $5F ;124

 

DB $5F ;155

DB $5F ;186

 

DB $5F ;217

DB $5F,$48 ;248+8=256 FRAMES OF SILENCE

 

DB $13,$13,$12,$12,$0F,$0F,$0E,$0E

DB $0C,$0C,$48,$0F,$0F,$0E,$0E

 

DB $0C,$0C,$48,$0F,$0F,$0E,$0E

DB $0C,$0C,$0B,$0B,$0C,$0C,$0E,$0E

 

DB $0F,$0F,$48,$13,$13,$14,$14

DB $13,$13,$12,$12,$0F,$0F,$0E,$0E

 

DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F

DB $0F,$0F,$0F,$0F,$12,$12,$12,$12

 

DB $13,$13,$48,$13,$13,$14,$14

DB $18,$18,$18,$18,$14,$14,$14,$14

 

DB $13,$13,$14,$14,$13,$13,$12,$12

DB $0F,$0F,$0F,$0F,$0F,$0F,$0E,$0E

 

DB $0F,$0F,$48,$0C,$0C,$0E,$0E

DB $0F,$0F,$12,$12,$13,$13,$16,$16

 

DB $13,$13,$13,$13,$13,$13,$13,$13

DB $FF

 

 

UWEEXPF DB $16,$15,$14,$13,$12,$11,$41,$0F

DB $00,$0C,$01,$00,$0C,$00,$FF

 

GLDEXPLF DB $17,$17,$06,$06,$05,$04,$04,$04,$FF

 

 

ENDGAM0F DB $1F,$1F,$48,$14,$44,$14,$44,$15,$15,$48,$14,$14

DB $48,$14,$14,$48,$13,$13,$48,$1D,$1D,$1D,$1D

DB $1D,$1D,$1D,$1D,$1F,$1F,$1F,$1F,$1F,$1F,$1F,$1F,$FF

 

ENDGAM1F DB $13,$13,$12,$12,$0F,$0F,$0E,$0E,$0C,$0C,$48,$0F,$0F

DB $0E,$0E,$0C,$0C,$48,$0F,$0F,$0E,$0E,$0C,$0C,$0B,$0B

DB $0C,$0C,$0E,$0E,$09,$09,$09,$09,$09,$09,$09,$09,$FF

 

MINISHTF DB $03,$00,$07,$07,$05,$1F,$1F,$1F,$FF

 

 

VHDEATHF DB $19,$1A,$1B,$1C,$1D,$1E,$1F,$1A

DB $04,$05,$06

DB $07,$08,$09,$0A,$0B,$0C,$0D,$0E

DB $0F,$10,$11,$12,$13,$14,$15,$16

DB $17,$18,$19,$1A,$1B,$1C,$1D,$1E,$FF

 

CUCKOO1F DB $1E,$1D,$1F,$1A,$1E,$1C,$1F,$1A

DB $0C,$0C,$0C,$06,$05,$06,$0F,$0F

DB $0F,$0F,$0F,$0F,$03,$06,$04,$03

DB $06,$04,$0C,$0C,$0C,$03,$05,$04

DB $0F,$0F,$0F,$0F,$0F,$0F,$03,$04

DB $06,$04,$06,$04,$0C,$0C,$0C,$03

DB $06,$05,$0F,$0F,$0F,$0F,$0F,$0F,$FF

 

CUCKOO2F DB $00,$00,$00,$00,$00,$00,$00,$00

DB $03,$04,$05,$03,$04,$05,$03,$04

DB $05,$03,$04,$05,$03,$04,$05,$03

DB $04,$05,$03,$04,$05,$03,$04,$05

DB $03,$04,$05,$03,$04,$05,$03,$04

DB $05,$03,$04,$05,$03,$04,$05,$03

DB $04,$05,$03,$04,$05,$03,$04,$05,$FF

 

NHIERO1F DB $17,$16,$12,$11,$0F,$FF

 

NHIERO2F DB $45,$12,$11,$0F,$45,$12,$FF

 

NHIERO3F DB $11,$0F,$0E,$0F,$45,$0B,$0B,$0B,$FF

 

HMISS3F DB $45,$13,$15,$17,$18,$19,$1A,$1C,$15

DB $1F,$1D,$1F,$1D,$1F,$1D,$1F,$1D,$FF

 

SPAWNF DB $17,$17,$18,$18,$19,$19,$FF

 

RUNNINGF DB $1F,$1F,$1F,$49,$14,$12,$10,$0F,$FE ;REPEATS

 

JEWELF DB $8,$7,$6,$5,$4,$3,$4,$4

DB $4,$4,$4,$4,$4,$4,$4,$4

DB $4,$4,$4,$4,$4,$4,$4,$4,$4,$4,$FF

 

SFINKSF DB $5,$4,$3,$2,$1,$8,$7,$6

DB $5,$4,$3,$3,$4,$3,$2,$FE ;REPEATS

 

XLPOWERF DB $13,$43,$11,$43,$E,$43,$9,$9,$9,$9,$FF

 

UWERUNF DB 9,$42,8,$42,4,$42,8,$42

DB 7,$42,4,$42,6,$42,5,$42,6,$FF

SWIMF DB $8,$F,$8,$F,$8,$F,$8,$F

DB $8,$F,$8,$F,$8,$F,$8,$F,$FE ;REPEATS

SCBEXPLF DB $06,$07,$0C,$10,$12,$15,$15,$00

DB $14,$18,$14,$12,$0E,$08,$07,$00,$FF

 

SPHXBM0F DB $08,$08,$03,$03,$04,$04,$06,$06

DB $08,$08,$03,$03,$04,$04,$06,$06

DB $08,$08,$03,$03,$04,$04,$06,$06

DB $08,$08,$03,$03,$04,$04,$06,$06,$FF

 

SPHXBM1F DB $0A,$0A,$0A,$0A,$0B,$0B,$0C,$0C

DB $0D,$0D,$0A,$0E,$0F,$0F,$10,$10

DB $11,$11,$12,$12,$13,$0C,$14,$14

DB $15,$0A,$16,$16,$17,$09,$18,$18,$FF

 

MINIBMF DB $12,$16,$17,$18,$19,$1A,$1B,$1C,$1D,$1E,$1F,$FF

 

POWRUSEF DB $07,$0B,$08,$0B,$07,$0B,$08,$0B,$07,$0B,$FF

 

HISCOR0F DB $0B,$09,$13,$06,$08,$0B,$0D,$11

DB $0E,$0D,$0E,$0B,$09,$0D,$08,$11

DB $0B,$06,$13,$05,$04,$13,$08,$09

DB $0B,$13,$10,$FD,HISEND0,$0E,$0D,$10,$11,$11,$FE ;REPEATS

 

HISEND0F DB $0D,$11,$11,$11,$11,$FF

 

HISCOR1F DB $0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D

DB $0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D

DB $12,$12,$12,$12,$12,$12,$12,$12

DB $FD,HISEND1,$12,$12,$12,$12,$0F,$0F,$0F,$0F,$FE ;REPEA

 

HISEND1F DB $0F,$0F,$0F,$0F,$0D,$0D,$0D,$0D,$FF

 

LOSCOR0F DB $0B,$09,$06,$09,$08,$0B,$0D,$10

DB $11,$0E,$0D,$0E,$09,$0D,$08,$11

DB $0D,$0B,$09,$06,$13,$06,$08,$09

DB $0B,$13,$10,$FD,LOSEND0,$0E,$0D,$10,$11,$11,$FE ;REPEATS

 

LOSEND0F DB $0D,$11,$11,$11,$11,$FF

 

LOSCOR1F DB $0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D

DB $0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D

DB $12,$12,$12,$12,$12,$12,$12,$12

DB $FD,LOSEND1,$12,$12,$12,$12,$0F,$0F,$0F,$0F,$FE ;REPEATS

 

LOSEND1F DB $0F,$0F,$0F,$0F,$0D,$0D,$0D,$0D,$FF

 

BACKGR1F

BACKGR0F DB $B,$B,$B,$B,$B,$B,$B,$B

DB $B,$B,$B,$B,$B,$B,$B,$B

DB $C,$C,$C,$C,$C,$C,$C,$C

DB $C,$C,$C,$C,$C,$C,$C,$C,$FE

 

FLASHT0F DB $0D,$0E,$10,$11,$0D,$0E,$12,$13

DB $0D,$0E,$10,$11,$0D,$0E,$12,$13,$FF

 

FLASHT1F DB $09,$08,$06,$13,$09,$08,$13,$05

DB $09,$08,$06,$13,$08,$08,$13,$05,$FF

 

********************************************************************************

* VOLTABL

 

RICCHETV DB $1F,$08,$07,$06,$05,$04,$02

 

BRDSHOTV DB $09,$18,$17,$16,$25,$24,$23,$22,$21

 

 

ALADIN0V DB $14,$04,$04

DB $14,$14

 

DB $14,$14

DB $75

 

DB $14,$34

DB $75

 

DB $14,$14

DB $75

 

DB $14,$04,$04

DB $14,$14

 

DB $14,$14

DB $75

 

DB $14,$34

DB $75

 

DB $14,$14

DB $75

 

DB $14,$04,$04

DB $14,$14

 

DB $14,$14

DB $75

 

DB $14,$34

DB $56

 

DB $32,$13,$12,$11

 

ALADIN1V

DB $15,$16,$17,$18

DB $19,$17,$18

 

DB $19,$17,$18

DB $19,$1A,$19,$18

 

DB $17,$17,$16

DB $17,$18,$19,$1A

 

DB $B9,$3A

 

DB $1A,$19,$18

DB $37,$38

 

DB $19,$18,$19,$1A

DB $3B,$3C

 

DB $1C,$1D,$1C

DB $1B,$1A,$19,$18

 

DB $39,$08,$07,$06,$05

 

 

UWEEXPV DB $04,$05,$06,$07,$08,$09,$0F

DB $0E,$0C,$09,$08,$06,$04

 

GLDEXPLV DB $18,$07,$06,$05,$04,$03,$02

 

 

ENDGAM0V DB $14,$04,$04,$14,$14

DB $14,$14,$75,$74

 

ENDGAM1V DB $15,$16,$17,$18,$19,$17,$18

DB $19,$17,$18,$19,$1A,$19

DB $18,$17,$06,$05,$04,$03,$02,$01

 

MINISHTV DB $0F,$07,$08,$06,$04,$03,$02,$01

 

 

VHDEATHV DB $18,$17,$16,$15

DB $E8

DB $37

DB $36,$35

 

CUCKOO1V DB $08,$07,$06,$05,$04,$05,$06,$07

DB $F5,$F5,$F5

 

CUCKOO2V DB $73,$F3,$F3,$F3

 

NHIERO1V DB $88

 

NHIERO2V DB $28,$8

 

NHIERO3V DB $38,$28

 

HMISS3V DB $1A,$1B,$1C,$1D

DB $1E,$1D,$1C,$1B

 

SPAWNV DB $8A

RUNNINGV DB $23,$33

 

JEWELV DB $3,$14,$15,$6,$19

DB $7,$8,$9,$A,$19,$18

DB $17,$16,$15,$4,$3,$2,$1

SFINKSV DB $47,$8,$19

DB $1A,$B,$1E,$C,$D

XLPOWERV DB $A,$A,$A,$1A,$9,$8

 

UWERUNV DB 3,6,5,4

DB 3,3,3,3,6

SWIMV DB 2,3,4,5,4,3,$22

DB 3,4,5,4,3,$22

SCBEXPLV DB $15,$16,$17,$18

DB $19,$18,$17,$16

 

SPHXBM0V DB $0D,$0E,$2F,$0E,$0D,$0C

DB $0B,$0A,$09,$08,$07,$06,$05,$04

DB $1A,$19,$18,$17

DB $16,$15,$14,$13

 

SPHXBM1V DB $7F

DB $7E

DB $7D

DB $1C,$19,$17,$15

 

MINIBMV DB $1F,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05

 

POWRUSEV DB $08,$07,$06,$05,$04,$03,$02,$02,$01,$01

 

LOSCOR0V

LOSEND0V

HISCOR0V

HISEND0V DB $88

 

HISCOR1V

HISEND1V DB $18,$17,$16,$15

DB $14,$13,$12,$11

DB $08,$17,$06,$15,$04,$03

DB $08,$07,$06,$05,$08,$07,$06,$05

 

LOSCOR1V DB $08,$05,$02,$90,$F0,$08,$05,$02,$00

LOSEND1V DB $08,$05,$03,$02

 

BACKGR1V

BACKGR0V DB 6,6,4,2,1,$61,$31

DB 6,6,4,2,1,$61,$31

 

FLASHT0V

FLASHT1V DB $78,8,7,6,5,4,3,2,1

 

********************************************************************************

* CTLTABL

 

 

MINISHTC DB $83

 

RICCHETC DB $08,$08,$8F

 

ALADIN0C

HMISS3C

ENDGAM0C DB $81

 

HISEND0C

HISCOR0C

DB $0D,$0D,$04,$0D,$0D,$0D,$0D,$0D

DB $0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D

DB $0D,$0D,$04,$0D,$0D,$0D,$0D,$0D

DB $0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D

BACKGR0C

BACKGR1C

LOSCOR1C

LOSEND1C

HISEND1C

HISCOR1C

DB $8A

 

LOSEND0C

LOSCOR0C DB $0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D

DB $0D,$0D,$0D,$0D,$0D,$0D,$0D,$0D

DB $0D,$0D,$0D,$0D,$04,$8D

 

FLASHT0C

POWRUSEC

ALADIN1C

ENDGAM1C

RUNNINGC DB $8D

 

BRDSHOTC

UWEEXPC

UWERUNC

SWIMC

MINIBMC

GLDEXPLC DB $88

 

JEWELC DB $08,$08,$08,$08,$08,$08,$84

XLPOWERC

CUCKOO2C

NHIERO1C

NHIERO2C

NHIERO3C DB $84

 

 

VHDEATHC DB $03,$07,$0F,$08,$08,$08,$08,$08

DB $84

 

CUCKOO1C DB $08,$08,$08,$08,$08,$08,$08,$08

DB $84

 

 

 

SPAWNC DB $D,$1,$D,$1,$D,$1

 

 

SFINKSC DB $8F

 

SCBEXPLC DB $D,$D,7,7,4,4,$F,$F

DB $84

 

SPHXBM0C DB $08,$03,$08,$03,$08,$03,$08,$08

DB $08,$03,$08,$03,$08,$03,$08,$08

DB $08,$03,$08,$03,$08,$03,$08,$08

DB $08,$03,$08,$03,$08,$03,$08,$08

 

SPHXBM1C DB $08,$08,$03,$08,$08,$03,$08,$08

DB $03,$08,$08,$03,$08,$08,$03,$08

DB $08,$03,$08,$04,$03,$08,$08,$03

DB $08,$08,$03,$08,$08,$03,$08,$08

 

FLASHT1C DB $0D,$0D,$0D,$04,$0D,$0D,$04,$0D

DB $0D,$0D,$0D,$04,$0D,$0D,$04,$0D

 

**

 

 

END

* SPHINX.S--SVEX.S

 

ZERODEF

 

* ALIEN STUFF

ORG $FF80 ; $FF80 - $FFF7 RESERVED FOR ALIEN

ALIEN DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

;120 FOR ALIEN

 

* VECTORS FOR STARTUP

ORG $FFF8

DB $FF,$87

DB L(HANDLER),H(HANDLER) ;DLI HANDLER NMI

DB L(STARTUP),H(STARTUP) ; STARTUP VECTOR

DB 0,0 ;IRQ VECTOR NOT USED

 

END

********SSCROBJ.S NEW SCROLLING OBJECT SHIT

 

ZERODEF

 

RSEG CODEF

 

; SCRLOAD SCANS THE SCROLLING OBJECT BUFFER FOR STAMPS THAT ARE READY TO BE

; LOADED, AND PUTS THEM INTO THE LOADER TABLES.

; IT IS RUN ONCE EVERY COARSE SCROLL.

 

SCRBUFSZ EQU 10 ; SIZE OF SCROLLING OBJECT BUFFER

INITVP EQU -15 ; INITIAL VP FOR MOST OBJECTS

 

SCRLDRTS RTS

 

SCRLOAD BIT GCOARSE

BPL SCRLDRTS ; DO ONLY ON COARSE SCROLLS

LDX #SCRBUFSZ

SCRLDLP DEX

BMI SCRLDRTS ; ALL DONE

LDY STAMPID,X

BMI SCRLDLP ; NOT AN ACTIVE BUFFER SLOT

DEC ZONESBK,X

BPL SCRLDLP ; NOT TIME YET

 

STX TEMP0 ; SAVE X SINCE WE ARE LOADING THIS ONE

LDA HPOS,X

STA TEMP1 ; WE NEED THE HPOS ALL OVER THE PLACE

 

JSR GETASLOT ; GET SLOT NUMBER FOR OBJECT IN X

BPL FUCKTHIS ; NO SLOT AVAILABLE SO PUNT

JMP SCRPUNT

 

FUCKTHIS LDA SCRSL,Y ; START FILLING IN LOADER TABLES

STA SLTBL,X

LDA SCRSH,Y

STA SHTBL,X

LDA SCRSM,Y

STA SMTBL,X

LDA SCRPW,Y

STA PWTBL,X

 

LDA TEMP1 ; HPOS

CLC

ADC SCRHOFF,Y

SEC

SBC SCRDELTA

STA HPTBL,X

 

LDA SCRVP,Y

CLC

ADC SCRDELTA

STA VPTBL,X

 

LDA SCRY,Y

STA YTBL,X

 

LDA SCRCOL,Y

STA COLSTAT,X

BEQ NOCOLBOX ; NO COLISION BOX FOR THIS STAMP

LDA TEMP1 ; HPOS

LSR A

CLC

ADC SCRXOFF,Y ; ARE THESE AFFECTED BY SCRDELTA ????

STA COLX1,X

CLC

ADC SCRWDTH,Y

STA COLX2,X

LDA TEMP1 ; HPOS

LSR A

CLC

ADC SCRZOFF,Y

STA COLZ1,X

CLC

ADC SCRDPTH,Y

STA COLZ2,X

LDA SCRYOFF,Y

STA COLY1,X

CLC

ADC SCRHGHT,Y

STA COLY2,X

 

NOCOLBOX LDA SCRDX,Y

CMP #$FF

BEQ AHIERO

SEC

SBC SCRDELTA

AHIERO STA TEMP6

CLC

ADC SCRDD,Y ; CALCULATE DF

STA TEMP10

 

JSR OBJINS ; PUT IT IN THE LINKED LIST

 

CPY #20

BNE DISP1

JSR MINIINIT

JMP SCRPUNT

DISP1 CPY #22

BNE DISP2

JSR FIREINIT

JMP SCRPUNT

DISP2 CPY #30

BNE DISP3

JSR SXFLINIT

JMP SCRPUNT

DISP3 CPY #31

BNE SCRPUNT

JSR SXFHINIT

 

SCRPUNT LDX TEMP0 ; GET SET TO CONTINUE

LDA #-1

STA STAMPID,X ; MARK BUFFER SLOT AS UNUSED

INC FRBUFPTR ; PUSH BUFFER SLOT BACK ONTO STACK

LDY FRBUFPTR

TXA

STA FRBUFSTK,Y

JMP SCRLDLP

 

SCRSL

DB L(CANEH) ; HIERO 1 0

DB L(MANWSTAF) ; HIERO 2 1

DB L(FEATHER) ; HIERO 3 2

DB L(EYEH) ; HIERO 4 3

DB L(AHNKH) ; HIERO 5 4

DB L(BIRDH) ; HIERO 6 5

DB L(SUNOWTRH) ; HIERO 7 6

DB L(BOWLH) ; HIERO 8 7

DB L(GEM) ; JEWEL 1 8

DB L(EGG) ; JEWEL 2 9

DB L(BAR) ; JEWEL 3 10

DB L(BIGPYR0) ; SM PYR BOT 11

DB L(BIGPYR1) ; SM PYR TOP 12

DB L(OPEPYR0) ; LG PYR BOT 13

DB L(OPEPYR1) ; LG PYR MID 14

DB L(OPEPYR2) ; LG PYR TOP 15

DB L(OBELISK0) ; OBELISK BOT 16

DB L(OBELISK1) ; OBELISK MID 17

DB L(OBELISK2) ; OBELISK TOP 18

DB L(MINISPH0) ; MINI BOT 19

DB L(MINISPH1) ; MINI TOP 20

DB L(POT) ; FIRE POT 21

DB L(TIP1) ; FIRE TIP 22

DB L(SPHINXL1) ; SPHINX LEFT BOT 23

DB L(SPHINXL2) ; SPHINX LEFT 24

DB L(SPHINXL3) ; SPHINX LEFT 25

DB L(SPHINXL4) ; SPHINX LEFT TOP 26

DB L(SPHINXR2) ; SPHINX RIGHT BOT 27

DB L(SPHINXR3) ; SPHINX RIGHT 28

DB L(SPHINXR4) ; SPHINX RIGHT TOP 29

DB L(SPFACE1L) ; SPHINX FACE BOT 30

DB L(SPFACE1H) ; SPHINX FACE TOP 31

 

SCRSH

DB H(CANEH) ; HIERO 1

DB H(MANWSTAF) ; HIERO 2

DB H(FEATHER) ; HIERO 3

DB H(EYEH) ; HIERO 4

DB H(AHNKH) ; HIERO 5

DB H(BIRDH) ; HIERO 6

DB H(SUNOWTRH) ; HIERO 7

DB H(BOWLH) ; HIERO 8

DB H(GEM) ; JEWEL 1

DB H(EGG) ; JEWEL 2

DB H(BAR) ; JEWEL 3

DB H(BIGPYR0) ; SM PYR BOT

DB H(BIGPYR1) ; SM PYR TOP

DB H(OPEPYR0) ; LG PYR BOT

DB H(OPEPYR1) ; LG PYR MID

DB H(OPEPYR2) ; LG PYR TOP

DB H(OBELISK0) ; OBELISK BOT

DB H(OBELISK1) ; OBELISK MID

DB H(OBELISK2) ; OBELISK TOP

DB H(MINISPH0) ; MINI BOT

DB H(MINISPH1) ; MINI TOP

DB H(POT) ; FIRE POT

DB H(TIP1) ; FIRE TIP

DB H(SPHINXL1) ; SPHINX LEFT BOT

DB H(SPHINXL2) ; SPHINX LEFT

DB H(SPHINXL3) ; SPHINX LEFT

DB H(SPHINXL4) ; SPHINX LEFT TOP

DB H(SPHINXR2) ; SPHINX RIGHT BOT

DB H(SPHINXR3) ; SPHINX RIGHT

DB H(SPHINXR4) ; SPHINX RIGHT TOP

DB H(SPFACE1L) ; SPHINX FACE BOT

DB H(SPFACE1H) ; SPHINX FACE TOP

 

SCRSM

DB H(CANEH+$1100-$1000) ; HIERO 1

DB H(MANWSTAF+$1100-$1000) ; HIERO 2

DB H(FEATHER+$1100-$1000) ; HIERO 3

DB H(EYEH+$1100-$1000) ; HIERO 4

DB H(AHNKH+$1100-$1000) ; HIERO 5

DB H(BIRDH+$1100-$1000) ; HIERO 6

DB H(SUNOWTRH+$1100-$1000) ; HIERO 7

DB H(BOWLH+$1100-$1000) ; HIERO 8

DB H(GEM+$1100-$1000) ; JEWEL 1

DB H(EGG+$1100-$1000) ; JEWEL 2

DB H(BAR+$1100-$1000) ; JEWEL 3

DB H(BIGPYR0+$1100-$1000) ; SM PYR BOT

DB H(BIGPYR1+$1100-$1000) ; SM PYR TOP

DB H(OPEPYR0+$1100-$1000) ; LG PYR BOT

DB H(OPEPYR1+$1100-$1000) ; LG PYR MID

DB H(OPEPYR2+$1100-$1000) ; LG PYR TOP

DB H(OBELISK0+$1100-$1000) ; OBELISK BOT

DB H(OBELISK1+$1100-$1000) ; OBELISK MID

DB H(OBELISK2+$1100-$1000) ; OBELISK TOP

DB H(MINISPH0+$1100-$1000) ; MINI BOT

DB H(MINISPH1+$1100-$1000) ; MINI TOP

DB H(POT+$1100-$1000) ; FIRE POT

DB H(TIP1+$1100-$100) ; FIRE TIP

DB H(SPHINXL1+$1100-$1000) ; SPHINX LEFT BOT

DB H(SPHINXL2+$1100-$1000) ; SPHINX LEFT

DB H(SPHINXL3+$1100-$1000) ; SPHINX LEFT

DB H(SPHINXL4+$1100-$1000) ; SPHINX LEFT TOP

DB H(SPHINXR2+$1100-$1000) ; SPHINX RIGHT BOT

DB H(SPHINXR3+$1100-$1000) ; SPHINX RIGHT

DB H(SPHINXR4+$1100-$1000) ; SPHINX RIGHT TOP

DB H(SPFACE1L+$1100-$1000) ; SPHINX FACE BOT

DB H(SPFACE1H+$1100-$1000) ; SPHINX FACE TOP

 

SCRPW

DB $7E ; HIERO 1

DB $7D ; HIERO 2

DB $7E ; HIERO 3

DB $7D ; HIERO 4

DB $7D ; HIERO 5

DB $7E ; HIERO 6

DB $7D ; HIERO 7

DB $7D ; HIERO 8

DB $BE ; JEWEL 1

DB $9E ; JEWEL 2

DB $7D ; JEWEL 3

DB $7C ; SM PYR BOT

DB $7E ; SM PYR TOP

DB $77 ; LG PYR BOT

DB $77 ; LG PYR MID

DB $79 ; LG PYR TOP

DB $7E ; OBELISK BOT

DB $7E ; OBELISK MID

DB $7E ; OBELISK TOP

DB $F8 ; MINI BOT

DB $F8 ; MINI TOP

DB $FE ; FIRE POT

DB $9E ; FIRE TIP

DB $F7 ; SPHINX LEFT BOT

DB $F7 ; SPHINX LEFT

DB $F7 ; SPHINX LEFT

DB $F7 ; SPHINX LEFT TOP

DB $FA ; SPHINX RIGHT BOT

DB $FA ; SPHINX RIGHT

DB $FA ; SPHINX RIGHT TOP

DB $FD ; SPHINX FACE BOT

DB $FD ; SPHINX FACE TOP

 

SCRHOFF

DB 0 ; HIERO 1

DB 0 ; HIERO 2

DB 0 ; HIERO 3

DB 0 ; HIERO 4

DB 0 ; HIERO 5

DB 0 ; HIERO 6

DB 0 ; HIERO 7

DB 0 ; HIERO 8

DB 0 ; JEWEL 1

DB 0 ; JEWEL 2

DB 0 ; JEWEL 3

DB 0 ; SM PYR BOT

DB 4-16 ; SM PYR TOP

DB 0 ; LG PYR BOT

DB 0-16 ; LG PYR MID

DB 4-32 ; LG PYR TOP

DB 0 ; OBELISK BOT

DB 0-16 ; OBELISK MID

DB 0-32 ; OBELISK TOP

DB 0 ; MINI BOT

DB 0-16 ; MINI TOP

DB 0 ; FIRE POT

DB 0 ; FIRE TIP

DB 0 ; SPHINX LEFT BOT

DB 0-16 ; SPHINX LEFT

DB 0-32 ; SPHINX LEFT

DB 0-48 ; SPHINX LEFT TOP

DB 35-16 ; SPHINX RIGHT BOT

DB 35-32 ; SPHINX RIGHT

DB 35-48 ; SPHINX RIGHT TOP

DB 8-16 ; SPHINX FACE BOT

DB 8-32 ; SPHINX FACE TOP

 

SCRVP

DB INITVP ; HIERO 1

DB INITVP ; HIERO 2

DB INITVP ; HIERO 3

DB INITVP ; HIERO 4

DB INITVP ; HIERO 5

DB INITVP ; HIERO 6

DB INITVP ; HIERO 7

DB INITVP ; HIERO 8

DB INITVP ; JEWEL 1

DB INITVP ; JEWEL 2

DB INITVP ; JEWEL 3

DB INITVP ; SM PYR BOT

DB INITVP ; SM PYR TOP

DB INITVP ; LG PYR BOT

DB INITVP ; LG PYR MID

DB INITVP ; LG PYR TOP

DB INITVP ; OBELISK BOT

DB INITVP ; OBELISK MID

DB INITVP ; OBELISK TOP

DB INITVP ; MINI BOT

DB INITVP ; MINI TOP

DB INITVP-3 ; FIRE POT

DB INITVP-2 ; FIRE TIP

DB INITVP ; SPHINX LEFT BOT

DB INITVP ; SPHINX LEFT

DB INITVP ; SPHINX LEFT

DB INITVP ; SPHINX LEFT TOP

DB INITVP-4 ; SPHINX RIGHT BOT

DB INITVP-4 ; SPHINX RIGHT

DB INITVP-4 ; SPHINX RIGHT TOP

DB INITVP+2 ; SPHINX FACE BOT

DB INITVP+2 ; SPHINX FACE TOP

 

SCRY

DB 0 ; HIERO 1

DB 0 ; HIERO 2

DB 0 ; HIERO 3

DB 0 ; HIERO 4

DB 0 ; HIERO 5

DB 0 ; HIERO 6

DB 0 ; HIERO 7

DB 0 ; HIERO 8

DB 1 ; JEWEL 1

DB 1 ; JEWEL 2

DB 1 ; JEWEL 3

DB 1 ; SM PYR BOT

DB 2 ; SM PYR TOP

DB 1 ; LG PYR BOT

DB 2 ; LG PYR MID

DB 3 ; LG PYR TOP

DB 1 ; OBELISK BOT

DB 2 ; OBELISK MID

DB 3 ; OBELISK TOP

DB 1 ; MINI BOT

DB 2 ; MINI TOP

DB 1 ; FIRE POT

DB 16 ; FIRE TIP

DB 1 ; SPHINX LEFT BOT

DB 2 ; SPHINX LEFT

DB 3 ; SPHINX LEFT

DB 4 ; SPHINX LEFT TOP

DB 1 ; SPHINX RIGHT BOT

DB 2 ; SPHINX RIGHT

DB 3 ; SPHINX RIGHT TOP

DB 2 ; SPHINX FACE BOT

DB 3 ; SPHINX FACE TOP

 

SCRCOL

DB HIEROCOL ; HIERO 1

DB HIEROCOL+1 ; HIERO 2

DB HIEROCOL+2 ; HIERO 3

DB HIEROCOL+3 ; HIERO 4

DB HIEROCOL+4 ; HIERO 5

DB HIEROCOL+5 ; HIERO 6

DB HIEROCOL+6 ; HIERO 7

DB HIEROCOL+7 ; HIERO 8

DB TREASCOL ; JEWEL 1

DB TREASCOL+1 ; JEWEL 2

DB TREASCOL+2 ; JEWEL 3

DB PASSVCOL ; SM PYR BOT

DB PASSVCOL ; SM PYR TOP

DB PASSVCOL ; LG PYR BOT

DB PASSVCOL ; LG PYR MID

DB PASSVCOL ; LG PYR TOP

DB PASSVCOL ; OBELISK BOT

DB PASSVCOL ; OBELISK MID

DB PASSVCOL ; OBELISK TOP

DB PASSVCOL ; MINI BOT

DB MINICOL ; MINI TOP

DB PASSVCOL ; FIRE POT

DB FIRECOL ; FIRE TIP

DB PASSVCOL ; SPHINX LEFT BOT

DB PASSVCOL ; SPHINX LEFT

DB PASSVCOL ; SPHINX LEFT

DB 0 ; SPHINX LEFT TOP

DB PASSVCOL ; SPHINX RIGHT BOT

DB PASSVCOL ; SPHINX RIGHT

DB 0 ; SPHINX RIGHT TOP

DB SPHNXCOL ; SPHINX FACE BOT

DB 0 ; SPHINX FACE TOP

 

SCRXOFF

DB -7 ; HIERO 1

DB -7 ; HIERO 2

DB -7 ; HIERO 3

DB -7 ; HIERO 4

DB -7 ; HIERO 5

DB -7 ; HIERO 6

DB -7 ; HIERO 7

DB -7 ; HIERO 8

DB -4 ; JEWEL 1

DB -4 ; JEWEL 2

DB -4 ; JEWEL 3

DB -4 ; SM PYR BOT

DB -2 ; SM PYR TOP

DB -8 ; LG PYR BOT

DB -6 ; LG PYR MID

DB -3 ; LG PYR TOP

DB -3 ; OBELISK BOT

DB -3 ; OBELISK MID

DB -2 ; OBELISK TOP

DB -3 ; MINI BOT

DB -2 ; MINI TOP

DB -2 ; FIRE POT

DB -3 ; FIRE TIP

DB -10 ; SPHINX LEFT BOT

DB 4 ; SPHINX LEFT

DB -9 ; SPHINX LEFT

DB 0 ; SPHINX LEFT TOP

DB -12 ; SPHINX RIGHT BOT

DB -9 ; SPHINX RIGHT

DB 0 ; SPHINX RIGHT TOP

DB -2 ; SPHINX FACE BOT

DB 0 ; SPHINX FACE TOP

 

SCRWDTH

DB 12 ; HIERO 1

DB 12 ; HIERO 2

DB 12 ; HIERO 3

DB 12 ; HIERO 4

DB 12 ; HIERO 5

DB 12 ; HIERO 6

DB 12 ; HIERO 7

DB 12 ; HIERO 8

DB 6 ; JEWEL 1

DB 6 ; JEWEL 2

DB 6 ; JEWEL 3

DB 8 ; SM PYR BOT

DB 4 ; SM PYR TOP

DB 17 ; LG PYR BOT

DB 12 ; LG PYR MID

DB 6 ; LG PYR TOP

DB 6 ; OBELISK BOT

DB 6 ; OBELISK MID

DB 4 ; OBELISK TOP

DB 10 ; MINI BOT

DB 8 ; MINI TOP

DB 5 ; FIRE POT

DB 7 ; FIRE TIP

DB 6 ; SPHINX LEFT BOT

DB 6 ; SPHINX LEFT

DB 18 ; SPHINX LEFT

DB 0 ; SPHINX LEFT TOP

DB 24 ; SPHINX RIGHT BOT

DB 18 ; SPHINX RIGHT

DB 0 ; SPHINX RIGHT TOP

DB 4 ; SPHINX FACE BOT

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...