diff --git a/misc/n64/default.zip b/misc/n64/default.zip index ca55af9ba..73447f647 100644 Binary files a/misc/n64/default.zip and b/misc/n64/default.zip differ diff --git a/src/Resources.c b/src/Resources.c index 3ab08fd6a..69c974d6b 100644 --- a/src/Resources.c +++ b/src/Resources.c @@ -327,9 +327,12 @@ static void SoundPatcher_Save(const char* name, struct HttpRequest* req) { cc_string path; char pathBuffer[STRING_SIZE]; struct OggState ogg; struct Stream src, dst; - struct VorbisState ctx = { 0 }; + struct VorbisState* ctx; cc_result res; + ctx = (struct VorbisState*)Mem_TryAllocCleared(1, sizeof(struct VorbisState)); + if (!ctx) { Logger_SysWarn(ERR_OUT_OF_MEMORY, "allocating memory"); return; } + Stream_ReadonlyMemory(&src, req->data, req->size); String_InitArray(path, pathBuffer); String_Format1(&path, "audio/%c.wav", name); @@ -338,12 +341,14 @@ static void SoundPatcher_Save(const char* name, struct HttpRequest* req) { if (res) { Logger_SysWarn(res, "creating .wav file"); return; } Ogg_Init(&ogg, &src); - ctx.source = &ogg; - SoundPatcher_WriteWav(&dst, &ctx); + ctx->source = &ogg; + SoundPatcher_WriteWav(&dst, ctx); res = dst.Close(&dst); if (res) Logger_SysWarn(res, "closing .wav file"); - Vorbis_Free(&ctx); + + Vorbis_Free(ctx); + Mem_Free(ctx); } diff --git a/src/Server.c b/src/Server.c index df9bd4fdd..c778a2aa1 100644 --- a/src/Server.c +++ b/src/Server.c @@ -127,13 +127,19 @@ static void SPConnection_BeginConnect(void) { Random_SeedFromCurrentTime(&rnd); World_NewMap(); + #if defined CC_BUILD_LOWMEM World_SetDimensions(64, 64, 64); #else World_SetDimensions(128, 64, 128); #endif +#ifdef CC_BUILD_N64 + Gen_Active = &FlatgrassGen; +#else Gen_Active = &NotchyGen; +#endif + Gen_Seed = Random_Next(&rnd, Int32_MaxValue); Gen_Start(); diff --git a/src/Window_N64.c b/src/Window_N64.c index 05dfa329d..41271343f 100644 --- a/src/Window_N64.c +++ b/src/Window_N64.c @@ -39,7 +39,11 @@ void Window_Init(void) { // change defaults to make more sense for N64 cc_uint8* binds = (cc_uint8*)KeyBind_GamepadDefaults; - binds[KEYBIND_INVENTORY] = CCPAD_Z; + binds[KEYBIND_INVENTORY] = CCPAD_B; + binds[KEYBIND_PLACE_BLOCK] = CCPAD_Z; + binds[KEYBIND_HOTBAR_RIGHT] = CCPAD_L; + binds[KEYBIND_DELETE_BLOCK] = CCPAD_R; + binds[KEYBIND_FORWARD] = CCPAD_CUP; binds[KEYBIND_BACK] = CCPAD_CDOWN; binds[KEYBIND_LEFT] = CCPAD_CLEFT;