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 Techinal reference: http://devernay.free.fr/hacks/chip8/C8TECH10.HTM
ROM archive: https://johnearnest.github.io/chip8Archive/ ROM archive: https://johnearnest.github.io/chip8Archive/
Awesome chip8: https://chip-8.github.io/ 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(.{}); const optimize = b.standardOptimizeOption(.{});
var raylib = rl.getModule(b, "raylib-zig"); var raylib = rl.getModule(b, "raylib-zig");
var raylib_math = rl.math.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 //web exports are completely separate
if (target.getOsTag() == .emscripten) { // if (target.getOsTag() == .emscripten) {
const exe_lib = rl.compileForEmscripten(b, "chip8-zig", "src/main.zig", target, optimize); // const exe_lib = rl.compileForEmscripten(b, "chip8-zig", "src/main.zig", target, optimize);
exe_lib.addModule("raylib", raylib); // exe_lib.addModule("raylib", raylib);
exe_lib.addModule("raylib-math", raylib_math); // 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. // const raylib_artifact = rl.getArtifact(b, target, optimize);
exe_lib.linkLibrary(raylib_artifact); // // Note that raylib itself is not actually added to the exe_lib output file, so it also needs to be linked with emscripten.
const link_step = try rl.linkWithEmscripten(b, &[_]*std.Build.Step.Compile{ exe_lib, raylib_artifact }); // exe_lib.linkLibrary(raylib_artifact);
b.getInstallStep().dependOn(&link_step.step); //
const run_step = try rl.emscriptenRunStep(b); // const link_step = try rl.linkWithEmscripten(b, &[_]*std.Build.Step.Compile{ exe_lib, raylib_artifact });
run_step.step.dependOn(&link_step.step); // b.getInstallStep().dependOn(&link_step.step);
const run_option = b.step("run", "Run chip8-zig"); //
run_option.dependOn(&run_step.step); // const run_step = try rl.emscriptenRunStep(b);
return; // 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 }); 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 { pub fn main() anyerror!void {
var buffer: [8192]u8 = undefined; var program_memory = try std.heap.page_allocator.alloc(u8, megabytes(1));
var fba = std.heap.FixedBufferAllocator.init(&buffer); var fba = std.heap.FixedBufferAllocator.init(program_memory);
const allocator = fba.allocator(); const allocator = fba.allocator();
var chip = try ChipContext.init(&allocator); var chip = try ChipContext.init(&allocator);
@ -48,13 +52,14 @@ pub fn main() anyerror!void {
rl.setTargetFPS(60); rl.setTargetFPS(60);
const sample_rate = 44100; 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{ var chip_wave = rl.Wave{
.frameCount = sample_rate, .frameCount = sample_rate,
.sampleRate = sample_rate, .sampleRate = sample_rate,
.sampleSize = 16, .sampleSize = 16,
.channels = 1, .channels = 1,
.data = @ptrCast(&data), .data = @ptrCast(data.ptr),
}; };
gen_sin_wave(&chip_wave, 440); gen_sin_wave(&chip_wave, 440);
var chip_sound = rl.loadSoundFromWave(chip_wave); var chip_sound = rl.loadSoundFromWave(chip_wave);