1
0

ditch WASM support for now

This commit is contained in:
Rokas Puzonas 2023-09-02 17:47:59 +03:00
parent cf8fec2353
commit ac6c1e2064
3 changed files with 34 additions and 19 deletions

View File

@ -3,3 +3,5 @@
Techinal reference: http://devernay.free.fr/hacks/chip8/C8TECH10.HTM
ROM archive: https://johnearnest.github.io/chip8Archive/
Awesome chip8: https://chip-8.github.io/
// TODO: WASM support

View File

@ -6,22 +6,30 @@ pub fn build(b: *std.Build) !void {
const optimize = b.standardOptimizeOption(.{});
var raylib = rl.getModule(b, "raylib-zig");
var raylib_math = rl.math.getModule(b, "raylib-zig");
// TODO: Figure out how to build project for WASM. Tried to do it but standard memory allocators
// didn't work.
//web exports are completely separate
if (target.getOsTag() == .emscripten) {
const exe_lib = rl.compileForEmscripten(b, "chip8-zig", "src/main.zig", target, optimize);
exe_lib.addModule("raylib", raylib);
exe_lib.addModule("raylib-math", raylib_math);
const raylib_artifact = rl.getArtifact(b, target, optimize);
// Note that raylib itself is not actually added to the exe_lib output file, so it also needs to be linked with emscripten.
exe_lib.linkLibrary(raylib_artifact);
const link_step = try rl.linkWithEmscripten(b, &[_]*std.Build.Step.Compile{ exe_lib, raylib_artifact });
b.getInstallStep().dependOn(&link_step.step);
const run_step = try rl.emscriptenRunStep(b);
run_step.step.dependOn(&link_step.step);
const run_option = b.step("run", "Run chip8-zig");
run_option.dependOn(&run_step.step);
return;
}
// if (target.getOsTag() == .emscripten) {
// const exe_lib = rl.compileForEmscripten(b, "chip8-zig", "src/main.zig", target, optimize);
// exe_lib.addModule("raylib", raylib);
// exe_lib.addModule("raylib-math", raylib_math);
//
// const raylib_artifact = rl.getArtifact(b, target, optimize);
// // Note that raylib itself is not actually added to the exe_lib output file, so it also needs to be linked with emscripten.
// exe_lib.linkLibrary(raylib_artifact);
//
// const link_step = try rl.linkWithEmscripten(b, &[_]*std.Build.Step.Compile{ exe_lib, raylib_artifact });
// b.getInstallStep().dependOn(&link_step.step);
//
// const run_step = try rl.emscriptenRunStep(b);
// run_step.step.dependOn(&link_step.step);
//
// const run_option = b.step("run", "Run chip8-zig");
// run_option.dependOn(&run_step.step);
// return;
// }
const exe = b.addExecutable(.{ .name = "chip8-zig", .root_source_file = .{ .path = "src/main.zig" }, .optimize = optimize, .target = target });

View File

@ -19,9 +19,13 @@ pub fn gen_sin_wave(wave: *rl.Wave, frequency: f32) void {
}
}
fn megabytes(amount: usize) usize {
return amount * 1024 * 1024;
}
pub fn main() anyerror!void {
var buffer: [8192]u8 = undefined;
var fba = std.heap.FixedBufferAllocator.init(&buffer);
var program_memory = try std.heap.page_allocator.alloc(u8, megabytes(1));
var fba = std.heap.FixedBufferAllocator.init(program_memory);
const allocator = fba.allocator();
var chip = try ChipContext.init(&allocator);
@ -48,13 +52,14 @@ pub fn main() anyerror!void {
rl.setTargetFPS(60);
const sample_rate = 44100;
var data = [1]i16{0} ** sample_rate;
var data = try allocator.alloc(i16, sample_rate);
defer allocator.free(data);
var chip_wave = rl.Wave{
.frameCount = sample_rate,
.sampleRate = sample_rate,
.sampleSize = 16,
.channels = 1,
.data = @ptrCast(&data),
.data = @ptrCast(data.ptr),
};
gen_sin_wave(&chip_wave, 440);
var chip_sound = rl.loadSoundFromWave(chip_wave);