From 825ef7636207e7ffe32b341308b4008e784f59a9 Mon Sep 17 00:00:00 2001 From: Pecusx Date: Mon, 8 May 2023 15:49:08 +0200 Subject: [PATCH] Next... try ? --- C64/gr_basics.asm | 6 +-- C64/lib/C64_ATARISYS.ASM | 2 +- C64/lib/MACRO.ASM | 4 ++ grafproc.asm | 3 -- scorch.asm | 1 + scorch.xex | Bin 56609 -> 56609 bytes scorchC64.asm | 103 ++++++++++++--------------------------- scorchC64.prg | Bin 35790 -> 39370 bytes 8 files changed, 40 insertions(+), 79 deletions(-) diff --git a/C64/gr_basics.asm b/C64/gr_basics.asm index f359e6c..3cbf842 100644 --- a/C64/gr_basics.asm +++ b/C64/gr_basics.asm @@ -193,12 +193,12 @@ ClearPlot ;-------------------------------------------------- .proc ClearScreen ;-------------------------------------------------- - mwa #display temp + mwa #displayC64 temp ldy #0 @ lda #$ff sta (temp),y inw temp - cpw temp #display+screenheight*screenBytes+1 + cpw temp #displayC64+screenheight*screenBytes+1 bne @- rts .endp @@ -223,7 +223,7 @@ ClearPlot ;-------------------------------------------------- .proc SetMainScreen SwitchVICBank(0) - SetScreenMemory(displayC64) + SetScreenMemory($2000) SetHiresBitmapMode ; Hires mode on rts .endp diff --git a/C64/lib/C64_ATARISYS.ASM b/C64/lib/C64_ATARISYS.ASM index cd96f29..656ae8a 100644 --- a/C64/lib/C64_ATARISYS.ASM +++ b/C64/lib/C64_ATARISYS.ASM @@ -3,7 +3,7 @@ ;* SYSTEM EQUATES * ;**************************************************************************** -FAKEADDR EQU $0100 +FAKEADDR EQU $0002 ; diff --git a/C64/lib/MACRO.ASM b/C64/lib/MACRO.ASM index 470397a..3761e4e 100644 --- a/C64/lib/MACRO.ASM +++ b/C64/lib/MACRO.ASM @@ -280,4 +280,8 @@ upstartEnd ;------------------------------------- .macro wait nop +.endm +;------------------------------------- +.macro halt +?s jmp ?s .endm \ No newline at end of file diff --git a/grafproc.asm b/grafproc.asm index 2bd2fac..59e0da5 100644 --- a/grafproc.asm +++ b/grafproc.asm @@ -1630,9 +1630,6 @@ NotHigher rts .endp -;--------------------------------------------------- - icl 'Atari/gr_basics.asm' -;--------------------------------------------------- ;-------------------------------------------------- .proc TypeChar diff --git a/scorch.asm b/scorch.asm index a139adc..9db07ab 100644 --- a/scorch.asm +++ b/scorch.asm @@ -603,6 +603,7 @@ noingame icl 'Atari/textproc.asm' ;---------------------------------------------- icl 'grafproc.asm' + icl 'Atari/gr_basics.asm' ;---------------------------------------------- icl 'weapons.asm' ;---------------------------------------------- diff --git a/scorch.xex b/scorch.xex index c4a31c8a77e48437defdb347aa2707f590794145..dfb3126ead82f8f852ae1605aebcfe5b367c8e03 100644 GIT binary patch delta 1117 zcmZuxeP~-%6wf;`?n7NR_t8??c-yU(b#Cj5)2V-05E(+tNEy>1Xqr$+(~KBIYu`ub zbaz@@n#5y^ZJ@NP&+P`9HMyOYLLgI@tlK}?7@acQaInrQlghM1r0BgbI++R&ew^Pq zzjMw#obyJf?W5E7iT!?n9{#fbbp^PN#f}!ofKI+MuqIIJ*x5ryb!-l_fM3HzU>l%{ z=L2=Hq~b4uYH5{qHo@g?+~4`QglK0-z=y$dX;cKifGLe%4T7?g>#RBw0y3cU9}d(2 z2we5r^a>Dl&UJ5*ZiwVT7W<>SR(c;*!HTNa6Aoz?4*d=!t1eWt2gv8GEI~7DFXilQ z`ZcrBZ_G5kEWCLA@OBWemL8HYKpS^tRpz@lwpmaI|3i^?Tgfx6^4-7DS_jufD}3XT zn-0(neDLVA5?YQH4r<0ObMi(n^_r*VZPZ7kow*UB9+L~ZP1xg$PU;=Mr@OCx!gpbe7`((s>Xg$HX-7$v&@RN+ZcG9PYcaD%mxn zm~26L|L_TNUc>jI&#l)C(_4hRFYnEVi$60v4U1ZMEm~Hu8FQW@%(V&r_Fw#*2%YoY zrEjrirEn5^q~V`LCBN0OXZ|7TnSi`}Z;39YkTpWFN;#}ZtjdwIIy@QMD2YokB4IJ+ zlCUA}+VZ!S-A}_NdqLT{^5SNNp17M+bof29Sp>cscdyB5*_5-qL!n-_Tr`+7`004F z0%)KUn`BZq?t+|wAK)8RIipy`WHK~HZ0Rudro%!R4~q$*!K*%6ukhT!O@K2hvcWpA zsd#a4Gn{=3mj-u$Tf>H-h7E2lA1mJS{CmgV9BQm|Yu3hX_lpU}*nKq3&XhKa2<=xx z#5tv9k2q;>_N8_7Q*u?q+e0b@bqpoyWTPJ^p68AIeG30J@fkp}i}w#-P$c?CYUP7? zbaV|sLC0fbyCwWMc23HsJ{fy>N!>KN`Ydarv!0pC;&LJ`F=*Do&K}-xz6j#%_)o`E zmUcK#rcUn(t0{wA^!>c(w79uAItn&|0kzS1xEk? delta 1098 zcmZuxVN6q36y}|#PT6L44rv&44}=lXO(lzV?uU?#m_?Al7B*s1OPeN8YP!Y@Uh%cg z=~W4qw!69%NeED%^EOgxFHS?k4~;3#{pk!r7qgKq0c4AYWeU;#*zPILMYrT7U%v00 z^PO`~?tKHJx`9#MaAPw}D|}D$ehDi5G~H68FZRpV6k6mg(Hp(;CO@rq*1&>Fd!27V zp-R7VmO__GA2K5>&%ZMb;brq_7{3jPk*_D1)7;uAJ?B~Dk zD*_O>^3%~3Ao|?!Zon`EQh?3=@|IxqjSk3Um8rdYHa{wU7?}N0JZM%kS3XxgU`deWhQF z!q*+0)q_Q$FP+$dP;+AZphYojBh#J4rd^!NB6b;ha@tL-8W+4t@Sz0*u?;O6GC`x3 zbaY~{MFh1Ghnv^}3kL0?p!UF`AyYmg%Ad8%RQ#WvmD0eV*aqF!ZPQozWV4s{b>CTO z_V!B}o0pCsIVU&z=&|5?ITl5;r6FZc*;1bL?@UKLq8FVC=9XEM8EYD5nuPwx6MaUc z&e)&I_t*2m1x&HoxL#WN#Y=Uyh(VMyV5m*gc2?BNdO$ywRuqmG^qc^@$6h$DHw%^_A!Vz#_xX}&(!wC^00Pa z+@zCZ?fgz`65xD0NMI ; to our routine + STA $0319 ; + LDA #$00 ; stop Timer A + STA $DD0E ; + STA $DD04 ; set Timer A to 0, after starting + STA $DD05 ; NMI will occur immediately + LDA #$81 ; + STA $DD0D ; set Timer A as source for NMI + LDA #$01 ; + STA $DD0E ; start Timer A -> NMI + */ + ; from here on NMI is disabled + jsr MakeDarkScreen - + ; one time zero variables in RAM (non zero page) lda #0 ldy #OneTimeZeroVariablesCount-1 @@ -216,8 +233,6 @@ FirstSTART ; Random INIT InitializeSIDrnd - - ;-------------------------------------------------- ; Main program of the game icl 'game.asm' @@ -231,65 +246,9 @@ FirstSTART ; result: A=keycode ;-------------------------------------------------- jsr WaitForKeyRelease -@ - .IF TARGET = 800 - lda SKSTAT - cmp #$ff - beq checkJoyGetKey ; key not pressed, check Joy - cmp #$f7 ; SHIFT - beq checkJoyGetKey - .ELSE - lda SkStatSimulator - and #%11111110 - bne checkJoyGetKey ; key not pressed, check Joy - .ENDIF - lda kbcode - cmp #@kbcode._none - beq checkJoyGetKey - and #$3f ;CTRL and SHIFT ellimination - cmp #@kbcode._esc ; 28 ; ESC - bne getkeyend - mvy #$80 escFlag - bne getkeyend - -checkJoyGetKey - ;------------JOY------------- - ;happy happy joy joy - ;check for joystick now - lda STICK0 - and #$0f - cmp #$0f - beq notpressedJoyGetKey - tay - lda joyToKeyTable,y - bne getkeyend - -notpressedJoyGetKey - ;fire - lda STRIG0 - beq JoyButton - .IF TARGET = 800 ; Select and Option key only on A800 - bne checkSelectKey -checkSelectKey - lda CONSOL - and #%00000010 ; Select - beq SelectPressed - lda CONSOL - and #%00000100 ; Option - .ENDIF - bne @- -OptionPressed - lda #@kbcode._atari ; Option key - bne getkeyend -SelectPressed - lda #@kbcode._tab ; Select key - bne getkeyend -JoyButton - lda #@kbcode._ret ;Return key -getkeyend - ldy #0 - sty ATRACT ; reset atract mode - mvy #sfx_keyclick sfx_effect + lda #0 + sta escFlag + lda #$ff rts .endp @@ -344,16 +303,11 @@ peopleAreHere ;-------------------------------------------------- MakeDarkScreen ;-------------------------------------------------- - jsr PMoutofScreen ; hide P/M - mva #0 dmactls ; dark screen +; mva #0 dmactls ; dark screen ; and wait one frame :) ;-------------------------------------------------- .proc WaitOneFrame ;-------------------------------------------------- - lda CONSOL - and #%00000101 ; Start + Option - sne:mva #$40 escFlag - and #%00000001 ; START KEY seq:wait ; or waitRTC ? rts .endp @@ -387,6 +341,7 @@ MakeDarkScreen icl 'C64/textproc.asm' ;---------------------------------------------- icl 'grafproc.asm' + icl 'C64/gr_basics.asm' ;---------------------------------------------- icl 'weapons.asm' ;---------------------------------------------- @@ -463,4 +418,8 @@ EndofBFGDLI ;---------------------------------------------- icl 'constants_top.asm' ;---------------------------------------------- +NMI + INC $D020 ; change border colour, indication for a NMI + RTI ; exit interrupt + ; (not acknowledged!) \ No newline at end of file diff --git a/scorchC64.prg b/scorchC64.prg index b647c2f6d5b09cff31c21303f0788b78b2b62803..d49a934a7dc6ca832f3783a12a8fdc3de193dce3 100644 GIT binary patch delta 12547 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