circle anim

This commit is contained in:
Antoine Vignau 2024-02-26 21:27:45 +01:00
parent 4c4fa7f6b1
commit c1cb1f4d36
7 changed files with 14183 additions and 13281 deletions

Binary file not shown.

View File

@ -13,11 +13,8 @@
theGAME JSR checkJOYSTICK theGAME JSR checkJOYSTICK
LDA #chrK ; force keyboard **logo** * LDA #$01 ; read score table
STA fgINPUT * JSR readSCORE
LDA #$01 ; read score table
JSR readSCORE
*--- Show title page *--- Show title page
* Data from $0F00 to $1A84 * Data from $0F00 to $1A84
@ -203,27 +200,42 @@ L6178 JSR playMELODY
JSR animGAMEOVER ; we are dead, anim GAME OVER JSR animGAMEOVER ; we are dead, anim GAME OVER
BCS L61F6 BCS L61F6
L618E *-----------------------------------
* ATTENTE SUR UNE PAGE
*-----------------------------------
* JSR waitKEYUP * JSR waitKEYUP
LDX #$FF L618E
LDY #$FF LDX #32 ; valeurs d'attente / 255 avant
LDA #$03 LDY #32
STA theY * LDA #$03 ; 3
* STA theY
L6199 LDA fgINPUT L6199 LDA fgINPUT
CMP #chrK CMP #chrK
BEQ L61A9 BEQ L61A9 ; check keyboard
LDAl BUTN1 cmp #chrP
beq L619A
LDAL BUTN1 ; check joystick
BMI L6201 BMI L6201
LDAl BUTN0 LDAL BUTN0
BMI L6201 BMI L6201
L61A9 LDAl KBD bpl L61A9
L619A jsr read4PLAY ; check joypad
bmi L6201 ; button 1 pressed?
bvs L6201 ; button 2 pressed?
* LDA KBD
L61A9 jsr checkKEY
BMI L61F6 BMI L61F6
DEX DEX
BNE L6199 BNE L6199
DEY DEY
BNE L6199 BNE L6199
DEC theY * DEC theY
BNE L6199 * BNE L6199
LDA fgDEMO LDA fgDEMO
BNE L61DE BNE L61DE
LDX #$01 LDX #$01
@ -234,11 +246,11 @@ L61A9 LDAl KBD
LDX fgSOUND LDX fgSOUND
STX L61D0+1 STX L61D0+1
STA fgSOUND STA fgSOUND
JMP L6056 JMP L6056 ; et boucle
L61D0 LDA #$00 L61D0 LDA #$00
STA fgSOUND STA fgSOUND
LDAl KBD * LDA KBD
LDX fgKEYBTN0 LDX fgKEYBTN0
BEQ L61F6 BEQ L61F6
JMP L618E JMP L618E
@ -254,7 +266,12 @@ L61E9 JSR showALLSCORES
JMP L618E JMP L618E
L61F3 JMP showTITLEPAGE L61F3 JMP showTITLEPAGE
L61F6 STAl KBDSTROBE *-----------------------------------
* GESTION TOUCHE MENU ATTENTE
*-----------------------------------
L61F6
* STA KBDSTROBE
CMP #chrCTRLE ; Ctrl-E - Editor CMP #chrCTRLE ; Ctrl-E - Editor
BEQ L6211 BEQ L6211
CMP #chrRET ; Return CMP #chrRET ; Return
@ -269,9 +286,9 @@ L6201 LDX #$00
INX INX
STX theLEVEL STX theLEVEL
STX fgGOODSTART STX fgGOODSTART
LDA #$02 LDA #$02 ; mode jeu
STA fgDEMO STA fgDEMO
JMP L6056 JMP L6056 ; loop
L6211 JMP enterEDITOR ; Jump to the Editor L6211 JMP enterEDITOR ; Jump to the Editor
L6212 jmp meQUIT ; bye for now L6212 jmp meQUIT ; bye for now
@ -418,6 +435,7 @@ L62F7 INC fgODDEVEN
LDA theY LDA theY
CMP #lvlHEIGHT CMP #lvlHEIGHT
BCC L62CF BCC L62CF
LDA #$02 ; write level LDA #$02 ; write level
JMP diskLEVEL JMP diskLEVEL
@ -449,7 +467,9 @@ diskLEVEL tax
_BlockMove _BlockMove
sep #$30 sep #$30
jmp saveLEVELS ; save all levels jsr saveLEVELS ; save all levels
clc
rts
dlLOAD rep #$30 ; load a level dlLOAD rep #$30 ; load a level
pea ^ptrLEVELS pea ^ptrLEVELS
@ -1472,19 +1492,26 @@ digDURATION DB $04 ; duration
* DEMO MODE ENGINE ENTRY POINT * DEMO MODE ENGINE ENTRY POINT
*----------------------------------- *-----------------------------------
L69B7 jsr read4PLAY
bmi L69CD ; button 1 pressed?
bvs L69CD ; button 2 pressed?
L69B8 jsr checkKEY L69B8 jsr checkKEY
* LDAl KBD * LDA KBD
BMI L69CD BMI L69CD
LDA fgINPUT LDA fgINPUT
CMP #chrK CMP #chrK ; keyboard?
BEQ L69D6 BEQ L69D6
LDAl BUTN1 cmp #chrP ; joypad?
beq L69B7
LDAL BUTN1 ; then joystick
BMI L69CD BMI L69CD
LDAl BUTN0 LDAL BUTN0
BPL L69D6 BPL L69D6
L69CD
* stal KBDSTROBE * STA KBDSTROBE
LSR fgKEYBTN0
L69CD LSR fgKEYBTN0 ; key/button pressed
LSR fgPLAY LSR fgPLAY
LDA #$01 LDA #$01
STA theMEN ; one man STA theMEN ; one man
@ -1533,19 +1560,22 @@ getPLAYERINPUT
CMP #$01 CMP #$01
BEQ L69B8 BEQ L69B8
jsr checkKEY jsr checkKEY
* ldal KBD * LDAL KBD
* stal KBDSTROBE * stal KBDSTROBE
STA theA STA theA
BMI L6A2B BMI L6A2B
LDA fgINPUT LDA fgINPUT
CMP #chrK CMP #chrK
BEQ L6A55 BEQ L6A55
cmp #chrP
beq L6A29
L6A28 JMP getJOYSTICKKEY L6A28 JMP getJOYSTICKKEY
L6A29 jmp getJOYPADKEY
L6A2B CMP #chrSPC ; skip if game key L6A2B CMP #chrSPC ; check control keys
BCS L6A49 BCS L6A49 ; that is a game key
STA theA * STA theA
LDY #$FF LDY #$FF ; that's a control key
L6A33 INY L6A33 INY
LDA tblKEY,Y LDA tblKEY,Y
BEQ L6A49 BEQ L6A49
@ -1565,8 +1595,10 @@ L6A33 INY
L6A49 LDA fgINPUT ; joystick? L6A49 LDA fgINPUT ; joystick?
CMP #chrJ CMP #chrJ
BEQ L6A28 ; yes BEQ L6A28
cmp #chrP ; joypad?
beq L6A29
* LDX theA ; no * LDX theA ; no
* STX theKEY1 * STX theKEY1
* STX theKEY2 * STX theKEY2
@ -1658,9 +1690,11 @@ doSETKEYBOARD
*------------------------------- *-------------------------------
doSETJOYPAD doSETJOYPAD
lda slot4PLAY
beq nojoypad
LDA #chrP LDA #chrP
STA fgINPUT STA fgINPUT
JMP getPLAYERINPUT nojoypad JMP getPLAYERINPUT
*------------------------------- *-------------------------------
* 98 - CTRL-X - FLIPS X-AXIS * 98 - CTRL-X - FLIPS X-AXIS
@ -1701,26 +1735,44 @@ doSPEEDUP LDA theSPEED
INC theSPEED INC theSPEED
L6ACD JMP getPLAYERINPUT L6ACD JMP getPLAYERINPUT
*-------------------------------
* GET JOYPAD KEY
*-------------------------------
getJOYPADKEY
jsr read4PLAY ; button 0: dig left
bpl getJOYK1 ; button 1: dig right
ldx #chrU
bne getJOYK2
getJOYK1 bvc getJOYK3
ldx #chrO
getJOYK2 stx theKEY1
stx theKEY2
rts
getJOYK3 jsr readJOYPAD ; set X/Y
bra L6AE8 ; and move on
*------------------------------- *-------------------------------
* GET JOYSTICK KEY * GET JOYSTICK KEY
*------------------------------- *-------------------------------
getJOYSTICKKEY getJOYSTICKKEY
LDAl BUTN1 LDAL BUTN1
BPL L6AD9 BPL L6AD9
LDA #chrU ; dig LDA #chrU ; dig left
BNE L6AE0 BNE L6AE0
L6AD9 LDAl BUTN0 L6AD9 LDAL BUTN0
BPL L6AE5 BPL L6AE5
LDA #chrO ; dig LDA #chrO ; dig right
L6AE0 STA theKEY1 L6AE0 STA theKEY1
STA theKEY2 STA theKEY2
RTS RTS
L6AE5 JSR readJOYSTICK ; no keys pressed L6AE5 JSR readJOYSTICK ; no keys pressed
LDY theJOYX ; read joystick
L6AE8 LDY theJOYX ; read joystick
LDA joyXMAX ; clamp LDA joyXMAX ; clamp
CMP #$2E ; return key CMP #ctrJOY ; return key
BEQ L6AFA BEQ L6AFA
CPY joyXMAX CPY joyXMAX
BCS L6B03 BCS L6B03
@ -1731,7 +1783,7 @@ L6AFA CPY joyXMAX
LDA #chrL LDA #chrL
BNE L6B1E BNE L6B1E
L6B03 LDA joyXMIN L6B03 LDA joyXMIN
CMP #$2E CMP #ctrJOY
BEQ L6B13 BEQ L6B13
CPY joyXMIN CPY joyXMIN
BCS L6B1C BCS L6B1C
@ -1745,7 +1797,7 @@ L6B1C LDA #chrA-1
L6B1E STA theKEY2 L6B1E STA theKEY2
LDY theJOYY LDY theJOYY
LDA joyYMIN LDA joyYMIN
CMP #$2E CMP #ctrJOY
BEQ L6B32 BEQ L6B32
CPY joyYMIN CPY joyYMIN
BCS L6B3B BCS L6B3B
@ -1756,7 +1808,7 @@ L6B32 CPY joyYMIN
LDA #chrI LDA #chrI
BNE L6B56 BNE L6B56
L6B3B LDA joyYMAX L6B3B LDA joyYMAX
CMP #$2E CMP #ctrJOY
BEQ L6B4B BEQ L6B4B
CPY joyYMAX CPY joyYMAX
BCS L6B54 BCS L6B54
@ -3461,15 +3513,26 @@ displayHIGHSCORES
LDY #$FF LDY #$FF
LDA #$04 LDA #$04
STA counter STA counter
L77B7 LDA fgINPUT L77B7 LDA fgINPUT
CMP #chrK CMP #chrK
BEQ L77C7 BEQ L77C7
LDAl BUTN1 cmp #chrJ
beq L77B9
cmp #chrP
bne L77C7
jsr read4PLAY
bmi L77D6
bvs L77D6
bvc L77C7
L77B9 LDAL BUTN1
BMI L77D6 BMI L77D6
LDAl BUTN0 LDAL BUTN0
BMI L77D6 BMI L77D6
* LDA KBD
L77C7 jsr checkKEY L77C7 jsr checkKEY
* LDAl KBD
BMI L77D6 BMI L77D6
DEX DEX
BNE L77B7 BNE L77B7
@ -3477,10 +3540,9 @@ L77C7 jsr checkKEY
BNE L77B7 BNE L77B7
DEC counter DEC counter
BNE L77B7 BNE L77B7
L77D6 * STA KBDSTROBE
* STAl KBDSTROBE
* STA TXTPAGE1 * STA TXTPAGE1
lda ptrSCREEN+2 L77D6 lda ptrSCREEN+2
sta ptrHGR1+2 sta ptrHGR1+2
lda #>oldHGR1 lda #>oldHGR1
sta hgrPAGE sta hgrPAGE
@ -4076,7 +4138,7 @@ L7C41 TXA ; yes, we know the key
PHA PHA
RTS RTS
tblEDITKEY ASC "PCEMISO"00 tblEDITKEY ASC "PCEMISORQ"00
tblEDITADD DA editPLAY-1 ; Play level tblEDITADD DA editPLAY-1 ; Play level
DA editCLEAR-1 ; Clear level DA editCLEAR-1 ; Clear level
@ -4085,7 +4147,9 @@ tblEDITADD DA editPLAY-1 ; Play level
DA editINIT-1 ; Initialize DA editINIT-1 ; Initialize
DA editCLEARSCORE-1 ; Clear Score file DA editCLEARSCORE-1 ; Clear Score file
da editOPEN-1 ; Open levels da editOPEN-1 ; Open levels
da editRESTART-1 ; Restart gale
da editBYE-1 ; Quit game
*------------------------------- *-------------------------------
* P - PLAY LEVEL * P - PLAY LEVEL
*------------------------------- *-------------------------------
@ -4174,16 +4238,6 @@ editMOVE JSR printSTRING
* LDA #$02 ; write * LDA #$02 ; write
* JSR diskLEVEL * JSR diskLEVEL
jsr iigsMOVELEVEL
JMP editLOOP
L7D5A JMP editNEXT
*-------------------------------
mx %00
iigsMOVELEVEL
rep #$30 rep #$30
pea ^ptrLEVELS ; set source level pea ^ptrLEVELS ; set source level
@ -4205,10 +4259,13 @@ iigsMOVELEVEL
PushLong #256 ; set length PushLong #256 ; set length
_BlockMove _BlockMove
jmp saveLEVELS ; save levels and return 8-bit jsr saveLEVELS ; save levels and return 8-bit
mx %11 mx %11
JMP editLOOP
L7D5A JMP editNEXT
*------------------------------- *-------------------------------
* I - INITIALIZE DISKETTE => CLEAR LEVELS * I - INITIALIZE DISKETTE => CLEAR LEVELS
*------------------------------- *-------------------------------
@ -4332,13 +4389,43 @@ L7EFE JMP editLOOP
*------------------------------- *-------------------------------
editOPEN jsr editSAVECHANGES editOPEN jsr editSAVECHANGES
JSR printSTRING jsr printSTRING
ASC 8D asc 8D
ASC ">>LOAD LEVEL FILE"00 asc ">>LOAD LEVEL FILE"00
JSR doLOAD ; load a levels file? jsr doLOAD ; load a levels file?
BCS editOPEN99 bcs editOPEN99
JMP editMAIN ; yes jmp editMAIN ; yes
editOPEN99 JMP editNEXT ; no editOPEN99 jmp editLOOP ; no
*-------------------------------
* R - RESTART THE GAME
*-------------------------------
editRESTART jsr editSAVECHANGES
jsr printSTRING
asc ">>RESTART GAME"8D
ASC " THIS RESTARTS THE GAME"8D8D
ASC " ARE YOU SURE (Y/N) "00
JSR editWAITKEY
CMP #chrY
BNE editRES99
jmp showTITLEPAGE
editRES99 jmp editLOOP
*-------------------------------
* Q - QUIT THE GAME
*-------------------------------
editBYE jsr editSAVECHANGES
jsr printSTRING
asc ">>QUIT GAME"8D
ASC " THIS QUITS THE GAME"8D8D
ASC " ARE YOU SURE (Y/N) "00
JSR editWAITKEY
CMP #chrY
BNE editBYE99
jmp meQUIT
editBYE99 jmp editLOOP
*------------------------------- *-------------------------------
* EDIT THE LEVEL * EDIT THE LEVEL
@ -4537,7 +4624,7 @@ editSAVECHANGES
* STA TXTPAGE2 * STA TXTPAGE2
L8062 LDA #$00 L8062 LDA #$00
JSR L85F3 JSR L85F3
* STAl KBDSTROBE * STA KBDSTROBE
CMP #chrN CMP #chrN
BEQ L8075 BEQ L8075
CMP #chrY CMP #chrY
@ -4595,7 +4682,7 @@ L80D8 JSR printSTRING
* STA TXTPAGE2 * STA TXTPAGE2
LDA #$00 LDA #$00
JSR L85F3 JSR L85F3
* STAl KBDSTROBE * STA KBDSTROBE
* STA TXTPAGE1 * STA TXTPAGE1
lda ptrSCREEN+2 lda ptrSCREEN+2
sta ptrHGR1+2 sta ptrHGR1+2
@ -4632,7 +4719,7 @@ blinkATXY
LDY theX LDY theX
LDA (ptrBOARD),Y LDA (ptrBOARD),Y
JSR blinkSPRITE JSR blinkSPRITE
* STAl KBDSTROBE * STA KBDSTROBE
RTS RTS
tblEDITKEYS tblEDITKEYS
@ -4678,7 +4765,7 @@ L81A4 LDX L824D
CLC CLC
ADC #spr0 ; spr0 ADC #spr0 ; spr0
JSR blinkSPRITE JSR blinkSPRITE
* STAl KBDSTROBE * STA KBDSTROBE
CMP #chrRET ; return CMP #chrRET ; return
BEQ L820D BEQ L820D
CMP #chrLA ; left arrow CMP #chrLA ; left arrow
@ -4755,14 +4842,12 @@ L822F CLC
TAY TAY
DEY DEY
STY intLEVEL ; and make it our level STY intLEVEL ; and make it our level
tya
stal $300
CPY #maxLEVEL CPY #maxLEVEL
L823C RTS L823C RTS
editWAITKEY LDA #sprEMPTY editWAITKEY LDA #sprEMPTY
JSR blinkSPRITE JSR blinkSPRITE
* STAl KBDSTROBE * STA KBDSTROBE
and #maskUPPER ; lowercase support and #maskUPPER ; lowercase support
CMP #$9B ; escape CMP #$9B ; escape
BNE L824C BNE L824C
@ -5090,7 +5175,7 @@ L857F LDX L824D
L8582 LDA scorebuf,X L8582 LDA scorebuf,X
JSR filterCHAR JSR filterCHAR
JSR L85F3 JSR L85F3
* STAl KBDSTROBE * STA KBDSTROBE
CMP #chrRET CMP #chrRET
BEQ L85E7 BEQ L85E7
CMP #chrLA CMP #chrLA
@ -5147,7 +5232,7 @@ L85F6 LDA #$68
LDA #sprCURSOR LDA #sprCURSOR
L8601 JSR coutHGR1 ; not 2 L8601 JSR coutHGR1 ; not 2
L8604 jsr checkKEY L8604 jsr checkKEY
* LDAl KBD * LDA KBD
BMI L8628 BMI L8628
JSR checkMOVEMENT JSR checkMOVEMENT
DEC counter DEC counter
@ -5157,7 +5242,7 @@ L8604 jsr checkKEY
LDA #$68 LDA #$68
STA counter STA counter
L8619 jsr checkKEY L8619 jsr checkKEY
* LDAl KBD * LDA KBD
BMI L8628 BMI L8628
JSR checkMOVEMENT JSR checkMOVEMENT
DEC counter DEC counter
@ -5273,7 +5358,7 @@ L86D2 DEX
BNE L86D2 BNE L86D2
LDA fgSOUND LDA fgSOUND
BEQ L86DC BEQ L86DC
LDAl SPKR LDAL SPKR
L86DC DEY L86DC DEY
BNE L86D0 BNE L86D0
RTS RTS
@ -5317,7 +5402,7 @@ L8703 LDA #$68
LDA #sprCURSOR ; cursor sprite LDA #sprCURSOR ; cursor sprite
L8710 JSR coutHGR1 ; output empty L8710 JSR coutHGR1 ; output empty
L8713 jsr checkKEY L8713 jsr checkKEY
* LDAl KBD ; key pressed? * LDA KBD ; key pressed?
BMI L873C ; yes BMI L873C ; yes
JSR checkMOVEMENT ; buttons pressed? JSR checkMOVEMENT ; buttons pressed?
BCS L873C ; yes BCS L873C ; yes
@ -5328,7 +5413,7 @@ L8713 jsr checkKEY
LDA #$68 ; redo the wait LDA #$68 ; redo the wait
STA counter STA counter
L872B jsr checkKEY L872B jsr checkKEY
* LDAl KBD * LDA KBD
BMI L873C BMI L873C
JSR checkMOVEMENT JSR checkMOVEMENT
BCS L873C BCS L873C
@ -5344,6 +5429,32 @@ L873C PHA ; exit with
bsDATA DB $06 bsDATA DB $06
*-----------------------------------
* READ JOYPAD
*-----------------------------------
readJOYPAD jsr read4PLAY
ldx #ctrJOY ; default values
ldy #ctrJOY
ror ; test up
bcc readJOYP1 ; no
ldy #0 ; yes
readJOYP1 ror ; test down
bcc readJOYP2 ; no
ldy #255 ; yes
readJOYP2 ror ; test left
bcc readJOYP3 ; no
ldx #0 ; yes
readJOYP3 ror ; test right
bcc readJOYP4 ; no
ldx #255 ; yes
readJOYP4 stx theX ; store values
sty theY
rts
*----------------------------------- *-----------------------------------
* READ JOYSTICK * READ JOYSTICK
*----------------------------------- *-----------------------------------
@ -5352,15 +5463,15 @@ readJOYSTICK
LDA #$00 LDA #$00
STA theJOYX STA theJOYX
STA theJOYY STA theJOYY
LDAl PTRIG LDAL PTRIG
L874F LDX #$01 L874F LDX #$01
L8751 LDAl PADDL0,X L8751 LDAL PADDL0,X
BPL L8769 BPL L8769
INC theJOYX,X INC theJOYX,X
L8758 DEX L8758 DEX
BPL L8751 BPL L8751
LDAl PADDL0 LDAL PADDL0
ORAl PADDL1 ORAL PADDL1
BPL L876C BPL L876C
LDA theJOYX LDA theJOYX
ORA theJOYY ORA theJOYY
@ -5377,8 +5488,24 @@ checkMOVEMENT
LDA fgINPUT LDA fgINPUT
CMP #chrK CMP #chrK
BEQ L8798 BEQ L8798
JSR readJOYSTICK cmp #chrJ
LDA theJOYX beq checkMOV1
cmp #chrP
bne L8798
jsr readJOYPAD
lda the4PLAY ; check buttons state now
bmi L8796
bvs L8796
bra checkMOV2 ; now check movement
checkMOV1 JSR readJOYSTICK
LDAL BUTN1
BMI L8796
LDAL BUTN0
BMI L8796
checkMOV2 LDA theJOYX
CMP #minJOY CMP #minJOY
BCC L8796 BCC L8796
CMP #maxJOY CMP #maxJOY
@ -5388,10 +5515,6 @@ checkMOVEMENT
BCC L8796 BCC L8796
CMP #maxJOY CMP #maxJOY
BCS L8796 BCS L8796
LDAl BUTN1
BMI L8796
LDAl BUTN0
BMI L8796
CLC CLC
RTS RTS
L8796 SEC L8796 SEC
@ -5410,9 +5533,9 @@ L879A DEY ; to compensate
*----------------------------------- *-----------------------------------
checkJOYSTICK checkJOYSTICK
LDAl PTRIG LDAL PTRIG
LDX #$10 LDX #$10
L87A7 LDAl PADDL0 L87A7 LDAL PADDL0
ORAl PADDL1 ORAl PADDL1
BPL L87B9 BPL L87B9
DEY DEY
@ -5431,7 +5554,7 @@ playSOUND STA ptrDATA
STX $0B STX $0B
L87BE LDA fgSOUND L87BE LDA fgSOUND
BEQ L87C5 BEQ L87C5
LDAl SPKR LDAL SPKR
L87C5 DEY L87C5 DEY
BNE L87CC BNE L87CC
DEC $0B DEC $0B
@ -5614,35 +5737,34 @@ tblDELTAX HEX FEFF000102 ; -2, -1, 0, 1, 2
* CIRCLE ANIMATION - LOGO * CIRCLE ANIMATION - LOGO
*------------------------------- *-------------------------------
caMAXSTEP = 190 ; 170
caDFTCENY = 88
caDFTCENX = 160 ; 140
circleANIMATION circleANIMATION
LDA #$58 ; 88 LDA #caDFTCENY ; 88
STA $73 STA $73
LDA #$8C ; 140 LDA #caDFTCENX ; 140
STA $74 STA $74
LDA fgCIRCLE ; inner or outer animation? LDA fgCIRCLE ; inner or outer animation?
BEQ L88BD ; show the level BEQ L88BD ; show the level
*--- hide the level *--- hide the level
rep #$30 LDX #caMAXSTEP ; 170
PushWord #0 STX $6D
_ClearScreen LDX #0 ; 0
sep #$30 STX caFGMODE
L88B6 JSR L88D7
* LDX #$AA ; 170 DEC $6D
* STX $6D BNE L88B6
* LDX #$00 ; 0
* STX $72
*L88B6 JSR L88D7
* DEC $6D
* BNE L88B6
*--- show the level *--- show the level
L88BD LDA #$01 ; 1 L88BD LDA #$01 ; 1
STA $6D STA $6D
STA fgCIRCLE STA fgCIRCLE
STA $72 ; 1 STA caFGMODE ; 1
lda #>oldHGR1 ; was 2 **logo** lda #>oldHGR1 ; was 2 **logo**
sta activePAGE sta activePAGE
@ -5651,23 +5773,17 @@ L88BD LDA #$01 ; 1
* JSR printMEN * JSR printMEN
* JSR printLEVEL * JSR printLEVEL
rep #$30
PushLong #HGR2
PushLong ptrSCREEN
PushLong #hgrTOMOVE
_BlockMove
sep #$30
rts
L88CB JSR L88D7 L88CB JSR L88D7
INC $6D INC $6D
LDA $6D LDA $6D
CMP #$AA ; 170 CMP #caMAXSTEP ; 170
BNE L88CB BNE L88CB
RTS RTS
*--- *---
caMAXMASK = 1 ; HGR: 6, SHR: 1
L88D7 LDA $6D L88D7 LDA $6D
STA $69 STA $69
LDA #$00 LDA #$00
@ -5713,12 +5829,12 @@ L88D7 LDA $6D
TAX TAX
LDA #$00 LDA #$00
SBC #$00 SBC #$00
JSR L8A45 JSR caCALCX
STY $7D STY $7D
STA $81 STA $81
LDX $74 LDX $74
LDA #$00 LDA #$00
JSR L8A45 JSR caCALCX
STY $7E STY $7E
STY $7F STY $7F
STA $82 STA $82
@ -5729,7 +5845,7 @@ L88D7 LDA $6D
TAX TAX
LDA #$00 LDA #$00
ADC #$00 ADC #$00
JSR L8A45 JSR caCALCX
STY $80 STY $80
STA $84 STA $84
L8951 LDA $68 L8951 LDA $68
@ -5742,13 +5858,13 @@ L8959 LDA $67
LDA $68 LDA $68
CMP $6A CMP $6A
BNE L8968 BNE L8968
JMP L8A69 JMP caDRAWPOINTS
L8968 RTS L8968 RTS
L8969 LDA $67 L8969 LDA $67
CMP $69 CMP $69
BCS L8959 BCS L8959
L896F JSR L8A69 L896F JSR caDRAWPOINTS
LDA $6C LDA $6C
BPL L89A7 BPL L89A7
LDA $67 LDA $67
@ -5812,6 +5928,7 @@ L89A7 LDA $67
LDA $70 LDA $70
ADC $6C ADC $6C
STA $6C STA $6C
LDA $69 LDA $69
PHP PHP
DEC $69 DEC $69
@ -5821,18 +5938,20 @@ L89A7 LDA $67
L89EC INC $75 L89EC INC $75
BNE L89F2 BNE L89F2
INC $79 INC $79
L89F2 DEC $84 L89F2 DEC $84
BPL L89FC BPL L89FC
LDA #$06 LDA #caMAXMASK
STA $84 STA $84
DEC $80 DEC $80
L89FC INC $81 L89FC INC $81
LDA $81 LDA $81
CMP #$07 CMP #caMAXMASK+1
BNE L8A0A BNE L8A0A
LDA #$00 LDA #$00
STA $81 STA $81
INC $7D INC $7D
L8A0A DEC $78 L8A0A DEC $78
LDA $78 LDA $78
CMP #$FF CMP #$FF
@ -5843,11 +5962,12 @@ L8A14 INC $67
INC $68 INC $68
L8A1A INC $83 L8A1A INC $83
LDA $83 LDA $83
CMP #$07 CMP #caMAXMASK+1
BNE L8A28 BNE L8A28
LDA #$00 LDA #$00
STA $83 STA $83
INC $7F INC $7F
L8A28 DEC $76 L8A28 DEC $76
LDA $76 LDA $76
CMP #$FF CMP #$FF
@ -5858,35 +5978,49 @@ L8A32 INC $77
INC $7B INC $7B
L8A38 DEC $82 L8A38 DEC $82
BPL L8A42 BPL L8A42
LDA #$06 LDA #caMAXMASK
STA $82 STA $82
DEC $7E DEC $7E
L8A42 JMP L8951 L8A42 JMP L8951
L8A45 STX $6F *-----------------------------------
* CALCULE LA COLONNE (X/A)
*-----------------------------------
* in: X/A
* out: A: bit index
* Y: column
caBI2BY = 2 ; HGR: 7, SHR: 2
caCALCX STX $6F
LDY #$08 LDY #$08
SEC SEC
SBC #$07 SBC #caBI2BY
L8A4C PHP L8A4C PHP
ROL $70 ROL $70
ASL $6F ASL $6F
ROL ROL
PLP PLP
BCC L8A5A BCC L8A5A
SBC #$07 SBC #caBI2BY
JMP L8A5C JMP L8A5C
L8A5A ADC #$07 L8A5A ADC #caBI2BY
L8A5C DEY L8A5C DEY
BNE L8A4C BNE L8A4C
BCS L8A64 BCS L8A64
ADC #$07 ADC #caBI2BY
CLC CLC
L8A64 ROL $70 L8A64 ROL $70
LDY $70 LDY $70
RTS RTS
L8A69 LDY $7C *-----------------------------------
* DRAW ALL POSSIBLE POINTS
*-----------------------------------
caDRAWPOINTS
LDY $7C
BNE L8A8C BNE L8A8C
LDY $78 LDY $78
CPY #$B0 CPY #$B0
@ -5896,12 +6030,12 @@ L8A69 LDY $7C
CPY #hgrWIDTH CPY #hgrWIDTH
BCS L8A81 BCS L8A81
LDX $83 LDX $83
JSR L8AF6 JSR caDRAW
L8A81 LDY $7E L8A81 LDY $7E
CPY #hgrWIDTH CPY #hgrWIDTH
BCS L8A8C BCS L8A8C
LDX $82 LDX $82
JSR L8AF6 JSR caDRAW
L8A8C LDY $79 L8A8C LDY $79
BNE L8AAF BNE L8AAF
LDY $75 LDY $75
@ -5912,12 +6046,12 @@ L8A8C LDY $79
CPY #hgrWIDTH CPY #hgrWIDTH
BCS L8AA4 BCS L8AA4
LDX $83 LDX $83
JSR L8AF6 JSR caDRAW
L8AA4 LDY $7E L8AA4 LDY $7E
CPY #hgrWIDTH CPY #hgrWIDTH
BCS L8AAF BCS L8AAF
LDX $82 LDX $82
JSR L8AF6 JSR caDRAW
L8AAF LDY $7B L8AAF LDY $7B
BNE L8AD2 BNE L8AD2
LDY $77 LDY $77
@ -5928,12 +6062,12 @@ L8AAF LDY $7B
CPY #hgrWIDTH CPY #hgrWIDTH
BCS L8AC7 BCS L8AC7
LDX $84 LDX $84
JSR L8AF6 JSR caDRAW
L8AC7 LDY $7D L8AC7 LDY $7D
CPY #hgrWIDTH CPY #hgrWIDTH
BCS L8AD2 BCS L8AD2
LDX $81 LDX $81
JSR L8AF6 JSR caDRAW
L8AD2 LDY $7A L8AD2 LDY $7A
BNE L8AF5 BNE L8AF5
LDY $76 LDY $76
@ -5944,15 +6078,19 @@ L8AD2 LDY $7A
CPY #hgrWIDTH CPY #hgrWIDTH
BCS L8AEA BCS L8AEA
LDX $84 LDX $84
JSR L8AF6 JSR caDRAW
L8AEA LDY $7D L8AEA LDY $7D
CPY #hgrWIDTH CPY #hgrWIDTH
BCS L8AF5 BCS L8AF5
LDX $81 LDX $81
JMP L8AF6 JMP caDRAW
L8AF5 RTS L8AF5 RTS
L8AF6 LDA $72 *-----------------------------------
* DRAW OR HIDE BYTE
*-----------------------------------
caDRAW LDA caFGMODE
BNE L8B02 BNE L8B02
LDA [ptrHGR1],Y ; hide LDA [ptrHGR1],Y ; hide
AND L8B0C,X AND L8B0C,X
@ -5965,8 +6103,9 @@ L8B02 LDA [ptrHGR2],Y ; show
STA [ptrHGR1],Y STA [ptrHGR1],Y
RTS RTS
L8B0C HEX F0F0F0F08F8F8F * 00 01 00 01 02 03 04 05 06
L8B13 HEX 8F8F8F8FF0F0F0 L8B0C HEX 00,00 ; F0,F0,F0,F0,8F,8F,8F
L8B13 HEX FF,FF ; 8F,8F,8F,8F,F0,F0,F0
*------------------------------- *-------------------------------
* SHOW GAME OVER * SHOW GAME OVER
@ -6094,20 +6233,20 @@ L8D22 DEY
LDA fgINPUT LDA fgINPUT
CMP #chrK CMP #chrK
BEQ L8D3B BEQ L8D3B
LDAl BUTN1 LDAL BUTN1
BMI L8D41 BMI L8D41
LDAl BUTN0 LDAL BUTN0
BMI L8D41 BMI L8D41
L8D3B jsr checkKEY L8D3B jsr checkKEY
* LDAl KBD * LDA KBD
BMI L8D41 BMI L8D41
RTS RTS
L8D41 PLA L8D41 PLA
PLA PLA
SEC SEC
* LDAl KBD * LDA KBD
* STAl KBDSTROBE * STA KBDSTROBE
RTS RTS
L8D4B DB $9D L8D4B DB $9D

View File

@ -125,7 +125,32 @@ hfoePATH = $63
hfoeIDX = $64 ; foe currently being handled hfoeIDX = $64 ; foe currently being handled
theJOYX = $65 theJOYX = $65
theJOYY = $66 theJOYY = $66
caFROM = $67
caY16 = $69
caTO = $6b
caLINE = $6d
caTEMP16 = $6f
sprTABLE = $71 sprTABLE = $71
caFGMODE = $72 ; 0: hide, 1: draw
caCENTERY = $73
caCENTERX = $74
caY1 = $75
caY4 = $76
caY3 = $77
caY2 = $78
caY1high = $79 ; <>0, cannot draw point
caY4high = $7a ; coz we have 192 lines
caY3high = $7b ; not 256+
caY2high = $7c
caX1 = $7d
caX2 = $7e
caX3 = $7f
caX4 = $80 ; x4 index
caX1mask = $81 ; x1 mask index
caX2mask = $82 ; x2 mask index
caX3mask = $83 ; x3 mask index
caX4mask = $84 ; x4 mask index
theX = $85 theX = $85
theY = $86 theY = $86
activePAGE = $87 activePAGE = $87
@ -198,6 +223,35 @@ chrZ = "Z" ; last character
maskUPPER = %1101_1111 maskUPPER = %1101_1111
*-----------------------------------
* 4PLAY
*-----------------------------------
*--- Mask bits
fpUP = %00000001 ; active high
fpDOWN = %00000010 ; active high
fpLEFT = %00000100 ; active high
fpRIGHT = %00001000 ; active high
fpNOTUSED = %00010000
fpTRIGGER3 = %00100000 ; active low
fpTRIGGER2 = %01000000 ; active high
fpTRIGGER1 = %10000000 ; active high
maskBIT0 = %11111110 ; #$FE masks bit 0
maskBIT1 = %11111101 ; #$FD masks bit 1
maskBIT2 = %11111011 ; #$FB masks bit 2
maskBIT3 = %11110111 ; #$F7 masks bit 3
maskBIT4 = %11101111 ; #$EF masks bit 4
maskBIT5 = %11011111 ; #$DF masks bit 5
maskBIT6 = %10111111 ; #$BF masks bit 6
maskBIT7 = %01111111 ; #$7F masks bit 7
fpDFTVALUE = $20 ; dft value for Rev. B
slot4PLAY = $f0 ; 0 if none, slot otherwise
the4PLAY = slot4PLAY+2 ; value read from the 4play
*----------------------------------- *-----------------------------------
* SOFTSWITCHES * SOFTSWITCHES
*----------------------------------- *-----------------------------------

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,396 @@
*
* L'animation affiche 4 points par rapport ˆ un centre
*
circleANIMATION
LDA #88 ; 88
STA caCENTERY
LDA #140 ; 140
STA caCENTERX
LDA fgCIRCLE ; inner or outer animation?
BEQ L88BD ; show the level
*--- hide the level
LDX #170 ; 170
STX caCURRENTY
LDX #0 ; 0
STX caFGMODE
L88B6 JSR caDOIT
DEC caCURRENTY
BNE L88B6
*--- show the level
L88BD LDA #1 ; 1
STA caCURRENTY
STA fgCIRCLE
STA caFGMODE ; 1
JSR printMEN
JSR printLEVEL
L88CB JSR caDOIT
INC caCURRENTY
LDA caCURRENTY
CMP #170
BNE L88CB
RTS
*---
caDOIT LDA caCURRENTY
STA caY16
LDA #$00
STA caY16+1
STA caFROM ; from 0
STA caFROM+1
LDA caY16 ; to Y*2
ASL
STA caTO
LDA caY16+1
ROL
STA caTO+1
LDA #$03 ; corrige de 3
SEC
SBC caTO
STA caTO
LDA #$00
SBC caTO+1
STA caTO+1
*--- On calcule les Y
LDA caCENTERY ; Point 1
SEC ; vers le haut
SBC caCURRENTY
STA caY1
LDA #$00
SBC #$00
STA caY1high
LDA caCENTERY ; Point 2
STA caY4 ; Point 3
STA caY3
LDA #$00
STA caY4high
STA caY3high
LDA caCENTERY ; Point 4
CLC ; vers le bas
ADC caCURRENTY
STA caY2
LDA #$00
ADC #$00
STA caY2high
*--- On calcule les X
LDA caCENTERX ; points ˆ gauche
SEC
SBC caCURRENTY
TAX
LDA #$00
SBC #$00
JSR caCALCX
STY caX1 ; x1 index
STA caX1mask ; x1 mask index
LDX caCENTERX ; points centraux
LDA #$00
JSR caCALCX
STY caX2
STY caX3
STA caX2mask
STA caX3mask
LDA caCENTERX ; points ˆ droite
CLC
ADC caCURRENTY
TAX
LDA #$00
ADC #$00
JSR caCALCX
STY caX4 ; x4 index
STA caX4mask ; x4 mask index
*-- On boucle
L8951 LDA caFROM+1 ; a-t-on tout affichŽ ?
CMP caY16+1
BCC L896F ; non
BEQ L8969
L8959 LDA caFROM
CMP caY16
BNE L8968
LDA caFROM+1
CMP caY16+1
BNE L8968
JMP caDRAWPOINTS ; dernier point et sort
L8968 RTS ; oui
L8969 LDA caFROM
CMP caY16
BCS L8959 ; oui
L896F JSR caDRAWPOINTS ; non
*---
LDA caTO+1 ; en + ou en -
BPL L89A7
LDA caFROM ; *2
ASL
STA caTEMP16
LDA caFROM+1
ROL
STA caTEMP16+1
LDA caTEMP16 ; *4
ASL
STA caTEMP16
LDA caTEMP16+1
ROL
STA caTEMP16+1
LDA caTO ; temp16 += to
CLC
ADC caTEMP16
STA caTEMP16
LDA caTO+1
ADC caTEMP16+1
STA caTEMP16+1
LDA #$06 ; +=6
CLC
ADC caTEMP16
STA caTO
LDA #$00
ADC caTEMP16+1
STA caTO+1
JMP L8A14
L89A7 LDA caFROM
SEC
SBC caY16
STA caTEMP16
LDA caFROM+1
SBC caY16+1
STA caTEMP16+1
LDA caTEMP16
ASL
STA caTEMP16
LDA caTEMP16+1
ROL
STA caTEMP16+1
LDA caTEMP16
ASL
STA caTEMP16
LDA caTEMP16+1
ROL
STA caTEMP16+1
LDA caTEMP16
CLC
ADC #$10
STA caTEMP16
LDA caTEMP16+1
ADC #$00
STA caTEMP16+1
LDA caTEMP16
CLC
ADC caTO
STA caTO
LDA caTEMP16+1
ADC caTO+1
STA caTO+1
LDA caY16
PHP
DEC caY16
PLP
BNE L89EC
DEC caY16+1
L89EC INC caY1
BNE L89F2
INC caY1high
L89F2 DEC caX4mask
BPL L89FC
LDA #$06
STA caX4mask
DEC caX4
L89FC INC caX1mask
LDA caX1mask
CMP #$07
BNE L8A0A
LDA #$00
STA caX1mask
INC caX1
L8A0A DEC caY2
LDA caY2
CMP #$FF
BNE L8A14
DEC caY2high
L8A14 INC caFROM
BNE L8A1A
INC caFROM+1
L8A1A INC caX3mask
LDA caX3mask
CMP #$07
BNE L8A28
LDA #$00
STA caX3mask
INC caX3
L8A28 DEC caY4
LDA caY4
CMP #$FF
BNE L8A32
DEC caY4high
L8A32 INC caY3 ; y++
BNE L8A38
INC caY3high
L8A38 DEC caX2mask ; mask--
BPL L8A42
LDA #$06 ; reset mask
STA caX2mask
DEC caX2 ; x--
L8A42 JMP L8951
*-----------------------------------
* CALCULE LA COLONNE (X/A)
*-----------------------------------
* in: X/A
* out: A: bit index
* Y: column
caBI2BY = 2 ; HGR: 7, SHR: 2
caCALCX STX caTEMP16 ; sauve le bas
LDY #$08 ; huit bits
SEC ; -7
SBC #caBI2BY
L8A4C PHP ; sauve
ROL caTEMP16+1
ASL caTEMP16
ROL
PLP
BCC L8A5A
SBC #caBI2BY
JMP L8A5C
L8A5A ADC #caBI2BY
L8A5C DEY
BNE L8A4C
BCS L8A64
ADC #caBI2BY ; corrige
CLC
L8A64 ROL caTEMP16+1 ; retourne les valeurs
LDY caTEMP16+1 ; la colonne
RTS
*-----------------------------------
* DRAW ALL POSSIBLE POINTS
*-----------------------------------
caDRAWPOINTS
LDY caY2high
BNE L8A8C
LDY caY2
CPY #176
BCS L8A8C
JSR setHGRPOINTERS
LDY caX3
CPY #hgrWIDTH
BCS L8A81
LDX caX3mask
JSR caDRAW
L8A81 LDY caX2
CPY #hgrWIDTH
BCS L8A8C
LDX caX2mask
JSR caDRAW
L8A8C LDY caY1high
BNE L8AAF
LDY caY1
CPY #176
BCS L8AAF
JSR setHGRPOINTERS
LDY caX3
CPY #hgrWIDTH
BCS L8AA4
LDX caX3mask
JSR caDRAW
L8AA4 LDY caX2
CPY #hgrWIDTH
BCS L8AAF
LDX caX2mask
JSR caDRAW
L8AAF LDY caY3high
BNE L8AD2
LDY caY3
CPY #176
BCS L8AD2
JSR setHGRPOINTERS
LDY caX4
CPY #hgrWIDTH
BCS L8AC7
LDX caX4mask
JSR caDRAW
L8AC7 LDY caX1
CPY #hgrWIDTH
BCS L8AD2
LDX caX1mask
JSR caDRAW
L8AD2 LDY caY4high
BNE L8AF5
LDY caY4
CPY #176
BCS L8AF5
JSR setHGRPOINTERS
LDY caX4
CPY #hgrWIDTH
BCS L8AEA
LDX caX4mask
JSR caDRAW
L8AEA LDY caX1
CPY #hgrWIDTH
BCS L8AF5
LDX caX1mask
JMP caDRAW
L8AF5 RTS
*-----------------------------------
* DRAW OR HIDE BYTE
*-----------------------------------
caDRAW LDA caFGMODE
BNE L8B02
LDA [ptrHGR1],Y ; hide
AND L8B0C,X
STA [ptrHGR1],Y
RTS
L8B02 LDA [ptrHGR2],Y ; show
AND L8B13,X
ORA [ptrHGR1],Y
STA [ptrHGR1],Y
RTS
* 00 01 02 03 04 05 06 parce que 7 bits
L8B0C HEX F0,F0,F0,F0,8F,8F,8F
L8B13 HEX 8F,8F,8F,8F,F0,F0,F0

View File

@ -88,11 +88,6 @@ FALSE = 0
tdc tdc
sta myDP sta myDP
lda #diskLEVEL
stal $310
lda #^diskLEVEL
stal $312
*--- Version du systeme *--- Version du systeme
@ -191,6 +186,8 @@ noSOUND _HideMenuBar
dex dex
bpl ]lp bpl ]lp
jsr find4PLAY ; do we have a 4play?
lda #0 lda #0
beq noPATCH beq noPATCH
jsr setLRPALETTE ; set the LR palette jsr setLRPALETTE ; set the LR palette
@ -601,7 +598,7 @@ checkKEY phx
rep #$30 rep #$30
pha pha
PushWord #%00000000_00001010 PushWord #%00000000_00001000
PushLong #taskREC PushLong #taskREC
_GetNextEvent _GetNextEvent
pla pla
@ -615,6 +612,7 @@ checkKEY phx
ply ply
plx plx
lda taskMESSAGE lda taskMESSAGE
stal $300
ora #%1000_0000 ; set bit 7 ora #%1000_0000 ; set bit 7
rts rts
@ -627,7 +625,58 @@ checkNOKEY sep #$30
rts rts
mx %00 mx %00
*----------------------------------------
* 4PLAY
*----------------------------------------
find4PLAY sep #$30
stz slot4PLAY
ldx #$10
]lp ldal $e0c080,x
cmp #fpDFTVALUE
bne next4PLAY
ldal $e0c081,x
cmp #fpDFTVALUE
bne next4PLAY
ldal $e0c082,x
cmp #fpDFTVALUE
bne next4PLAY
ldal $e0c083,x
cmp #fpDFTVALUE
beq found4PLAY
next4PLAY txa
clc
adc #$10
tax
cpx #$80 ; until slot 8
bcc ]lp
rep #$30
rts
mx %11
found4PLAY txa ; set 4PLAY slot
ora #$80 ; 10=>90, 20=>A0, 30=>B0...
sta read4PLAY+1
rep #$30
rts
*----------------------------------------
mx %11
read4PLAY ldal $e0C080 ; direct "fast" read
sta the4PLAY
rts
mx %00
*---------- Data
*---------------------------------------- *----------------------------------------
* DATA * DATA
*---------------------------------------- *----------------------------------------