The following warnings occurred:
Warning [2] Undefined array key 0 - Line: 1677 - File: showthread.php PHP 8.2.31 (Linux)
File Line Function
/inc/class_error.php 157 errorHandler->error
/showthread.php 1677 errorHandler->error_callback
/showthread.php 916 buildtree




Thread Rating:
  • 1 Vote(s) - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Fucking Awesome Spectrum Engine (FASE)
#7
Thank you. Now it's almost done.

Unfortunately the demo only shows 6 of the 7 enemies, so I have debugged the Z80 code and found a word write to $5c0b. This position is the DEFADD variable of the 48 ROM. So, is there any way of disable writing to internal variables?

Code:
#include <keys.bas> #include "fase.bas" DisableInt DIM datos(31) as UBYTE = { _ $00, $42, $11, 0, _ $08, $60, $60, 2, _ $09, $a8, $48, 3, _ $0a, $22, $02, 1, _ $0b, $d0, $6e, 2, _ $0c, $b6, $34, 3, _ $0d, $32, $32, 1, _ $04, $52, $5e, 0 } DIM i, x, y AS UBYTE FOR i = 0 TO 31 SETSPRITE(i>>2, i&3, datos(i)) NEXT i INIT SETSCREEN(0) WHILE 1 FRAME FOR i = 1 TO 8 IF GETSPRITE(i, 3) & 1 THEN IF GETSPRITE(i, 2) > 0 THEN SETSPRITE(i, 2, GETSPRITE(i, 2)-1) ELSE SETSPRITE(i, 3, GETSPRITE(i, 3) bXOR 1) END IF ELSE IF GETSPRITE(i, 2) < $90 THEN SETSPRITE(i, 2, GETSPRITE(i, 2)+1) ELSE SETSPRITE(i, 3, GETSPRITE(i, 3) bXOR 1) END IF END IF IF GETSPRITE(i, 3) & 2 THEN IF GETSPRITE(i, 1) > $08 THEN SETSPRITE(i, 1, GETSPRITE(i, 1)-1) ELSE SETSPRITE(i, 3, GETSPRITE(i, 3) bXOR 2) END IF ELSE IF GETSPRITE(i, 1) < $e8 THEN SETSPRITE(i, 1, GETSPRITE(i, 1)+1) ELSE SETSPRITE(i, 3, GETSPRITE(i, 3) bXOR 2) END IF END IF NEXT i IF multikeys(KEYP) THEN IF GETSPRITE(0, 1) < $ee THEN SETSPRITE(0, 1, GETSPRITE(0, 1)+1) ELSEIF x < 11 THEN SETSPRITE(0, 1, $02) x= x + 1 SETSCREEN(y*12 + x) END IF END IF IF multikeys(KEYO) THEN IF GETSPRITE(0, 1) > $02 THEN SETSPRITE(0, 1, GETSPRITE(0, 1)-1) ELSEIF x > 0 THEN SETSPRITE(0, 1, $ee) x= x - 1 SETSCREEN(y*12 + x) END IF END IF IF multikeys(KEYA) THEN IF GETSPRITE(0, 2) < $a0 THEN SETSPRITE(0, 2, GETSPRITE(0, 2)+1) ELSEIF y < 1 THEN SETSPRITE(0, 2, $01) y= y + 1 SETSCREEN(y*12 + x) END IF END IF IF multikeys(KEYQ) THEN IF GETSPRITE(0, 2) > $01 THEN SETSPRITE(0, 2, GETSPRITE(0, 2)-1) ELSEIF y > 0 THEN SETSPRITE(0, 2, $a0) y= y - 1 SETSCREEN(y*12 + x) END IF END IF END WHILE
Reply


Messages In This Thread

Forum Jump:


Users browsing this thread: 1 Guest(s)