NESe (pronounced "Nessie") is a NES emulator based on the e6502 emulator, also written in C with a focus on speed and portability for use on embedded platforms, especially ARM.
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

82 lines
1.7KB

  1. SHORT_PLATFORM = linux
  2. ifeq ($(PLATFORM),win64)
  3. CROSS_COMPILE = x86_64-w64-mingw32-
  4. EXTENSION = .exe
  5. SHORT_PLATFORM = win
  6. LDFLAGS += -lSDL2
  7. else ifeq ($(PLATFORM),win32)
  8. CROSS_COMPILE = i686-w64-mingw32-
  9. EXTENSION = .exe
  10. SHORT_PLATFORM = win
  11. LDFLAGS += -lSDL2
  12. else
  13. CFLAGS += $(shell sdl2-config --cflags)
  14. LDFLAGS += $(shell sdl2-config --libs)
  15. endif
  16. ifneq ($(PLATFORM),)
  17. DIR_SUFFIX = -$(PLATFORM)
  18. endif
  19. CC = $(CROSS_COMPILE)gcc
  20. LD = $(CC)
  21. PFLAGS += -g
  22. #PFLAGS += -O3
  23. #PFLAGS += -s
  24. #PFLAGS += -DDEBUG_MAPPER
  25. #PFLAGS += -DDEBUG_RENDER
  26. #PFLAGS += -DDEBUG_PPU -DDEBUG_VRAM -DDEBUG_OAM
  27. #PFLAGS += -DDEBUG_APU
  28. #PFLAGS += -DE6502_DEBUG
  29. PFLAGS += -DE6502_ILLEGAL
  30. CFLAGS += $(PFLAGS) -Wall -Werror -Wshadow -Wunused -I../ -Isrc/
  31. CFLAGS += -Iinc/$(PLATFORM)/SDL2
  32. LDFLAGS += $(PFLAGS)
  33. LDFLAGS += -Llib/$(PLATFORM)
  34. OBJDIR = obj$(DIR_SUFFIX)
  35. SRCDIR = src
  36. BINDIR = bin$(DIR_SUFFIX)
  37. # nese
  38. TARGET_1 = nese$(EXTENSION)
  39. SRC_SRCS_1 = nese.c ines.c
  40. SRC_SRCS_1 += nes.c ppu.c input.c
  41. SRC_SRCS_1 += cart.c mapper.c
  42. SRC_SRCS_1 += apu.c audio.c
  43. SRC_SRCS_1 += file.c save.c
  44. SRC_SRCS_1 += overlay.c menu.c
  45. SRC_SRCS_1 += state.c ini.c
  46. SRC_SRCS_1 += sdl_render.c sdl_input.c sdl_audio.c sdl_timer.c
  47. SRC_SRCS_1 += sdl_overlay.c
  48. PLAT_SRCS_1 = filemap.c
  49. MAPDIR = src/map
  50. MAP_SRCS_1 = nrom.c mmc1.c uxrom.c cnrom.c mmc3.c
  51. EXT_SRCS_1 = e6502/e6502.c e6502/opcodes.c blip-buf/blip_buf.c
  52. SRCS_1 = $(SRC_SRCS_1:%=$(SRCDIR)/%)
  53. SRCS_1 += $(MAP_SRCS_1:%=$(MAPDIR)/%)
  54. SRCS_1 += $(PLAT_SRCS_1:%=src/$(SHORT_PLATFORM)/%)
  55. SRCS_1 += $(EXT_SRCS_1)
  56. OBJS_1 = $(SRCS_1:%.c=$(OBJDIR)/%.o)
  57. all: $(BINDIR)/$(TARGET_1)
  58. clean: ; rm -rf obj*/ bin*/
  59. $(BINDIR)/$(TARGET_1): $(OBJS_1)
  60. @mkdir -p $(@D)
  61. $(LD) $^ $(LDFLAGS) -o $@
  62. $(OBJDIR)/%.o: %.c
  63. @mkdir -p $(@D)
  64. $(CC) $(CFLAGS) -c $< -o $@