From 16127040f4ec0832fee1a01df69bb66751d5efcc Mon Sep 17 00:00:00 2001 From: IonutParau Date: Wed, 30 Jul 2025 22:48:27 +0200 Subject: [PATCH] implemented some useful functions --- src/computer.h | 4 ++++ src/emulator.c | 1 + src/neonucleus.h | 4 ++++ src/testLuaArch.c | 4 ++-- src/universe.c | 16 ++++++++++++++++ 5 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/computer.h b/src/computer.h index a8a5600..b5fe3d3 100644 --- a/src/computer.h +++ b/src/computer.h @@ -16,6 +16,7 @@ typedef struct nn_resource_t { typedef struct nn_computer { char state; + nn_bool_t hasBeep; nn_bool_t allocatedError; char *err; void *userdata; @@ -51,6 +52,9 @@ typedef struct nn_computer { nn_size_t rid; nn_resource_t resources[NN_MAX_CONCURRENT_RESOURCES]; nn_deviceInfoList_t *deviceInfo; + double beepFrequency; + double beepDuration; + double beepVolume; } nn_computer; #endif diff --git a/src/emulator.c b/src/emulator.c index 6fa8c56..7b79f35 100644 --- a/src/emulator.c +++ b/src/emulator.c @@ -784,6 +784,7 @@ int main(int argc, char **argv) { .screenCopyPerTick = 8, .screenFillPerTick = 16, .screenSetsPerTick = 32, + .bitbltPerTick = 8, .heatPerPixelChange = 0.00005, .heatPerPixelReset = 0.00001, diff --git a/src/neonucleus.h b/src/neonucleus.h index 8bcad17..0004362 100644 --- a/src/neonucleus.h +++ b/src/neonucleus.h @@ -524,6 +524,10 @@ nn_guard *nn_getComputerLock(nn_computer *computer); int nn_getState(nn_computer *computer); void nn_setState(nn_computer *computer, int state); +void nn_computer_clearBeep(nn_computer *computer); +void nn_computer_setBeep(nn_computer *computer, double frequency, double duration, double volume); +nn_bool_t nn_computer_getBeep(nn_computer *computer, double *frequency, double *duration, double *volume); + void nn_setEnergyInfo(nn_computer *computer, double energy, double capacity); double nn_getEnergy(nn_computer *computer); double nn_getMaxEnergy(nn_computer *computer); diff --git a/src/testLuaArch.c b/src/testLuaArch.c index 420efbc..521781e 100644 --- a/src/testLuaArch.c +++ b/src/testLuaArch.c @@ -212,13 +212,13 @@ static int testLuaArch_computer_beep(lua_State *L) { static int testLuaArch_computer_energy(lua_State *L) { nn_computer *c = testLuaArch_getComputer(L); - lua_pushinteger(L, nn_getEnergy(c)); + lua_pushnumber(L, nn_getEnergy(c)); return 1; } static int testLuaArch_computer_maxEnergy(lua_State *L) { nn_computer *c = testLuaArch_getComputer(L); - lua_pushinteger(L, nn_getEnergy(c)); + lua_pushnumber(L, nn_getEnergy(c)); return 1; } diff --git a/src/universe.c b/src/universe.c index d68be98..2c3aca3 100644 --- a/src/universe.c +++ b/src/universe.c @@ -10,10 +10,26 @@ nn_universe *nn_newUniverse(nn_Context ctx) { return u; } +nn_Context *nn_getContext(nn_universe *universe) { + return &universe->ctx; +} + nn_Alloc *nn_getAllocator(nn_universe *universe) { return &universe->ctx.allocator; } +nn_Clock *nn_getClock(nn_universe *universe) { + return &universe->ctx.clock; +} + +nn_LockManager *nn_getLockManager(nn_universe *universe) { + return &universe->ctx.lockManager; +} + +nn_Rng *nn_getRng(nn_universe *universe) { + return &universe->ctx.rng; +} + void nn_unsafeDeleteUniverse(nn_universe *universe) { for(nn_size_t i = 0; i < universe->udataLen; i++) { nn_deallocStr(&universe->ctx.allocator, universe->udata[i].name);