From a579793bd1436985d8cd7526ffd72b8fb3354d97 Mon Sep 17 00:00:00 2001
From: Robert <robert.trolo@gmail.com>
Date: Fri, 29 Oct 2021 22:33:34 +0200
Subject: [PATCH] Fixed build warnings for gcc

---
 NES Emulator/cpu.h               |  2 +-
 NES Emulator/log.c               |  6 +++---
 NES Emulator/mapper.h            |  5 +++--
 NES Emulator/mappers/mapper000.c | 22 +++++++++++++---------
 NES Emulator/mappers/mapper000.h | 12 ++++++------
 NES Emulator/ppu.c               |  4 ++--
 NES Emulator/ppu.h               | 29 ++++++++++++++++-------------
 NES Emulator/types.h             |  2 +-
 8 files changed, 45 insertions(+), 37 deletions(-)

diff --git a/NES Emulator/cpu.h b/NES Emulator/cpu.h
index 029c3f5..5de0eb9 100644
--- a/NES Emulator/cpu.h	
+++ b/NES Emulator/cpu.h	
@@ -74,7 +74,7 @@ struct CPU
 	} pc;
 
 	char remainingCycles;
-	Qword totalCycles;
+	QWord totalCycles;
 
 	Byte fetchedVal;
 	Word fetchedAddress;
diff --git a/NES Emulator/log.c b/NES Emulator/log.c
index c373f88..97aee3e 100644
--- a/NES Emulator/log.c	
+++ b/NES Emulator/log.c	
@@ -7,7 +7,7 @@
 
 void logBusState(struct Bus* bus)
 {
-	const char buffer[32];
+	char buffer[32];
 
 	Word oldPC = bus->cpu->pc.word - bus->cpu->currentOpcode->length;
 
@@ -29,7 +29,7 @@ void logBusState(struct Bus* bus)
 	case ABX: sprintf(buffer, "$%04X, X -> $%04X",		(instructionBytes[2] << 8) | instructionBytes[1], bus->cpu->fetchedAddress); break;
 	case ABY: sprintf(buffer, "$%04X, Y -> $%04X",		(instructionBytes[2] << 8) | instructionBytes[1], bus->cpu->fetchedAddress); break;
 	case IMM: sprintf(buffer, "#$%02X",					bus->cpu->fetchedVal); break;
-	case IMP: sprintf(buffer, ""); break;
+	case IMP: sprintf(buffer, " "); break;
 	case IND: sprintf(buffer, "($%04X) -> $%04X",		(instructionBytes[2] << 8) | instructionBytes[1], bus->cpu->fetchedAddress); break;
 	case INDX: sprintf(buffer, "($%02X, X) -> $%04X",	instructionBytes[1], bus->cpu->fetchedAddress); break;
 	case INDY: sprintf(buffer, "($%02X), Y -> $%04X",	instructionBytes[1], bus->cpu->fetchedAddress); break;
@@ -48,4 +48,4 @@ void logBusState(struct Bus* bus)
 		bus->cpu->status.raw, 
 		bus->ppu->y, bus->ppu->x,
 		bus->cpu->totalCycles);
-}
\ No newline at end of file
+}
diff --git a/NES Emulator/mapper.h b/NES Emulator/mapper.h
index 6abea0a..a7b1036 100644
--- a/NES Emulator/mapper.h	
+++ b/NES Emulator/mapper.h	
@@ -2,6 +2,7 @@
 #define _MAPPER_H_
 
 #include <stdio.h>
+#include "SDL.h"
 #include "types.h"
 
 struct PPU;
@@ -16,7 +17,7 @@ struct Mapper
 	void(*write_cpu)(void*, Word, Byte);
 	void(*write_ppu)(void*, Word, Byte);
 
-	void(*get_pattern_table_texture)(void*, void*, int);
+	void(*get_pattern_table_texture)(void*, SDL_Texture*, int);
 };
 
 #define MapperReadCPU(mapper, addr) mapper->read_cpu(mapper->mapperStruct, addr)
@@ -28,4 +29,4 @@ struct Mapper
 struct Mapper* createMapper(Byte id, Byte prg_rom_size, Byte chr_rom_size, FILE* fp);
 void destroyMapper(struct Mapper* mapper);
 
-#endif // _MAPPER_H_
\ No newline at end of file
+#endif // _MAPPER_H_
diff --git a/NES Emulator/mappers/mapper000.c b/NES Emulator/mappers/mapper000.c
index 3e7cdd4..6cbc909 100644
--- a/NES Emulator/mappers/mapper000.c	
+++ b/NES Emulator/mappers/mapper000.c	
@@ -42,8 +42,9 @@ void destroyMapper000(struct Mapper000* mapper)
 	free(mapper);
 }
 
-Byte Mapper000_ReadCPU(struct Mapper000* mapper, Word address)
+Byte Mapper000_ReadCPU(void* mapper, Word address)
 {
+	struct Mapper000* sMapper = (struct Mapper000*)mapper;
 	Byte val = 0x00;
 
 	if (address >= 0x6000 && address < 0x8000)
@@ -54,9 +55,9 @@ Byte Mapper000_ReadCPU(struct Mapper000* mapper, Word address)
 	else if (address >= 0x8000)
 	{
 		Word effectiveAddress = address - 0x8000;
-		effectiveAddress %= 0x4000 * (mapper->prg_rom_size == 1);
+		effectiveAddress %= 0x4000 * (sMapper->prg_rom_size == 1);
 
-		val = mapper->prg_rom[effectiveAddress];
+		val = sMapper->prg_rom[effectiveAddress];
 	}
 	else
 	{
@@ -67,8 +68,9 @@ Byte Mapper000_ReadCPU(struct Mapper000* mapper, Word address)
 	return val;
 }
 
-Byte Mapper000_ReadPPU(struct Mapper000* mapper, Word address)
+Byte Mapper000_ReadPPU(void* mapper, Word address)
 {
+	struct Mapper000* sMapper = (struct Mapper000*)mapper;
 	Byte val = 0x00;
 
 	if (address >= 0x2000)
@@ -78,28 +80,30 @@ Byte Mapper000_ReadPPU(struct Mapper000* mapper, Word address)
 	}
 	else 
 	{
-		val = mapper->chr_rom[address];
+		val = sMapper->chr_rom[address];
 	}
 
 	return val;
 }
 
-void Mapper000_WriteCPU(struct Mapper000* mapper, Word address, Byte value)
+void Mapper000_WriteCPU(void* mapper, Word address, Byte value)
 {
 	// nothing
 }
 
 
-void Mapper000_WritePPU(struct Mapper000* mapper, Word address, Byte value)
+void Mapper000_WritePPU(void* mapper, Word address, Byte value)
 {
 	// nothing
 }
 
-void Mapper000_GetPatternTableTexture(struct Mapper000* mapper, SDL_Texture* texture, int index)
+void Mapper000_GetPatternTableTexture(void* mapper, SDL_Texture* texture, int index)
 {
+	struct Mapper000* sMapper = (struct Mapper000*)mapper;
+
 	int pitch;
 	void* pixels;
 	SDL_LockTexture(texture, NULL, &pixels, &pitch);
-	SDL_memcpy(pixels, mapper->chr_rom + 0x1000 * index, 0x1000);
+	SDL_memcpy(pixels, sMapper->chr_rom + 0x1000 * index, 0x1000);
 	SDL_UnlockTexture(texture);
 }
diff --git a/NES Emulator/mappers/mapper000.h b/NES Emulator/mappers/mapper000.h
index 88e2367..413b1e3 100644
--- a/NES Emulator/mappers/mapper000.h	
+++ b/NES Emulator/mappers/mapper000.h	
@@ -17,11 +17,11 @@ struct Mapper000
 struct Mapper000* createMapper000(Byte prg_rom_size, Byte chr_rom_size, FILE* fp);
 void destroyMapper000(struct Mapper000* mapper);
 
-Byte Mapper000_ReadCPU(struct Mapper000* mapper, Word address);
-Byte Mapper000_ReadPPU(struct Mapper000* mapper, Word address);
-void Mapper000_WriteCPU(struct Mapper000* mapper, Word address, Byte value);
-void Mapper000_WritePPU(struct Mapper000* mapper, Word address, Byte value);
+Byte Mapper000_ReadCPU(void* mapper, Word address);
+Byte Mapper000_ReadPPU(void* mapper, Word address);
+void Mapper000_WriteCPU(void* mapper, Word address, Byte value);
+void Mapper000_WritePPU(void* mapper, Word address, Byte value);
 
-void Mapper000_GetPatternTableTexture(struct Mapper000* mapper, SDL_Texture* texture, int index);
+void Mapper000_GetPatternTableTexture(void* mapper, SDL_Texture* texture, int index);
 
-#endif _MAPPER_000_
\ No newline at end of file
+#endif // _MAPPER_000_
diff --git a/NES Emulator/ppu.c b/NES Emulator/ppu.c
index ad14965..606d1bf 100644
--- a/NES Emulator/ppu.c	
+++ b/NES Emulator/ppu.c	
@@ -44,7 +44,7 @@ struct PPU* createPPU(struct Bus* parent)
 
 
 
-	ppu->oam = (Byte*)malloc(0x100);
+	ppu->oam = (union OAMEntry*)malloc(0x100);
 	if (ppu->oam == NULL)
 	{
 		fprintf(stderr, "Failed to allocate memory for PPU OAM.\n");
@@ -353,7 +353,7 @@ SDL_Texture* getRenderedNameTableTexture(struct PPU* ppu, int index)
 	SDL_Texture* target = ppu->renderedNameTableTextures[index];
 	int pitch;
 	struct Pixel* pixels;
-	SDL_LockTexture(target, NULL, &pixels, &pitch);
+	SDL_LockTexture(target, NULL, (void**)&pixels, &pitch);
 
 	Byte patternTable = 0x1000 * ppu->ppuCtrl.bgTile;
 	for (int y = 0; y < 30; y++)
diff --git a/NES Emulator/ppu.h b/NES Emulator/ppu.h
index 52f2945..d0259cd 100644
--- a/NES Emulator/ppu.h	
+++ b/NES Emulator/ppu.h	
@@ -27,6 +27,20 @@ struct FIFO16
 	};
 };
 
+union OAMEntry
+{
+	struct
+	{
+		Byte y;
+		Byte tile;
+		Byte attr;
+		Byte x;
+	};
+
+	DWord raw;
+};
+
+
 struct PPU
 {
 	////////////////////////////////////////
@@ -179,18 +193,7 @@ struct PPU
 	struct FIFO16 loPatternFIFO;
 	struct FIFO16 hiPatternFIFO;
 
-	union
-	{
-		struct
-		{
-			Byte y;
-			Byte tile;
-			Byte attr;
-			Byte x;
-		};
-
-		DWord raw;
-	}* oam;
+	union OAMEntry* oam;
 
 	Word x, y;
 
@@ -211,4 +214,4 @@ SDL_Texture* getNameTableTexture(struct PPU* ppu, int index);
 SDL_Texture* getScreenTexture(struct PPU* ppu);
 SDL_Texture* getRenderedNameTableTexture(struct PPU* ppu, int index);
 
-#endif // _PPU_H_
\ No newline at end of file
+#endif // _PPU_H_
diff --git a/NES Emulator/types.h b/NES Emulator/types.h
index 997377f..805f935 100644
--- a/NES Emulator/types.h	
+++ b/NES Emulator/types.h	
@@ -6,6 +6,6 @@
 typedef uint8_t Byte;
 typedef uint16_t Word;
 typedef uint32_t DWord;
-typedef uint64_t Qword;
+typedef uint64_t QWord;
 
 #endif // _TYPES_H_