-
Notifications
You must be signed in to change notification settings - Fork 5
SNES NES DB9
Оригинальная разработка SNES NES DB9 принадлежит Raphaël Assénat
В принципе, ранняя версия устройства является основой платы Pixelkit и вполне знакома по руководству пользователя.
Однако, в неизменном варианте прошивка просто "не лезет" в место, доступное ARCAdaptor.
Поэтому рассмотрим пошаговый процесс оптимизации и уменьшения размера прошивки.
Для начала обновим V-USB стек до последней версии с сайта.
Следующий шаг - адаптируем программу под обновленную версию AVR-GCC.
main.c:
diff nes_snes_db9_usb-1.9/main.c nes_snes_db9_usb-1.9_adapted/main.c
49c49
< PROGMEM int usbDescriptorStringSerialNumber[] = {
---
> const PROGMEM int usbDescriptorStringSerialNumber[] = {
Далее - убираем из программы поддержку SNES Mouse. Устройство очень редкое - так что большого вреда не будет. И уж конечно, "мышку" к компьютеру-планшету лучше подключить обычную.
Makefile:
15c15
< OBJS = $(COMMON_OBJS) snes.o snesmouse.o nes.o db9.o devdesc.o tg16.o segamtap.o
---
> OBJS = $(COMMON_OBJS) snes.o nes.o db9.o devdesc.o tg16.o segamtap.o #snesmouse.o
40c40
main.c
273c273
< //#define NOMOUSE
---
> #define NOMOUSE
Ну и наконец, обновим некоторые опции компилятора и линкера, уменьшающие размер выходного файла.
Makefile:
11c11
< COMPILE = avr-gcc -Wall -Os -Iusbdrv -I. -mmcu=atmega8 -DF_CPU=12000000L #-DDEBUG_LEVEL=1
---
> COMPILE = avr-gcc -Wall -Os -fdata-sections -ffunction-sections -funsigned-bitfields -fpack-struct -fshort-enums -funsigned-char -mcall-prologues -Iusbdrv -I. -mmcu=atmega8 -DF_CPU=12000000L #-DDEBUG_LEVEL=1
40c40
< $(COMPILE) -o main.bin $(OBJS) -Wl,-Map=main.map
---
> $(COMPILE) -o main.bin $(OBJS) -Wl,-Map=main.map -gc-sections,--relax
Теперь список поддерживаемых устройств выглядит немного по-другому:
- Nintendo Entertainment System (NES)
- Famicon controller with built-in microphone
- Super Nintendo Entertainment System (SNES)
- Genesis 3/6 buttons controllers
- 2 Button atari-style controllers (such as Sega master system)
- 1 Button atari-style controllers
- Sega multi-tap MK-1654
Схема подключения доступна в документации по проекту, ну а соответствие контактов можно посмотреть в Руководстве пользователя ARCAdaptor
Скачать адаптированную прошивку и исходные коды
.hex файл как раз помещается в отведенный объем - 6144 байт. Вполне возможно, что есть другие, более действенные методы оптимизации кода.