change the way static RAM variable are declared and used
This commit is contained in:
10
build.ts
10
build.ts
@@ -13,7 +13,6 @@ const asmFilePaths = [
|
|||||||
"src/consts/game.asm",
|
"src/consts/game.asm",
|
||||||
"src/consts/keyboard.asm",
|
"src/consts/keyboard.asm",
|
||||||
"src/consts/map.asm",
|
"src/consts/map.asm",
|
||||||
"src/consts/offsets.asm",
|
|
||||||
"src/consts/scene.asm",
|
"src/consts/scene.asm",
|
||||||
"src/consts/screen.asm",
|
"src/consts/screen.asm",
|
||||||
"src/consts/sprites.asm",
|
"src/consts/sprites.asm",
|
||||||
@@ -24,6 +23,7 @@ const asmFilePaths = [
|
|||||||
"src/lib/drawing.asm",
|
"src/lib/drawing.asm",
|
||||||
"src/lib/sprite_rotation.asm",
|
"src/lib/sprite_rotation.asm",
|
||||||
];
|
];
|
||||||
|
const reservedSpacePath = 'src/reserved_space.asm';
|
||||||
|
|
||||||
const mapWidth = 15;
|
const mapWidth = 15;
|
||||||
const spriteWidth = 17;
|
const spriteWidth = 17;
|
||||||
@@ -93,6 +93,14 @@ for (const [label, path] of Object.entries(spritesPath)) {
|
|||||||
|
|
||||||
console.log(asmRawRepresentations.join("\n\n"));
|
console.log(asmRawRepresentations.join("\n\n"));
|
||||||
|
|
||||||
|
console.log(`
|
||||||
|
;
|
||||||
|
; RESERVED RAM SPACE
|
||||||
|
;
|
||||||
|
`);
|
||||||
|
|
||||||
|
console.log(await Deno.readTextFile(reservedSpacePath))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return an ASM representation of the given data
|
* Return an ASM representation of the given data
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,16 +0,0 @@
|
|||||||
;const free_ram_start = 8000
|
|
||||||
|
|
||||||
pub const offsets.screen = 8000 ; screen size: 80x60 = 4800
|
|
||||||
|
|
||||||
pub const offsets.tick_duration_high = 12800
|
|
||||||
pub const offsets.tick_duration_low = 12804
|
|
||||||
pub const offsets.next_tick_high = 12808
|
|
||||||
pub const offsets.next_tick_low = 128012
|
|
||||||
|
|
||||||
|
|
||||||
; State:
|
|
||||||
; U8 x coord
|
|
||||||
; U8 y coord
|
|
||||||
; U8 direction
|
|
||||||
pub const offsets.state_robot = 12816
|
|
||||||
pub const offsets.state_ghost = 12819
|
|
||||||
@@ -77,7 +77,7 @@ get_tile_address:
|
|||||||
cmp r3, sprites.height
|
cmp r3, sprites.height
|
||||||
jne get_tile_address_offset_per_row_loop
|
jne get_tile_address_offset_per_row_loop
|
||||||
|
|
||||||
mov r13, offsets.screen
|
add r13, zr, ptr.screen
|
||||||
|
|
||||||
mov r3, 0
|
mov r3, 0
|
||||||
get_tile_address_margin_top_loop:
|
get_tile_address_margin_top_loop:
|
||||||
|
|||||||
52
src/main.asm
52
src/main.asm
@@ -9,7 +9,8 @@ mov r1, screen.mode_index
|
|||||||
screen r1, screen.mode_value
|
screen r1, screen.mode_value
|
||||||
|
|
||||||
mov r1, screen.offset_index
|
mov r1, screen.offset_index
|
||||||
screen r1, offsets.screen
|
add r2, zr, ptr.screen
|
||||||
|
screen r1, r2
|
||||||
|
|
||||||
mov r1, screen.resolution_index
|
mov r1, screen.resolution_index
|
||||||
screen r1, screen.resolution_value
|
screen r1, screen.resolution_value
|
||||||
@@ -27,7 +28,7 @@ const robot_initial_direction = game.direction_down
|
|||||||
mov r1, robot_initial_x
|
mov r1, robot_initial_x
|
||||||
mov r2, robot_initial_y
|
mov r2, robot_initial_y
|
||||||
mov r5, robot_initial_direction
|
mov r5, robot_initial_direction
|
||||||
mov r6, offsets.state_robot
|
add r6, zr, ptr.state_robot
|
||||||
store_8 [r6], r1
|
store_8 [r6], r1
|
||||||
add r6, r6, 1
|
add r6, r6, 1
|
||||||
store_8 [r6], r2
|
store_8 [r6], r2
|
||||||
@@ -46,7 +47,7 @@ const ghost_initial_direction = game.direction_down
|
|||||||
mov r1, ghost_initial_x
|
mov r1, ghost_initial_x
|
||||||
mov r2, ghost_initial_y
|
mov r2, ghost_initial_y
|
||||||
mov r5, ghost_initial_direction
|
mov r5, ghost_initial_direction
|
||||||
mov r6, offsets.state_ghost
|
add r6, zr, ptr.state_ghost
|
||||||
store_8 [r6], r1
|
store_8 [r6], r1
|
||||||
add r6, r6, 1
|
add r6, r6, 1
|
||||||
store_8 [r6], r2
|
store_8 [r6], r2
|
||||||
@@ -60,17 +61,10 @@ call drawing.draw_sprite_at_map_coord
|
|||||||
;
|
;
|
||||||
; Time initialization
|
; Time initialization
|
||||||
;
|
;
|
||||||
mov r2, game.tick_duration_1
|
add r1, zr, ptr.tick_duration_low
|
||||||
movt r2, r2
|
load_32 r2, [r1]
|
||||||
movb r2, game.tick_duration_0
|
add r1, zr, ptr.tick_duration_high
|
||||||
mov r1, offsets.tick_duration_low
|
load_32 r3, [r1]
|
||||||
store_32 [r1], r2
|
|
||||||
|
|
||||||
mov r3, game.tick_duration_3
|
|
||||||
movt r3, r3
|
|
||||||
movb r3, game.tick_duration_2
|
|
||||||
mov r1, offsets.tick_duration_high
|
|
||||||
store_32 [r1], r3
|
|
||||||
|
|
||||||
time_0 r4
|
time_0 r4
|
||||||
time_1 r5
|
time_1 r5
|
||||||
@@ -81,9 +75,9 @@ jae init_store_next_tick
|
|||||||
add r5, r5, 1 ; overflow
|
add r5, r5, 1 ; overflow
|
||||||
|
|
||||||
init_store_next_tick:
|
init_store_next_tick:
|
||||||
mov r1, offsets.next_tick_low
|
add r1, zr, ptr.next_tick_low
|
||||||
store_32 [r1], r4
|
store_32 [r1], r4
|
||||||
mov r1, offsets.next_tick_high
|
add r1, zr, ptr.next_tick_high
|
||||||
store_32 [r1], r5
|
store_32 [r1], r5
|
||||||
|
|
||||||
game_loop:
|
game_loop:
|
||||||
@@ -125,7 +119,7 @@ game_loop:
|
|||||||
; jmp game_loop_event_handling_end
|
; jmp game_loop_event_handling_end
|
||||||
|
|
||||||
game_loop_event_handling_store_direction:
|
game_loop_event_handling_store_direction:
|
||||||
add r2, zr, offsets.state_robot
|
add r2, zr, ptr.state_robot
|
||||||
add r2, r2, 2
|
add r2, r2, 2
|
||||||
store_8 [r2], r1
|
store_8 [r2], r1
|
||||||
|
|
||||||
@@ -143,9 +137,9 @@ game_loop:
|
|||||||
time_0 r2
|
time_0 r2
|
||||||
time_1 r3
|
time_1 r3
|
||||||
|
|
||||||
mov r1, offsets.next_tick_low
|
add r1, zr, ptr.next_tick_low
|
||||||
load_32 r4, [r1]
|
load_32 r4, [r1]
|
||||||
mov r1, offsets.next_tick_high
|
add r1, zr, ptr.next_tick_high
|
||||||
load_32 r5, [r1]
|
load_32 r5, [r1]
|
||||||
|
|
||||||
cmp r3, r5
|
cmp r3, r5
|
||||||
@@ -155,9 +149,9 @@ game_loop:
|
|||||||
jb game_loop
|
jb game_loop
|
||||||
|
|
||||||
update_next_tick:
|
update_next_tick:
|
||||||
mov r1, offsets.tick_duration_low
|
add r1, zr, ptr.tick_duration_low
|
||||||
load_32 r2, [r1]
|
load_32 r2, [r1]
|
||||||
mov r1, offsets.tick_duration_high
|
add r1, zr, ptr.tick_duration_high
|
||||||
load_32 r3, [r1]
|
load_32 r3, [r1]
|
||||||
add r4, r4, r2
|
add r4, r4, r2
|
||||||
add r5, r5, r3
|
add r5, r5, r3
|
||||||
@@ -166,9 +160,9 @@ game_loop:
|
|||||||
add r5, r5, 1
|
add r5, r5, 1
|
||||||
|
|
||||||
store_next_tick:
|
store_next_tick:
|
||||||
mov r1, offsets.next_tick_low
|
add r1, zr, ptr.next_tick_low
|
||||||
store_32 [r1], r4
|
store_32 [r1], r4
|
||||||
mov r1, offsets.next_tick_high
|
add r1, zr, ptr.next_tick_high
|
||||||
store_32 [r1], r5
|
store_32 [r1], r5
|
||||||
|
|
||||||
|
|
||||||
@@ -184,7 +178,7 @@ game_loop:
|
|||||||
; r7 = new position address
|
; r7 = new position address
|
||||||
; r8 = new position content
|
; r8 = new position content
|
||||||
; r9 = jump address
|
; r9 = jump address
|
||||||
mov r1, offsets.state_robot
|
add r1, zr, ptr.state_robot
|
||||||
load_8 r2, [r1]
|
load_8 r2, [r1]
|
||||||
add r1, r1, 1
|
add r1, r1, 1
|
||||||
load_8 r3, [r1]
|
load_8 r3, [r1]
|
||||||
@@ -229,7 +223,7 @@ game_loop:
|
|||||||
cmp r8, map.tiles.wall
|
cmp r8, map.tiles.wall
|
||||||
jne game_loop_robot_movement_some
|
jne game_loop_robot_movement_some
|
||||||
; hit wall
|
; hit wall
|
||||||
mov r1, offsets.state_robot
|
add r1, zr, ptr.state_robot
|
||||||
add r1, r1, 2
|
add r1, r1, 2
|
||||||
mov r4, game.direction_still
|
mov r4, game.direction_still
|
||||||
store_8 [r1], r4
|
store_8 [r1], r4
|
||||||
@@ -240,7 +234,7 @@ game_loop:
|
|||||||
mov r8, map.tiles.empty
|
mov r8, map.tiles.empty
|
||||||
store_8 [r7], r8
|
store_8 [r7], r8
|
||||||
|
|
||||||
mov r1, offsets.state_robot
|
add r1, zr, ptr.state_robot
|
||||||
store_8 [r1], r5
|
store_8 [r1], r5
|
||||||
add r1, r1, 1
|
add r1, r1, 1
|
||||||
store_8 [r1], r6
|
store_8 [r1], r6
|
||||||
@@ -276,7 +270,7 @@ game_loop:
|
|||||||
; r9: new position address
|
; r9: new position address
|
||||||
; r10: new position content
|
; r10: new position content
|
||||||
; r11: jump address
|
; r11: jump address
|
||||||
mov r1, offsets.state_ghost
|
add r1, zr, ptr.state_ghost
|
||||||
load_8 r2, [r1]
|
load_8 r2, [r1]
|
||||||
add r1, r1, 1
|
add r1, r1, 1
|
||||||
load_8 r3, [r1]
|
load_8 r3, [r1]
|
||||||
@@ -308,7 +302,7 @@ game_loop:
|
|||||||
game_loop_ghost_movement_make_move:
|
game_loop_ghost_movement_make_move:
|
||||||
add r7, r2, r5
|
add r7, r2, r5
|
||||||
add r8, r3, r6
|
add r8, r3, r6
|
||||||
mov r1, offsets.state_ghost
|
add r1, zr, ptr.state_ghost
|
||||||
store_8 [r1], r7
|
store_8 [r1], r7
|
||||||
add r1, r1, 1
|
add r1, r1, 1
|
||||||
store_8 [r1], r8
|
store_8 [r1], r8
|
||||||
@@ -355,7 +349,7 @@ game_loop:
|
|||||||
cmp r10, map.tiles.wall
|
cmp r10, map.tiles.wall
|
||||||
jne game_loop_ghost_movement_end
|
jne game_loop_ghost_movement_end
|
||||||
; increment direction
|
; increment direction
|
||||||
mov r1, offsets.state_ghost
|
add r1, zr, ptr.state_ghost
|
||||||
add r1, r1, 2
|
add r1, r1, 2
|
||||||
load_8 r4, [r1]
|
load_8 r4, [r1]
|
||||||
add r4, r4, 1
|
add r4, r4, 1
|
||||||
|
|||||||
22
src/reserved_space.asm
Normal file
22
src/reserved_space.asm
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
; 0.5 second = 500_000_000 nano second = 0x0000_0000_1DCD_6500
|
||||||
|
pub ptr.tick_duration_high: U32 0x0000_0000
|
||||||
|
pub ptr.tick_duration_low: U32 0x1DCD_6500
|
||||||
|
|
||||||
|
; 1 second = 1_000_000_000 nano second = 0x0000_0000_3B9A_CA00
|
||||||
|
; pub ptr.tick_duration_high: U32 0x0000_0000
|
||||||
|
; pub ptr.tick_duration_low: U32 0x3B9A_CA00
|
||||||
|
|
||||||
|
pub ptr.next_tick_high: U32 0
|
||||||
|
pub ptr.next_tick_low: U32 0
|
||||||
|
|
||||||
|
pub ptr.state_robot:
|
||||||
|
U8 0 ; x coord
|
||||||
|
U8 0 ; y coord
|
||||||
|
U8 0 ; direction
|
||||||
|
|
||||||
|
pub ptr.state_ghost:
|
||||||
|
U8 0 ; x coord
|
||||||
|
U8 0 ; y coord
|
||||||
|
U8 0 ; direction
|
||||||
|
|
||||||
|
pub ptr.screen:
|
||||||
Reference in New Issue
Block a user