shithub: zelda3

Download patch

ref: 02754b2f0937d94bb90f7f742f4f7aa6dad06bd4
parent: 7052926b8e5caf0881bf16555766b9b46ae7678e
author: Jacob Moody <moody@posixcafe.org>
date: Mon Sep 4 21:23:19 EDT 2023

more function cleanup and temporary ifdefs

--- a/src/audio.c
+++ b/src/audio.c
@@ -160,7 +160,9 @@
 static void MsuPlayer_CloseFile(MsuPlayer *mp) {
   if (mp->f)
     fclose(mp->f);
+#ifndef __plan9__
   opus_decoder_destroy(mp->opus);
+#endif
   mp->opus = NULL;
   mp->f = NULL;
   if (mp->state != kMsuState_FinishedPlaying)
@@ -221,6 +223,7 @@
   mp->range_repeat = mp->resume_info.range_repeat;
   mp->buffer_size = mp->buffer_pos = 0;
   mp->preskip = 0;
+#ifndef __plan9__
   if (file_tag == (('Z' << 24) | ('U' << 16) | ('P' << 8) | 'O')) {
     mp->opus = opus_decoder_create(48000, 2, NULL);
     if (!mp->opus)
@@ -235,6 +238,7 @@
   } else {
     goto READ_ERROR;
   }
+#endif
 }
 
 static void MixToBufferWithVolume(int16 *dst, const int16 *src, size_t n, float volume) {
@@ -283,6 +287,7 @@
 
 void MsuPlayer_Mix(MsuPlayer *mp, int16 *audio_buffer, int audio_samples) {
   int r;
+#ifndef __plan9__
 
   do {
     if (mp->buffer_size - mp->buffer_pos == 0) {
@@ -394,6 +399,7 @@
 #endif
     audio_samples -= nr, audio_buffer += nr * 2;
   } while (audio_samples != 0);
+#endif
 }
 
 // Maintain a queue cause the snes and audio callback are not in sync.
--- a/src/config.c
+++ b/src/config.c
@@ -15,6 +15,9 @@
 
 Config g_config;
 
+#ifdef __plan9__
+enum { SDLK_SCANCODE_MASK = (1 << 30) };
+#endif
 #define REMAP_SDL_KEYCODE(key) ((key) & SDLK_SCANCODE_MASK ? kKeyMod_ScanCode : 0) | (key) & (kKeyMod_ScanCode - 1)
 #define _(x) REMAP_SDL_KEYCODE(x)
 #define S(x) REMAP_SDL_KEYCODE(x) | kKeyMod_Shift
--- a/src/main.c
+++ b/src/main.c
@@ -12,6 +12,9 @@
 #include <sys/types.h>
 #include <unistd.h>
 #endif
+#ifdef __plan9__
+#include <SDL2/SDL_mixer.h>
+#endif
 
 #include "snes/ppu.h"
 
@@ -31,7 +34,7 @@
 
 // Forwards
 static bool LoadRom(const char *filename);
-static void LoadLinkGraphics();
+static void LoadLinkGraphics(void);
 static void RenderNumber(uint8 *dst, size_t pitch, int n, bool big);
 static void HandleInput(int keyCode, int modCode, bool pressed);
 static void HandleCommand(uint32 j, bool pressed);
@@ -40,8 +43,8 @@
 static void HandleGamepadAxisInput(int gamepad_id, int axis, int value);
 static void OpenOneGamepad(int i);
 static void HandleVolumeAdjustment(int volume_adjustment);
-static void LoadAssets();
-static void SwitchDirectory();
+static void LoadAssets(void);
+static void SwitchDirectory(void);
 
 enum {
   kDefaultFullscreen = 0,
@@ -144,7 +147,7 @@
   return SDL_HITTEST_NORMAL;
 }
 
-static void DrawPpuFrameWithPerf() {
+static void DrawPpuFrameWithPerf(void) {
   int render_scale = PpuGetCurrentRenderScale(g_zenv.ppu, g_ppu_render_flags);
   uint8 *pixel_buffer = 0;
   int pitch = 0;
@@ -185,6 +188,7 @@
       g_audiobuffer_end = g_audiobuffer + g_frames_per_block * g_audio_channels * sizeof(int16);
     }
     int n = IntMin(len, g_audiobuffer_end - g_audiobuffer_cur);
+#ifndef __plan9__
     if (g_sdl_audio_mixer_volume == SDL_MIX_MAXVOLUME) {
       memcpy(stream, g_audiobuffer_cur, n);
     } else {
@@ -191,6 +195,9 @@
       SDL_memset(stream, 0, n);
       SDL_MixAudioFormat(stream, g_audiobuffer_cur, AUDIO_S16, n, g_sdl_audio_mixer_volume);
     }
+#else
+    memcpy(stream, g_audiobuffer_cur, n);
+#endif
     g_audiobuffer_cur += n;
     stream += n;
     len -= n;
@@ -217,6 +224,7 @@
     printf("Failed to create renderer: %s\n", SDL_GetError());
     return false;
   }
+#ifndef __plan9__
   SDL_RendererInfo renderer_info;
   SDL_GetRendererInfo(renderer, &renderer_info);
   if (kDebugFlag) {
@@ -225,6 +233,7 @@
       printf(" %s", SDL_GetPixelFormatName(renderer_info.texture_formats[i]));
     printf("\n");
   }
+#endif
   g_renderer = renderer;
   if (!g_config.ignore_aspect_ratio)
     SDL_RenderSetLogicalSize(renderer, g_snes_width, g_snes_height);
@@ -241,7 +250,7 @@
   return true;
 }
 
-static void SdlRenderer_Destroy() {
+static void SdlRenderer_Destroy(void) {
   SDL_DestroyTexture(g_texture);
   SDL_DestroyRenderer(g_renderer);
 }
@@ -255,7 +264,7 @@
   }
 }
 
-static void SdlRenderer_EndDraw() {
+static void SdlRenderer_EndDraw(void) {
 
 //  uint64 before = SDL_GetPerformanceCounter();
   SDL_UnlockTexture(g_texture);
@@ -276,7 +285,9 @@
 
 void OpenGLRenderer_Create(struct RendererFuncs *funcs, bool use_opengl_es);
 
+#ifndef __plan9__
 #undef main
+#endif
 int main(int argc, char** argv) {
   argc--, argv++;
   const char *config_file = NULL;
@@ -336,6 +347,9 @@
   int window_width  = custom_size ? g_config.window_width  : g_current_window_scale * g_snes_width;
   int window_height = custom_size ? g_config.window_height : g_current_window_scale * g_snes_height;
 
+#ifdef __plan9__
+  g_renderer_funcs = kSdlRendererFuncs;
+#else
   if (g_config.output_method == kOutputMethod_OpenGL ||
       g_config.output_method == kOutputMethod_OpenGL_ES) {
     g_win_flags |= SDL_WINDOW_OPENGL;
@@ -343,6 +357,7 @@
   } else {
     g_renderer_funcs = kSdlRendererFuncs;
   }
+#endif
 
   SDL_Window* window = SDL_CreateWindow(kWindowTitle, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, window_width, window_height, g_win_flags);
   if(window == NULL) {
@@ -350,7 +365,9 @@
     return 1;
   }
   g_window = window;
+#ifndef __plan9__
   SDL_SetWindowHitTest(window, HitTestCallback, NULL);
+#endif
 
   if (!g_renderer_funcs.Initialize(window))
     return 1;
@@ -403,6 +420,7 @@
   while(running) {
     while(SDL_PollEvent(&event)) {
       switch(event.type) {
+#ifndef __plan9__
       case SDL_CONTROLLERDEVICEADDED:
         OpenOneGamepad(event.cdevice.which);
         break;
@@ -416,6 +434,7 @@
           HandleGamepadInput(b, event.type == SDL_CONTROLLERBUTTONDOWN);
         break;
       }
+#endif
       case SDL_MOUSEWHEEL:
         if (SDL_GetModState() & KMOD_CTRL && event.wheel.y != 0)
           ChangeWindowScale(event.wheel.y > 0 ? 1 : -1);
@@ -584,11 +603,11 @@
   SDL_UnlockMutex(g_audio_mutex);
 }
 
-void ZeldaApuLock() {
+void ZeldaApuLock(void) {
   SDL_LockMutex(g_audio_mutex);
 }
 
-void ZeldaApuUnlock() {
+void ZeldaApuUnlock(void) {
   SDL_UnlockMutex(g_audio_mutex);
 }
 
@@ -656,15 +675,18 @@
 }
 
 static void OpenOneGamepad(int i) {
+#ifndef __plan9__
   if (SDL_IsGameController(i)) {
     SDL_GameController *controller = SDL_GameControllerOpen(i);
     if (!controller)
       fprintf(stderr, "Could not open gamepad %d: %s\n", i, SDL_GetError());
   }
+#endif
 }
 
 static int RemapSdlButton(int button) {
   switch (button) {
+#ifndef __plan9__
   case SDL_CONTROLLER_BUTTON_A: return kGamepadBtn_A;
   case SDL_CONTROLLER_BUTTON_B: return kGamepadBtn_B;
   case SDL_CONTROLLER_BUTTON_X: return kGamepadBtn_X;
@@ -680,6 +702,7 @@
   case SDL_CONTROLLER_BUTTON_DPAD_DOWN: return kGamepadBtn_DpadDown;
   case SDL_CONTROLLER_BUTTON_DPAD_LEFT: return kGamepadBtn_DpadLeft;
   case SDL_CONTROLLER_BUTTON_DPAD_RIGHT: return kGamepadBtn_DpadRight;
+#endif
   default: return -1;
   }
 }
@@ -728,6 +751,7 @@
 }
 
 static void HandleGamepadAxisInput(int gamepad_id, int axis, int value) {
+#ifndef __plan9__
   static int last_gamepad_id, last_x, last_y;
   if (axis == SDL_CONTROLLER_AXIS_LEFTX || axis == SDL_CONTROLLER_AXIS_LEFTY) {
     // ignore other gamepads unless they have a big input
@@ -761,6 +785,7 @@
     if (value < 12000 || value >= 16000)  // hysteresis
       HandleGamepadInput(axis == SDL_CONTROLLER_AXIS_TRIGGERLEFT ? kGamepadBtn_L2 : kGamepadBtn_R2, value >= 12000);
   }
+#endif
 }
 
 static bool LoadRom(const char *filename) {
@@ -793,7 +818,7 @@
   return true;
 }
 
-static void LoadLinkGraphics() {
+static void LoadLinkGraphics(void) {
   if (g_config.link_graphics) {
     fprintf(stderr, "Loading Link Graphics: %s\n", g_config.link_graphics);
     size_t length = 0;
@@ -808,7 +833,7 @@
 const uint8 *g_asset_ptrs[kNumberOfAssets];
 uint32 g_asset_sizes[kNumberOfAssets];
 
-static void LoadAssets() {
+static void LoadAssets(void) {
   size_t length = 0;
   uint8 *data = ReadWholeFile("zelda3_assets.dat", &length);
   if (!data) {
@@ -828,7 +853,10 @@
   static const char kAssetsSig[] = { kAssets_Sig };
 
   if (length < 16 + 32 + 32 + 8 + kNumberOfAssets * 4 ||
+#ifndef __plan9__
+/* FIXME */
       memcmp(data, kAssetsSig, 48) != 0 ||
+#endif
       *(uint32*)(data + 80) != kNumberOfAssets)
     Die("Invalid assets file");
 
@@ -852,7 +880,7 @@
 }
 
 // Go some steps up and find zelda3.ini
-static void SwitchDirectory() {
+static void SwitchDirectory(void) {
   char buf[4096];
   if (!getcwd(buf, sizeof(buf) - 32))
     return;