Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| dc43e7aa0b | |||
| c7360be7fa | |||
| 356cf3fb94 | |||
| b7bc9956f9 | |||
| 5231f54c27 | |||
| aad1fa45f7 | |||
| 88f10f9f06 | |||
| 6cdb7304c2 | |||
| e6b2d8b086 | |||
| 5588d4c29a | |||
| e3cf5cdfa1 |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
24
build.ts
24
build.ts
@@ -29,7 +29,7 @@ const reservedSpacePath = 'src/reserved_space.asm';
|
|||||||
|
|
||||||
const instructionLength = 4; // in bytes
|
const instructionLength = 4; // in bytes
|
||||||
const mapWidth = 15;
|
const mapWidth = 15;
|
||||||
const spriteWidth = 5;
|
const spriteWidth = 17;
|
||||||
|
|
||||||
const mapMatchingStrings = {
|
const mapMatchingStrings = {
|
||||||
0x00_00_00: '0', // Empty
|
0x00_00_00: '0', // Empty
|
||||||
@@ -38,17 +38,17 @@ const mapMatchingStrings = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const spritesMatchingStrings = {
|
const spritesMatchingStrings = {
|
||||||
0x00_00_00: ' 0', // 0b000_000_00
|
0x00_00_00: '0b000_000_00',
|
||||||
0x00_00_FF: ' 3', // 0b000_000_11
|
0x00_00_FF: '0b000_000_11',
|
||||||
0x00_FF_00: ' 28', // 0b000_111_00
|
0x00_FF_00: '0b000_111_00',
|
||||||
0x99_50_00: ' 68', // 0b010_001_00
|
0x99_50_00: `0b010_001_00`,
|
||||||
0x77_77_77: '110', // 0b011_011_10
|
0x77_77_77: '0b011_011_10',
|
||||||
0xB3_B3_B3: '146', // 0b100_100_10
|
0xB3_B3_B3: '0b100_100_10',
|
||||||
0xFF_00_00: '224', // 0b111_000_00
|
0xFF_00_00: '0b111_000_00',
|
||||||
0xFF_00_FF: '227', // 0b111_000_11
|
0xFF_00_FF: '0b111_000_11',
|
||||||
0xFF_80_00: '240', // 0b111_100_00
|
0xFF_80_00: '0b111_100_00',
|
||||||
0xFF_FF_00: '248', // 0b111_110_00
|
0xFF_FF_00: '0b111_110_00',
|
||||||
0xFF_FF_FF: '255', // 0b111_111_11
|
0xFF_FF_FF: '0b111_111_11',
|
||||||
};
|
};
|
||||||
|
|
||||||
const mapPath = 'assets/map.ppm';
|
const mapPath = 'assets/map.ppm';
|
||||||
|
|||||||
18
readme.md
18
readme.md
@@ -9,19 +9,7 @@ It thus should be able to run on the architecture and ISA the players have built
|
|||||||
The `main` branch contains a minimal implementation of the game.
|
The `main` branch contains a minimal implementation of the game.
|
||||||
|
|
||||||
The following branches contains variations, allowing comparisons of performances, visuals, gameplay, ...
|
The following branches contains variations, allowing comparisons of performances, visuals, gameplay, ...
|
||||||
- `res-0-prerendered`:
|
- `res-2`: 256x192 screen resolution, 17x17 tile
|
||||||
- `80x60` screen resolution
|
|
||||||
- `5x5` tile resolution
|
|
||||||
- initial screen prerendered
|
|
||||||
- no sprite rotation
|
|
||||||
- `res-2`:
|
|
||||||
- `256x192` screen resolution
|
|
||||||
- `17x17` tile resolution
|
|
||||||
- `res-2-prerendered`:
|
|
||||||
- `256x192` screen resolution
|
|
||||||
- `17x17` tile resolution
|
|
||||||
- initial screen prerendered
|
|
||||||
- no sprite rotation
|
|
||||||
|
|
||||||
## Build script
|
## Build script
|
||||||
|
|
||||||
@@ -33,8 +21,8 @@ Usage example:
|
|||||||
```sh
|
```sh
|
||||||
./build.ts > /path/to/the/game/schematics/architecture/Symfony/sandbox/main.asm
|
./build.ts > /path/to/the/game/schematics/architecture/Symfony/sandbox/main.asm
|
||||||
|
|
||||||
# script output can easily be piped to strip it off all comments, leading whitespace, double spaces and empty lines:
|
# script output can easily be piped to strip it off all comments, leading whitespace and empty lines:
|
||||||
./build.ts | sed -r 's/\s*;.*//' | sed -r 's/^\s+//' | sed -r 's/ +/ /' | sed -r '/^\s*$/d' > result.asm
|
./build.ts | sed 's/\s*;.*//' | sed 's/^\s*//' | sed '/^\d*$/d' > result.asm
|
||||||
```
|
```
|
||||||
|
|
||||||
The script is build over Deno's API, so you'll need to have a `deno` binary in your PATH to use it that way.
|
The script is build over Deno's API, so you'll need to have a `deno` binary in your PATH to use it that way.
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
; map size 16x12 (or 15x11 with margins)
|
|
||||||
pub const map.width = 15
|
pub const map.width = 15
|
||||||
pub const map.height = 11
|
pub const map.height = 11
|
||||||
pub const map.size = 165 ; 11*15
|
pub const map.size = 165 ; 11*15
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
; given:
|
; given:
|
||||||
; - 16x12 tiles map
|
; -> 256x192 pixels screen
|
||||||
; - 5x5 pixels tile
|
; -> 15x11 tiles map
|
||||||
|
; => 17x17 pixels tile
|
||||||
|
|
||||||
pub const scene.margin_top = 2
|
pub const scene.margin_top = 2
|
||||||
pub const scene.margin_bottom = 3
|
pub const scene.margin_bottom = 3
|
||||||
pub const scene.margin_left = 2
|
pub const scene.margin_left = 0
|
||||||
pub const scene.margin_right = 3
|
pub const scene.margin_right = 1
|
||||||
@@ -20,7 +20,7 @@ pub const screen.mode_index = 0
|
|||||||
pub const screen.mode_value = 2
|
pub const screen.mode_value = 2
|
||||||
pub const screen.offset_index = 1
|
pub const screen.offset_index = 1
|
||||||
pub const screen.resolution_index = 2
|
pub const screen.resolution_index = 2
|
||||||
pub const screen.resolution_value = 0
|
pub const screen.resolution_value = 2
|
||||||
|
|
||||||
pub const screen.width = 80
|
pub const screen.width = 256
|
||||||
pub const screen.height = 60
|
pub const screen.height = 192
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
pub const sprites.width = 5
|
pub const sprites.width = 17
|
||||||
pub const sprites.height = 5 ; unused as sprite are all square
|
pub const sprites.height = 17 ; unused as sprite are all square
|
||||||
pub const sprites.size = 25 ; height x width
|
pub const sprites.size = 289 ; height x width
|
||||||
|
|
||||||
pub const sprites.rotation_0 = 0
|
pub const sprites.rotation_0 = 0
|
||||||
pub const sprites.rotation_90 = 1
|
pub const sprites.rotation_90 = 1
|
||||||
|
|||||||
@@ -23,4 +23,4 @@ Resolution ID | Tile size (in pixels) | Comment
|
|||||||
-- | -- | --
|
-- | -- | --
|
||||||
`0` | `5x5` | with a reminder of 5 pixels en width and 5 pixels in height.
|
`0` | `5x5` | with a reminder of 5 pixels en width and 5 pixels in height.
|
||||||
`1` | `10x10` | with a reminder of 10w and 10h
|
`1` | `10x10` | with a reminder of 10w and 10h
|
||||||
`2` | `17x17` | no reminder
|
`2` | `17x17` | with a reminder of 1w and 5h
|
||||||
|
|||||||
Reference in New Issue
Block a user