Add gtrom support.
This commit is contained in:
beyondcoast 2019-03-03 15:37:45 -06:00
commit 403ba88f86
15 changed files with 2321 additions and 1854 deletions

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
Archive member included to satisfy reference by file (symbol)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
C:\Users\paul\AppData\Local\Temp\ccA8zOw8.o (__aeabi_unwind_cpp_pr0)
C:\Users\paul\AppData\Local\Temp\cc55YkeK.o (__aeabi_unwind_cpp_pr0)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(libunwind.o)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o) (restore_core_regs)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o)
@ -51,9 +51,9 @@ c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(_exit.o)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-abort.o) (_exit)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(_thumb1_case_uqi.o)
C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o (__gnu_thumb1_case_uqi)
C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o (__gnu_thumb1_case_uqi)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(_thumb1_case_uhi.o)
C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o (__gnu_thumb1_case_uhi)
C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o (__gnu_thumb1_case_uhi)
Allocating common symbols
Common symbol size file
@ -87,6 +87,7 @@ __lock___malloc_recursive_mutex
0x1 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-lock.o)
tdi_base 0x4 source/jtag.o (symbol from plugin)
tdo_base 0x4 source/jtag.o (symbol from plugin)
num_prg_banks 0x1 source/nes.o (symbol from plugin)
cur_addr_hi 0x1 source/gba.o (symbol from plugin)
buff2 0x14 source/buffer.o (symbol from plugin)
cur_bank 0x1 source/nes.o (symbol from plugin)
@ -132,39 +133,39 @@ Discarded input sections
.ARM.exidx 0x00000000 0x8 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o
.ARM.attributes
0x00000000 0x1b c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o
.text 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccwjSKJ8.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccwjSKJ8.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccwjSKJ8.o
.stack 0x00000000 0xc00 C:\Users\paul\AppData\Local\Temp\ccwjSKJ8.o
.heap 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccwjSKJ8.o
.debug_line 0x00000000 0x7c C:\Users\paul\AppData\Local\Temp\ccwjSKJ8.o
.debug_info 0x00000000 0x22 C:\Users\paul\AppData\Local\Temp\ccwjSKJ8.o
.debug_abbrev 0x00000000 0x12 C:\Users\paul\AppData\Local\Temp\ccwjSKJ8.o
.text 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cccsJC0R.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cccsJC0R.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cccsJC0R.o
.stack 0x00000000 0xc00 C:\Users\paul\AppData\Local\Temp\cccsJC0R.o
.heap 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cccsJC0R.o
.debug_line 0x00000000 0x7c C:\Users\paul\AppData\Local\Temp\cccsJC0R.o
.debug_info 0x00000000 0x22 C:\Users\paul\AppData\Local\Temp\cccsJC0R.o
.debug_abbrev 0x00000000 0x12 C:\Users\paul\AppData\Local\Temp\cccsJC0R.o
.debug_aranges
0x00000000 0x28 C:\Users\paul\AppData\Local\Temp\ccwjSKJ8.o
.debug_str 0x00000000 0x68 C:\Users\paul\AppData\Local\Temp\ccwjSKJ8.o
.debug_ranges 0x00000000 0x20 C:\Users\paul\AppData\Local\Temp\ccwjSKJ8.o
0x00000000 0x28 C:\Users\paul\AppData\Local\Temp\cccsJC0R.o
.debug_str 0x00000000 0x68 C:\Users\paul\AppData\Local\Temp\cccsJC0R.o
.debug_ranges 0x00000000 0x20 C:\Users\paul\AppData\Local\Temp\cccsJC0R.o
.ARM.attributes
0x00000000 0x1b C:\Users\paul\AppData\Local\Temp\ccwjSKJ8.o
.text 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
.text 0x00000000 0x4 C:\Users\paul\AppData\Local\Temp\ccA8zOw8.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccA8zOw8.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccA8zOw8.o
.ARM.extab 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccA8zOw8.o
.ARM.exidx 0x00000000 0x8 C:\Users\paul\AppData\Local\Temp\ccA8zOw8.o
.debug_line 0x00000000 0x49 C:\Users\paul\AppData\Local\Temp\ccA8zOw8.o
.debug_info 0x00000000 0x26 C:\Users\paul\AppData\Local\Temp\ccA8zOw8.o
.debug_abbrev 0x00000000 0x14 C:\Users\paul\AppData\Local\Temp\ccA8zOw8.o
0x00000000 0x1b C:\Users\paul\AppData\Local\Temp\cccsJC0R.o
.text 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text 0x00000000 0x4 C:\Users\paul\AppData\Local\Temp\cc55YkeK.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc55YkeK.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc55YkeK.o
.ARM.extab 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc55YkeK.o
.ARM.exidx 0x00000000 0x8 C:\Users\paul\AppData\Local\Temp\cc55YkeK.o
.debug_line 0x00000000 0x49 C:\Users\paul\AppData\Local\Temp\cc55YkeK.o
.debug_info 0x00000000 0x26 C:\Users\paul\AppData\Local\Temp\cc55YkeK.o
.debug_abbrev 0x00000000 0x14 C:\Users\paul\AppData\Local\Temp\cc55YkeK.o
.debug_aranges
0x00000000 0x20 C:\Users\paul\AppData\Local\Temp\ccA8zOw8.o
.debug_str 0x00000000 0x65 C:\Users\paul\AppData\Local\Temp\ccA8zOw8.o
0x00000000 0x20 C:\Users\paul\AppData\Local\Temp\cc55YkeK.o
.debug_str 0x00000000 0x65 C:\Users\paul\AppData\Local\Temp\cc55YkeK.o
.ARM.attributes
0x00000000 0x21 C:\Users\paul\AppData\Local\Temp\ccA8zOw8.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccobfpka.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccobfpka.o
.ARM.extab 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccobfpka.o
0x00000000 0x21 C:\Users\paul\AppData\Local\Temp\cc55YkeK.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccUfmgJG.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccUfmgJG.o
.ARM.extab 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccUfmgJG.o
.data 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
.bss 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
.debug_frame 0x00000000 0x2b4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
@ -427,10 +428,10 @@ Linker script and memory map
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crtbegin.o
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o
LOAD C:\Users\paul\AppData\Local\Temp\ccwjSKJ8.o
LOAD C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
LOAD C:\Users\paul\AppData\Local\Temp\ccA8zOw8.o
LOAD C:\Users\paul\AppData\Local\Temp\ccobfpka.o
LOAD C:\Users\paul\AppData\Local\Temp\cccsJC0R.o
LOAD C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
LOAD C:\Users\paul\AppData\Local\Temp\cc55YkeK.o
LOAD C:\Users\paul\AppData\Local\Temp\ccUfmgJG.o
START GROUP
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a
@ -444,17 +445,17 @@ END GROUP
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crtend.o
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crtn.o
.text 0x08000000 0x5570
.text 0x08000000 0x5610
*(.isr_vector)
.isr_vector 0x08000000 0xc0 C:\Users\paul\AppData\Local\Temp\ccwjSKJ8.o
.isr_vector 0x08000000 0xc0 C:\Users\paul\AppData\Local\Temp\cccsJC0R.o
0x08000000 __isr_vector
*(.usb_driver)
.usb_driver 0x080000c0 0x3bc C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
.usb_driver 0x080000c0 0x3bc C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
0x08000198 USB_IRQHandler
*(.usb_desc)
.usb_desc 0x0800047c 0xb8 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
.usb_desc 0x0800047c 0xb8 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
*(.hardfault)
.hardfault 0x08000534 0x2 C:\Users\paul\AppData\Local\Temp\ccwjSKJ8.o
.hardfault 0x08000534 0x2 C:\Users\paul\AppData\Local\Temp\cccsJC0R.o
0x08000534 TIM1_CC_IRQHandler
0x08000534 TSC_IRQHandler
0x08000534 ADC1_COMP_IRQHandler
@ -493,7 +494,7 @@ LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eab
0x08000534 USART1_IRQHandler
0x08000534 TIM1_BRK_UP_TRG_COM_IRQHandler
*fill* 0x08000536 0x2 ff
.hardfault 0x08000538 0xc C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
.hardfault 0x08000538 0xc C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
0x08000538 HardFault_Handler
*_thumb1_case_uqi.o()
.text 0x08000544 0x14 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(_thumb1_case_uqi.o)
@ -509,11 +510,11 @@ LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eab
0x0800058c 0x1e c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(_thumb1_case_uhi.o)
*(.fw_update)
*fill* 0x080005aa 0x2 ff
.fw_update 0x080005ac 0x150 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
.fw_update 0x080005ac 0x150 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
0x00000770 . = 0x770
*fill* 0x080006fc 0x74 ff
*(.fw_up_main)
.fw_up_main 0x08000770 0x70 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
.fw_up_main 0x08000770 0x70 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
0x00000800 . = 0x800
*fill* 0x080007e0 0x20 ff
*(.appver)
@ -521,177 +522,180 @@ LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eab
*fill* 0x08000800 0x4 ff
*(.reset_handler)
.reset_handler
0x08000804 0x3c C:\Users\paul\AppData\Local\Temp\ccwjSKJ8.o
0x08000804 0x3c C:\Users\paul\AppData\Local\Temp\cccsJC0R.o
0x08000804 Reset_Handler
*(.usbFuncWrite)
.usbFuncWrite 0x08000840 0x44 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
.usbFuncWrite 0x08000840 0x44 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
*(.usbFuncSetup)
.usbFuncSetup 0x08000884 0x1c58 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
.usbFuncSetup 0x08000884 0x1c7c C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
*(.text*)
.text.snes_page_rd_poll.constprop.27
0x080024dc 0x7c C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x08002500 0x7c C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.nes_cpu_page_rd_poll.constprop.26
0x08002558 0x6c C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x0800257c 0x6c C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.nes_ppu_page_rd_poll.constprop.23
0x080025c4 0x68 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x080025e8 0x68 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.append_pairity
0x0800262c 0x1e C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x08002650 0x1e C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.delay_us
0x0800264a 0x14 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
*fill* 0x0800265e 0x2 ff
.text.lfsr_32 0x08002660 0x30 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
.text.snes_wr 0x08002690 0x60 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
.text.snes_rd 0x080026f0 0x48 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x0800266e 0x14 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
*fill* 0x08002682 0x2 ff
.text.lfsr_32 0x08002684 0x30 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.snes_wr 0x080026b4 0x60 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.snes_rd 0x08002714 0x48 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.write_page_snes.constprop.34
0x08002738 0x194 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x0800275c 0x194 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.snes_3v_flash_wr
0x080028cc 0x50 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x080028f0 0x50 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.snes_5v_flash_wr
0x0800291c 0x50 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x08002940 0x50 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.genesis_page_rd
0x0800296c 0xa4 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x08002990 0xa4 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.nes_dualport_wr
0x08002a10 0x50 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x08002a34 0x50 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.nes_dualport_rd
0x08002a60 0x38 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x08002a84 0x38 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.nes_ppu_wr
0x08002a98 0x50 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x08002abc 0x50 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.nes_ppu_rd
0x08002ae8 0x38 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x08002b0c 0x38 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.mmc3_chrrom_flash_wr
0x08002b20 0x44 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x08002b44 0x44 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.nrom_chrrom_flash_wr
0x08002b64 0x44 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x08002b88 0x44 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.nes_cpu_wr
0x08002ba8 0x6c C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x08002bcc 0x6c C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.cdream_chrrom_flash_wr
0x08002c14 0x84 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x08002c38 0x8c C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.mmc4_chrrom_flash_wr
0x08002c98 0x74 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x08002cc4 0x74 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.cnrom_chrrom_flash_wr
0x08002d0c 0x7c C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x08002d38 0x7c C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.nes_cpu_rd
0x08002d88 0x40 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x08002db4 0x40 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.gtrom_prgrom_flash_wr
0x08002df4 0x44 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.map30_prgrom_flash_wr
0x08002dc8 0x74 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x08002e38 0x74 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.mmc4_prgrom_sop_flash_wr
0x08002e3c 0x54 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x08002eac 0x54 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.mmc3_prgrom_flash_wr
0x08002e90 0x50 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x08002f00 0x50 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.disc_push_exp0_prgrom_wr
0x08002ee0 0x48 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x08002f50 0x48 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.discrete_exp0_prgrom_wr
0x08002f28 0x58 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x08002f98 0x58 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.unrom_prgrom_flash_wr
0x08002f80 0x64 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x08002ff0 0x64 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.nrom_prgrom_flash_wr
0x08002fe4 0x44 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x08003054 0x44 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.n64_latch_addr
0x08003028 0x50 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x08003098 0x50 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.pbje_scan
0x08003078 0x10c C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x080030e8 0x10c C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.pbje_state_change
0x08003184 0x88 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x080031f4 0x88 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.jtag_init_pbje
0x0800320c 0xe0 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x0800327c 0xe0 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.jtag_run_pbje.part.0
0x080032ec 0xb8 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x0800335c 0xb8 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.io_reset
0x080033a4 0x174 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
.text.gba_rd 0x08003518 0x4c C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x08003414 0x174 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.gba_rd 0x08003588 0x4c C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.write_page_verify
0x08003564 0x5c C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x080035d4 0x5c C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.write_page
0x080035c0 0x34 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x08003630 0x34 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.get_next_buff
0x080035f4 0x54 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x08003664 0x54 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.mmc1_wr.constprop.12
0x08003648 0x22 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
*fill* 0x0800366a 0x2 ff
0x080036b8 0x22 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
*fill* 0x080036da 0x2 ff
.text.mmc1_chrrom_flash_wr
0x0800366c 0x60 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x080036dc 0x60 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.mmc1_prgrom_flash_wr
0x080036cc 0x50 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x0800373c 0x50 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.swim_wotf
0x0800371c 0xb4 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x0800378c 0xb4 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.swim_rotf
0x080037d0 0xac C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x08003840 0xac C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.text.startup.main
0x0800387c 0xb54 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x0800387c main
.text 0x080043d0 0x154 C:\Users\paul\AppData\Local\Temp\ccobfpka.o
0x080043d0 swim_xfr
.text 0x08004524 0xa08 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
0x080047e0 _Unwind_GetCFA
0x080047e4 __gnu_Unwind_RaiseException
0x08004838 __gnu_Unwind_ForcedUnwind
0x0800484c __gnu_Unwind_Resume
0x08004894 __gnu_Unwind_Resume_or_Rethrow
0x080048b0 _Unwind_Complete
0x080048b4 _Unwind_DeleteException
0x080048c4 _Unwind_VRS_Get
0x0800490c _Unwind_VRS_Set
0x08004954 __gnu_Unwind_Backtrace
0x08004ca4 __aeabi_unwind_cpp_pr0
0x08004cb0 __aeabi_unwind_cpp_pr1
0x08004cbc __aeabi_unwind_cpp_pr2
0x08004cc8 _Unwind_VRS_Pop
.text 0x08004f2c 0x144 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(libunwind.o)
0x08004f2c __restore_core_regs
0x08004f2c restore_core_regs
0x08004f58 __gnu_Unwind_Restore_VFP
0x08004f5c __gnu_Unwind_Save_VFP
0x08004f60 __gnu_Unwind_Restore_VFP_D
0x08004f64 __gnu_Unwind_Save_VFP_D
0x08004f68 __gnu_Unwind_Restore_VFP_D_16_to_31
0x08004f6c __gnu_Unwind_Save_VFP_D_16_to_31
0x08004f70 __gnu_Unwind_Restore_WMMXD
0x08004f74 __gnu_Unwind_Save_WMMXD
0x08004f78 __gnu_Unwind_Restore_WMMXC
0x08004f7c __gnu_Unwind_Save_WMMXC
0x08004f80 ___Unwind_RaiseException
0x08004f80 _Unwind_RaiseException
0x08004fb0 _Unwind_Resume
0x08004fb0 ___Unwind_Resume
0x08004fe0 _Unwind_Resume_or_Rethrow
0x08004fe0 ___Unwind_Resume_or_Rethrow
0x08005010 _Unwind_ForcedUnwind
0x08005010 ___Unwind_ForcedUnwind
0x08005040 ___Unwind_Backtrace
0x08005040 _Unwind_Backtrace
.text 0x08005070 0x39c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o)
0x080050c4 __gnu_unwind_execute
0x080053b4 __gnu_unwind_frame
0x080053dc _Unwind_GetRegionStart
0x080053e8 _Unwind_GetLanguageSpecificData
0x080053fc _Unwind_GetDataRelBase
0x08005404 _Unwind_GetTextRelBase
.text.abort 0x0800540c 0x10 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-abort.o)
0x0800540c abort
.text.memcpy 0x0800541c 0x88 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-memcpy-stub.o)
0x0800541c memcpy
0x080038ec 0xb78 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
0x080038ec main
*fill* 0x08004464 0xc ff
.text 0x08004470 0x154 C:\Users\paul\AppData\Local\Temp\ccUfmgJG.o
0x08004470 swim_xfr
.text 0x080045c4 0xa08 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
0x08004880 _Unwind_GetCFA
0x08004884 __gnu_Unwind_RaiseException
0x080048d8 __gnu_Unwind_ForcedUnwind
0x080048ec __gnu_Unwind_Resume
0x08004934 __gnu_Unwind_Resume_or_Rethrow
0x08004950 _Unwind_Complete
0x08004954 _Unwind_DeleteException
0x08004964 _Unwind_VRS_Get
0x080049ac _Unwind_VRS_Set
0x080049f4 __gnu_Unwind_Backtrace
0x08004d44 __aeabi_unwind_cpp_pr0
0x08004d50 __aeabi_unwind_cpp_pr1
0x08004d5c __aeabi_unwind_cpp_pr2
0x08004d68 _Unwind_VRS_Pop
.text 0x08004fcc 0x144 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(libunwind.o)
0x08004fcc __restore_core_regs
0x08004fcc restore_core_regs
0x08004ff8 __gnu_Unwind_Restore_VFP
0x08004ffc __gnu_Unwind_Save_VFP
0x08005000 __gnu_Unwind_Restore_VFP_D
0x08005004 __gnu_Unwind_Save_VFP_D
0x08005008 __gnu_Unwind_Restore_VFP_D_16_to_31
0x0800500c __gnu_Unwind_Save_VFP_D_16_to_31
0x08005010 __gnu_Unwind_Restore_WMMXD
0x08005014 __gnu_Unwind_Save_WMMXD
0x08005018 __gnu_Unwind_Restore_WMMXC
0x0800501c __gnu_Unwind_Save_WMMXC
0x08005020 ___Unwind_RaiseException
0x08005020 _Unwind_RaiseException
0x08005050 _Unwind_Resume
0x08005050 ___Unwind_Resume
0x08005080 _Unwind_Resume_or_Rethrow
0x08005080 ___Unwind_Resume_or_Rethrow
0x080050b0 _Unwind_ForcedUnwind
0x080050b0 ___Unwind_ForcedUnwind
0x080050e0 ___Unwind_Backtrace
0x080050e0 _Unwind_Backtrace
.text 0x08005110 0x39c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o)
0x08005164 __gnu_unwind_execute
0x08005454 __gnu_unwind_frame
0x0800547c _Unwind_GetRegionStart
0x08005488 _Unwind_GetLanguageSpecificData
0x0800549c _Unwind_GetDataRelBase
0x080054a4 _Unwind_GetTextRelBase
.text.abort 0x080054ac 0x10 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-abort.o)
0x080054ac abort
.text.memcpy 0x080054bc 0x88 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-memcpy-stub.o)
0x080054bc memcpy
.text._raise_r
0x080054a4 0x5c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o)
0x080054a4 _raise_r
.text.raise 0x08005500 0x14 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o)
0x08005500 raise
.text._kill_r 0x08005514 0x28 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o)
0x08005514 _kill_r
0x08005544 0x5c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o)
0x08005544 _raise_r
.text.raise 0x080055a0 0x14 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o)
0x080055a0 raise
.text._kill_r 0x080055b4 0x28 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o)
0x080055b4 _kill_r
.text._getpid_r
0x0800553c 0x8 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o)
0x0800553c _getpid_r
.text._getpid 0x08005544 0x10 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o)
0x08005544 _getpid
.text._kill 0x08005554 0x10 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(kill.o)
0x08005554 _kill
.text._exit 0x08005564 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(_exit.o)
0x08005564 _exit
0x080055dc 0x8 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o)
0x080055dc _getpid_r
.text._getpid 0x080055e4 0x10 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o)
0x080055e4 _getpid
.text._kill 0x080055f4 0x10 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(kill.o)
0x080055f4 _kill
.text._exit 0x08005604 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(_exit.o)
0x08005604 _exit
*(.init)
.init 0x08005568 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o
0x08005568 _init
.init 0x08005608 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o
0x08005608 _init
*(.fini)
.fini 0x0800556c 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o
0x0800556c _fini
.fini 0x0800560c 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o
0x0800560c _fini
*crtbegin.o(.ctors)
*crtbegin?.o(.ctors)
*(EXCLUDE_FILE(*crtend.o *crtend?.o) .ctors)
@ -705,42 +709,42 @@ LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eab
*(.rodata*)
*(.eh_frame*)
.glue_7 0x08005570 0x0
.glue_7 0x08005570 0x0 linker stubs
.glue_7 0x08005610 0x0
.glue_7 0x08005610 0x0 linker stubs
.glue_7t 0x08005570 0x0
.glue_7t 0x08005570 0x0 linker stubs
.glue_7t 0x08005610 0x0
.glue_7t 0x08005610 0x0 linker stubs
.vfp11_veneer 0x08005570 0x0
.vfp11_veneer 0x08005570 0x0 linker stubs
.vfp11_veneer 0x08005610 0x0
.vfp11_veneer 0x08005610 0x0 linker stubs
.v4_bx 0x08005570 0x0
.v4_bx 0x08005570 0x0 linker stubs
.v4_bx 0x08005610 0x0
.v4_bx 0x08005610 0x0 linker stubs
.iplt 0x08005570 0x0
.iplt 0x08005570 0x0 C:\Users\paul\AppData\Local\Temp\ccwjSKJ8.o
.iplt 0x08005610 0x0
.iplt 0x08005610 0x0 C:\Users\paul\AppData\Local\Temp\cccsJC0R.o
.ARM.extab 0x08005570 0x30
.ARM.extab 0x08005610 0x30
*(.ARM.extab* .gnu.linkonce.armextab.*)
.ARM.extab 0x08005570 0x24 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
.ARM.extab 0x08005594 0xc c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o)
0x080055a0 __exidx_start = .
.ARM.extab 0x08005610 0x24 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
.ARM.extab 0x08005634 0xc c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o)
0x08005640 __exidx_start = .
.ARM.exidx 0x080055a0 0xd0
.ARM.exidx 0x08005640 0xd0
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
.ARM.exidx 0x080055a0 0x8 C:\Users\paul\AppData\Local\Temp\ccobfpka.o
.ARM.exidx 0x08005640 0x8 C:\Users\paul\AppData\Local\Temp\ccUfmgJG.o
0x10 (size before relaxing)
.ARM.exidx 0x080055a8 0x98 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
.ARM.exidx 0x08005648 0x98 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
0xd8 (size before relaxing)
.ARM.exidx 0x08005640 0x30 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o)
.ARM.exidx 0x080056e0 0x30 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o)
0x48 (size before relaxing)
0x08005670 __exidx_end = .
0x08005670 __etext = ALIGN (0x4)
0x08005710 __exidx_end = .
0x08005710 __etext = ALIGN (0x4)
.rel.dyn 0x08005670 0x0
.rel.iplt 0x08005670 0x0 C:\Users\paul\AppData\Local\Temp\ccwjSKJ8.o
.rel.dyn 0x08005710 0x0
.rel.iplt 0x08005710 0x0 C:\Users\paul\AppData\Local\Temp\cccsJC0R.o
.data 0x20000000 0x430 load address 0x08005670
.data 0x20000000 0x430 load address 0x08005710
0x20000000 __data_start__ = .
*(vtable)
*(.data*)
@ -768,76 +772,77 @@ LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eab
*(.fastrun)
0x20000430 __data_end__ = .
.igot.plt 0x20000430 0x0 load address 0x08005aa0
.igot.plt 0x20000430 0x0 C:\Users\paul\AppData\Local\Temp\ccwjSKJ8.o
.igot.plt 0x20000430 0x0 load address 0x08005b40
.igot.plt 0x20000430 0x0 C:\Users\paul\AppData\Local\Temp\cccsJC0R.o
.bss 0x20000430 0x308 load address 0x08005aa0
.bss 0x20000430 0x308 load address 0x08005b40
0x20000430 . = ALIGN (0x4)
0x20000430 __bss_start__ = .
*(.bss*)
.bss.addr_ptr 0x20000430 0x4 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
.bss.addrh 0x20000434 0x2 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
.bss.addr_ptr 0x20000430 0x4 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.bss.addrh 0x20000434 0x2 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.bss.bank_table
0x20000436 0x2 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
.bss.buff0 0x20000438 0x14 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
.bss.buff1 0x2000044c 0x14 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
.bss.buff2 0x20000460 0x14 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
.bss.buff3 0x20000474 0x14 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x20000436 0x2 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.bss.buff0 0x20000438 0x14 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.bss.buff1 0x2000044c 0x14 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.bss.buff2 0x20000460 0x14 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.bss.buff3 0x20000474 0x14 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.bss.cur_addr_hi
0x20000488 0x1 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x20000488 0x1 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
*fill* 0x20000489 0x1
.bss.cur_addr_lo
0x2000048a 0x2 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
.bss.cur_bank 0x2000048c 0x1 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x2000048a 0x2 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.bss.cur_bank 0x2000048c 0x1 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
*fill* 0x2000048d 0x3
.bss.cur_buff 0x20000490 0x4 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
.bss.cur_buff 0x20000490 0x4 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.bss.cur_usb_load_buff
0x20000494 0x4 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x20000494 0x4 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.bss.incoming_bytes_remain
0x20000498 0x1 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x20000498 0x1 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
*fill* 0x20000499 0x3
.bss.lfsr 0x2000049c 0x4 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
.bss.n64_bank 0x200004a0 0x2 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
.bss.num_buff.5101
0x200004a2 0x1 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
*fill* 0x200004a3 0x1
.bss.lfsr 0x2000049c 0x4 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.bss.n64_bank 0x200004a0 0x2 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.bss.num_buff.5104
0x200004a2 0x1 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.bss.num_prg_banks
0x200004a3 0x1 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.bss.oper_info_struct
0x200004a4 0x20 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x200004a4 0x20 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.bss.pbje_command
0x200004c4 0x1 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x200004c4 0x1 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.bss.pbje_data
0x200004c5 0x20 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x200004c5 0x20 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.bss.pbje_numclk
0x200004e5 0x1 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x200004e5 0x1 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.bss.pbje_status
0x200004e6 0x1 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x200004e6 0x1 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.bss.raw_bank_status
0x200004e7 0x10 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x200004e7 0x10 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
*fill* 0x200004f7 0x1
.bss.raw_buffer16
0x200004f8 0x200 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x200004f8 0x200 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.bss.rv16.4756
0x200006f8 0x8 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
.bss.rv16.5021
0x20000700 0x8 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x200006f8 0x8 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.bss.rv16.5024
0x20000700 0x8 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.bss.stm_debug_disable
0x20000708 0x1 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x20000708 0x1 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
*fill* 0x20000709 0x3
.bss.swim_base
0x2000070c 0x4 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
.bss.swim_pin 0x20000710 0x1 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x2000070c 0x4 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.bss.swim_pin 0x20000710 0x1 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
*fill* 0x20000711 0x3
.bss.tck_base 0x20000714 0x4 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
.bss.tck_pin 0x20000718 0x1 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
.bss.tck_base 0x20000714 0x4 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.bss.tck_pin 0x20000718 0x1 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
*fill* 0x20000719 0x3
.bss.tdi_base 0x2000071c 0x4 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
.bss.tdi_pin 0x20000720 0x1 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
.bss.tdi_base 0x2000071c 0x4 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.bss.tdi_pin 0x20000720 0x1 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
*fill* 0x20000721 0x3
.bss.tdo_base 0x20000724 0x4 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
.bss.tdo_pin 0x20000728 0x1 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
.bss.tdo_base 0x20000724 0x4 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.bss.tdo_pin 0x20000728 0x1 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
*fill* 0x20000729 0x3
.bss.tms_base 0x2000072c 0x4 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
.bss.tms_pin 0x20000730 0x1 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
.bss.tms_base 0x2000072c 0x4 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.bss.tms_pin 0x20000730 0x1 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
*(COMMON)
*fill* 0x20000731 0x3
COMMON 0x20000734 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-reent.o)
@ -864,45 +869,45 @@ OUTPUT(build_stm/inlretro_stm.elf elf32-littlearm)
.ARM.attributes
0x00000000 0x1e c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o
.ARM.attributes
0x0000001e 0x2f C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x0000001e 0x2f C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.ARM.attributes
0x0000004d 0x21 C:\Users\paul\AppData\Local\Temp\ccobfpka.o
0x0000004d 0x21 C:\Users\paul\AppData\Local\Temp\ccUfmgJG.o
.comment 0x00000000 0x7f
.comment 0x00000000 0x7f C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
.comment 0x00000000 0x7f C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
0x80 (size before relaxing)
.debug_info 0x00000000 0x5499
.debug_info 0x00000000 0x5473 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
.debug_info 0x00005473 0x26 C:\Users\paul\AppData\Local\Temp\ccobfpka.o
.debug_info 0x00000000 0x55a8
.debug_info 0x00000000 0x5582 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.debug_info 0x00005582 0x26 C:\Users\paul\AppData\Local\Temp\ccUfmgJG.o
.debug_abbrev 0x00000000 0x6af
.debug_abbrev 0x00000000 0x69b C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
.debug_abbrev 0x0000069b 0x14 C:\Users\paul\AppData\Local\Temp\ccobfpka.o
.debug_abbrev 0x00000000 0x69b C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.debug_abbrev 0x0000069b 0x14 C:\Users\paul\AppData\Local\Temp\ccUfmgJG.o
.debug_loc 0x00000000 0x55ae
.debug_loc 0x00000000 0x55ae C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
.debug_loc 0x00000000 0x5608
.debug_loc 0x00000000 0x5608 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.debug_aranges 0x00000000 0x1f0
.debug_aranges 0x00000000 0x1f8
.debug_aranges
0x00000000 0x1d0 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x00000000 0x1d8 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.debug_aranges
0x000001d0 0x20 C:\Users\paul\AppData\Local\Temp\ccobfpka.o
0x000001d8 0x20 C:\Users\paul\AppData\Local\Temp\ccUfmgJG.o
.debug_ranges 0x00000000 0xdd8
.debug_ranges 0x00000000 0xdd8 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
.debug_ranges 0x00000000 0xde0
.debug_ranges 0x00000000 0xde0 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.debug_line 0x00000000 0x1b37
.debug_line 0x00000000 0x1a44 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
.debug_line 0x00001a44 0xf3 C:\Users\paul\AppData\Local\Temp\ccobfpka.o
.debug_line 0x00000000 0x1b54
.debug_line 0x00000000 0x1a61 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.debug_line 0x00001a61 0xf3 C:\Users\paul\AppData\Local\Temp\ccUfmgJG.o
.debug_str 0x00000000 0x122f
.debug_str 0x00000000 0x11ce C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
0x12eb (size before relaxing)
.debug_str 0x000011ce 0x61 C:\Users\paul\AppData\Local\Temp\ccobfpka.o
.debug_str 0x00000000 0x1248
.debug_str 0x00000000 0x11e7 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
0x1304 (size before relaxing)
.debug_str 0x000011e7 0x61 C:\Users\paul\AppData\Local\Temp\ccUfmgJG.o
.debug_frame 0x00000000 0x5d8
.debug_frame 0x00000000 0x5d8 C:\Users\paul\AppData\Local\Temp\cc7Ghupa.ltrans0.ltrans.o
.debug_frame 0x00000000 0x5f4
.debug_frame 0x00000000 0x5f4 C:\Users\paul\AppData\Local\Temp\ccpDYpEb.ltrans0.ltrans.o
.stabstr 0x00000000 0x76
.stabstr 0x00000000 0x76 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o)

View File

@ -460,6 +460,9 @@ uint8_t flash_buff( buffer *buff ) {
write_page_tssop( bank, (0x80 | addrH), buff, nes_cpu_wr, nes_cpu_rd );
}
if (buff->mapper == GTROM) {
write_page_verify( (0x80+addrH), buff, gtrom_prgrom_flash_wr);
}
break;
case CHRROM: //$0000

View File

@ -16,6 +16,7 @@
//global variables
uint8_t cur_bank; //used by some flash algos, must be initialized prior to depending on it
uint16_t bank_table; //address offset of bank table for mapper writes with bus conflicts
uint8_t num_prg_banks; //used to determine banktable for mappers like colordreams
/* Desc:Function takes an opcode which was transmitted via USB
@ -68,6 +69,9 @@ uint8_t nes_call( uint8_t opcode, uint8_t miscdata, uint16_t operand, uint8_t *r
case SET_BANK_TABLE:
bank_table = operand;
break;
case SET_NUM_PRG_BANKS:
num_prg_banks = operand;
break;
case NROM_PRG_FLASH_WR:
nrom_prgrom_flash_wr( operand, miscdata );
break;
@ -104,6 +108,9 @@ uint8_t nes_call( uint8_t opcode, uint8_t miscdata, uint16_t operand, uint8_t *r
case MAP30_PRG_FLASH_WR:
map30_prgrom_flash_wr( operand, miscdata );
break;
case GTROM_PRG_FLASH_WR:
gtrom_prgrom_flash_wr( operand, miscdata );
break;
//8bit return values:
@ -136,6 +143,10 @@ uint8_t nes_call( uint8_t opcode, uint8_t miscdata, uint16_t operand, uint8_t *r
rdata[RD0] = bank_table;
rdata[RD1] = bank_table>>8;
break;
case GET_NUM_PRG_BANKS:
rdata[RD_LEN] = BYTE_LEN;
rdata[RD0] = num_prg_banks;
break;
case PPU_PAGE_WR_LFSR:
ppu_page_wr_lfsr( operand, miscdata );
break;
@ -1329,23 +1340,31 @@ void mmc4_chrrom_flash_wr( uint16_t addr, uint8_t data )
void cdream_chrrom_flash_wr( uint16_t addr, uint8_t data )
{
uint8_t rv;
//the CHR-ROM bank is in mapper register bits 4-7
uint8_t mapper_val = cur_bank << 4;
//uint8_t num_prg_banks = 16; // 4: 128KB, 8: 256KB, 16: 512KB
//select first bank
//nes_cpu_wr(0xFF9E, 0);
//unlock the flash
nes_cpu_wr(bank_table+0x20, 0x20);
//nes_cpu_wr(bank_table+0x20, 0x20); //this assumes a 256Byte bank table!
//nes_cpu_wr(bank_table+0x08, 0x20); //this assumes a 128KB PRG-ROM banktable!
// 00 01 02 03 - 10 11 12 13 - 20 21 22 23 - ...
nes_cpu_wr( bank_table+(num_prg_banks*2), 0x20); //need the #2 CHR-ROM bank
nes_ppu_wr(0x1555, 0xAA);
nes_cpu_wr(bank_table+0x10, 0x10);
//nes_cpu_wr(bank_table+0x10, 0x10);
nes_cpu_wr( bank_table+(num_prg_banks*1), 0x10);
nes_ppu_wr(0x0AAA, 0x55);
nes_cpu_wr(bank_table+0x20, 0x20);
//nes_cpu_wr(bank_table+0x20, 0x20);
nes_cpu_wr( bank_table+(num_prg_banks*2), 0x20);
nes_ppu_wr(0x1555, 0xA0);
//select desired bank for the write
nes_cpu_wr(bank_table+mapper_val, mapper_val);
nes_cpu_wr( bank_table+(num_prg_banks*cur_bank), (cur_bank<<4));
//write the byte
nes_ppu_wr(addr, data);
@ -1389,4 +1408,32 @@ uint8_t map30_prgrom_flash_wr( uint16_t addr, uint8_t data )
}
/* Desc:NES GTROM (mapper 111) PRG-ROM FLASH Write
* Pre: nes_init() setup of io pins
* desired bank already selected
* Post:Byte written and ready for another write
* Rtn: None
*/
uint8_t gtrom_prgrom_flash_wr( uint16_t addr, uint8_t data )
{
uint8_t rv;
//unlock the flash
nes_cpu_wr(0xD555, 0xAA);
nes_cpu_wr(0xAAAA, 0x55);
nes_cpu_wr(0xD555, 0xA0);
//write the data
nes_cpu_wr(addr, data);
do {
rv = nes_cpu_rd(addr);
usbPoll(); //orignal kazzo needs this frequently to slurp up incoming data
} while (rv != nes_cpu_rd(addr));
return rv;
}
#endif //NES_CONN

View File

@ -39,6 +39,7 @@ void mmc4_prgrom_sop_flash_wr( uint16_t addr, uint8_t data );
void mmc4_chrrom_flash_wr( uint16_t addr, uint8_t data );
void cdream_chrrom_flash_wr( uint16_t addr, uint8_t data );
uint8_t map30_prgrom_flash_wr( uint16_t addr, uint8_t data );
uint8_t gtrom_prgrom_flash_wr( uint16_t addr, uint8_t data );
void ppu_page_wr_lfsr( uint16_t addr, uint8_t data );

View File

@ -1645,7 +1645,8 @@ void software_AXL_CLK();
#endif //STM_CORE
#ifdef STM_NES
#if defined (STM_NES) || defined(STM_ADAPTER)
#define EXT_IP_PU(bank, pin) bank->MODER &= ~(MODER_OP<<(pin*2)); bank->PUPDR |= (PUPDR_PU<<(pin*2))
#define EXT_IP_FL(bank, pin) bank->MODER &= ~(MODER_OP<<(pin*2)); bank->PUPDR &= ~(PUPDR_PU<<(pin*2))
#define EXT_OP(bank, pin) bank->MODER |= (MODER_OP<<(pin*2))

View File

@ -79,7 +79,8 @@ function nes_exec(process_opts, console_opts)
mmc4 = require "scripts.nes.mmc4",
mmc5 = require "scripts.nes.mmc5",
nrom = require "scripts.nes.nrom",
unrom = require "scripts.nes.unrom"
unrom = require "scripts.nes.unrom",
gtrom = require "scripts.nes.gtrom"
}
dict.io("IO_RESET")

387
host/scripts/nes/gtrom.lua Normal file
View File

@ -0,0 +1,387 @@
-- create the module's table
local gtrom = {}
-- import required modules
local dict = require "scripts.app.dict"
local nes = require "scripts.app.nes"
local dump = require "scripts.app.dump"
local flash = require "scripts.app.flash"
local time = require "scripts.app.time"
local files = require "scripts.app.files"
local time = require "scripts.app.time"
-- file constants & variables
local mapname = "GTROM"
-- local functions
--read PRG-ROM flash ID
local function prgrom_manf_id( debug )
if debug then print("reading PRG-ROM manf ID") end
--no bus conflicts
--$5000-5FFF / $7000-7FFF writes to mapper
--$8000-FFFF writes to mapper
--
--A15 14 - 13 12
-- 1 1 0 1 : 0x5555 -> $D555
-- 1 0 1 0 : 0x2AAA -> $AAAA
dict.nes("NES_CPU_WR", 0xD555, 0xAA)
dict.nes("NES_CPU_WR", 0xAAAA, 0x55)
dict.nes("NES_CPU_WR", 0xD555, 0x90)
rv = dict.nes("NES_CPU_RD", 0x8000)
if debug then print("attempted read PRG-ROM manf ID:", string.format("%X", rv)) end
rv = dict.nes("NES_CPU_RD", 0x8001)
if debug then print("attempted read PRG-ROM prod ID:", string.format("%X", rv)) end
--exit software
dict.nes("NES_CPU_WR", 0x8000, 0xF0)
end
--select different chr-ram banks and verify all 4 banks are present
local function gtrom_chrbank_test()
dict.nes("NES_CPU_WR", 0x5000, 0x00) --PT & NT bank 0
dict.nes("NES_PPU_WR", 0x0000, 0xAA) --PT write
dict.nes("NES_PPU_WR", 0x2000, 0xCC) --NT write
dict.nes("NES_CPU_WR", 0x5000, 0x30) --PT & NT bank 1
dict.nes("NES_PPU_WR", 0x0000, 0x55) --PT write
dict.nes("NES_PPU_WR", 0x2000, 0x33) --NT write
--read back
local test = true
dict.nes("NES_CPU_WR", 0x5000, 0x00) --CHR bank 0
rv = dict.nes("NES_PPU_RD", 0x0000)
if rv ~= 0xAA then
print( "\nFAIL CHR-RAM BANKING TEST!!!\n")
print("PT bank0 read:", string.format("%X", rv))
test = false
end
rv = dict.nes("NES_PPU_RD", 0x2000)
if rv ~= 0xCC then
print( "\nFAIL CHR-RAM BANKING TEST!!!\n")
print("NT bank0 read:", string.format("%X", rv))
test = false
end
dict.nes("NES_CPU_WR", 0x5000, 0x30) --CHR bank 1
rv = dict.nes("NES_PPU_RD", 0x0000)
if rv ~= 0x55 then
print( "\nFAIL CHR-RAM BANKING TEST!!!\n")
print("PT bank1 read:", string.format("%X", rv))
test = false
end
rv = dict.nes("NES_PPU_RD", 0x2000)
if rv ~= 0x33 then
print( "\nFAIL CHR-RAM BANKING TEST!!!\n")
print("NT bank1 read:", string.format("%X", rv))
test = false
end
if test then
print("CHR-RAM BANKING TEST PASSED")
return true
else
print("CHR-RAM BANKING TEST FAILED")
return false
end
end
--dump the PRG ROM
local function dump_prgrom( file, rom_size_KB, debug )
local KB_per_read = 32
local num_reads = rom_size_KB / KB_per_read
local read_count = 0
local addr_base = 0x80 -- $8000
while ( read_count < num_reads ) do
if debug then print( "dump PRG part ", read_count, " of ", num_reads) end
--select desired bank(s) to dump
--mapper 30 bank register is $C000-FFFF
dict.nes("NES_CPU_WR", 0x5000, read_count) --32KB @ CPU $8000
dump.dumptofile( file, KB_per_read, addr_base, "NESCPU_PAGE", false )
read_count = read_count + 1
end
end
--REQ: addr must be in the first bank $8000-BFFF
local function wr_prg_flash_byte(addr, value, bank, debug)
if (addr < 0x8000 or addr > 0xFFFF) then
print("\n ERROR! flash write to PRG-ROM", string.format("$%X", addr), "must be $8000-FFFF \n\n")
return
end
dict.nes("NES_CPU_WR", 0x5000, bank)
dict.nes("NES_CPU_WR", 0xD555, 0xAA)
dict.nes("NES_CPU_WR", 0xAAAA, 0x55)
dict.nes("NES_CPU_WR", 0xD555, 0xA0)
dict.nes("NES_CPU_WR", addr, value)
local rv = dict.nes("NES_CPU_RD", addr)
local i = 0
while ( rv ~= value ) do
rv = dict.nes("NES_CPU_RD", addr)
i = i + 1
end
if debug then print(i, "naks, done writing byte.") end
--TODO report error if write failed
end
--this is controlled from the host side one bank at a time
--but requires mapper specific firmware flashing functions
local function flash_prgrom(file, rom_size_KB, debug)
--init_mapper()
--test some bytes
--wr_prg_flash_byte(0x0000, 0xA5, 0, true)
--wr_prg_flash_byte(0xFFFF, 0x5A, 1, true)
--if true then return end
print("\nProgramming PRG-ROM flash")
local base_addr = 0x8000 --writes occur $8000-9FFF
local bank_size = 32*1024 --UNROM 16KByte per PRG bank
local buff_size = 1 --number of bytes to write at a time
local cur_bank = 0
local total_banks = rom_size_KB*1024/bank_size
local byte_num --byte number gets reset for each bank
local byte_str, data, readdata
while cur_bank < total_banks do
if (cur_bank %4 == 0) then
print("writting PRG bank: ", cur_bank, " of ", total_banks-1)
end
--select bank to flash
dict.nes("NES_CPU_WR", 0x5000, cur_bank)
--program the entire bank's worth of data
--[[ This version of the code programs a single byte at a time but doesn't require
-- mapper specific functions in the firmware
print("This is slow as molasses, but gets the job done")
byte_num = 0 --current byte within the bank
while byte_num < bank_size do
--read next byte from the file and convert to binary
byte_str = file:read(buff_size)
data = string.unpack("B", byte_str, 1)
--write the data
--SLOWEST OPTION: no firmware MMC3 specific functions 100% host flash algo:
--wr_prg_flash_byte(base_addr+byte_num, data, cur_bank, false) --0.7KBps
--EASIEST FIRMWARE SPEEDUP: 5x faster, create MMC3 write byte function:
dict.nes("GTROM_PRG_FLASH_WR", base_addr+byte_num, data) --3.8KBps (5.5x faster than above)
if (true) then
readdata = dict.nes("NES_CPU_RD", base_addr+byte_num)
if readdata ~= data then
print("ERROR flashing byte number", byte_num, " in bank",cur_bank, " to flash ", data, readdata)
end
end
byte_num = byte_num + 1
end
--]]
--Have the device write a banks worth of data
flash.write_file( file, bank_size/1024, mapname, "PRGROM", false )
cur_bank = cur_bank + 1
end
print("Done Programming PRG-ROM flash")
end
--Cart should be in reset state upon calling this function
--this function processes all user requests for this specific board/mapper
local function process(process_opts, console_opts)
local test = process_opts["test"]
local read = process_opts["read"]
local erase = process_opts["erase"]
local program = process_opts["program"]
local verify = process_opts["verify"]
local dumpfile = process_opts["dump_filename"]
local flashfile = process_opts["flash_filename"]
local verifyfile = process_opts["verify_filename"]
local rv = nil
local file
-- TODO: Cleanup needed here, support chrrom, make this look more like other mapper scripts.
local prg_size = console_opts["prg_rom_size_kb"]
--local filetype = "nes"
local filetype = "bin"
--initialize device i/o for NES
dict.io("IO_RESET")
dict.io("NES_INIT")
--test cart by reading manf/prod ID
if test then
print("Testing ", mapname)
--nes.detect_mapper_mirroring(true)
nes.ppu_ram_sense(0x1000, true)
print("EXP0 pull-up test:", dict.io("EXP0_PULLUP_TEST"))
prgrom_manf_id( debug )
--test CHR-RAM banking
rv = gtrom_chrbank_test()
--exit script if test fails
if not rv then return end
end
--dump the cart to dumpfile
if read then
print("\nDumping PRG-ROM...")
file = assert(io.open(dumpfile, "wb"))
--dump cart into file
time.start()
dump_prgrom(file, prg_size, false)
time.report(prg_size)
--close file
assert(file:close())
print("DONE Dumping PRG-ROM")
end
--erase the cart
if erase then
print("\nerasing", mapname);
dict.nes("NES_CPU_WR", 0xD555, 0xAA)
dict.nes("NES_CPU_WR", 0xAAAA, 0x55)
dict.nes("NES_CPU_WR", 0xD555, 0x80)
dict.nes("NES_CPU_WR", 0xD555, 0xAA)
dict.nes("NES_CPU_WR", 0xAAAA, 0x55)
dict.nes("NES_CPU_WR", 0xD555, 0x10)
local i = 0
--TODO create some function to pass the read value
--that's smart enough to figure out if the board is actually erasing or not
rv = 0xFF
while ( rv ~= dict.nes("NES_CPU_RD", 0x8000)) do
rv = dict.nes("NES_CPU_RD", 0x8000)
i = i + 1
end
--TODO verify erase
--for now we'll just report an error if naks isn't sizable
--AVR is slower so naks are lower, tested was ~60
if (i < 10) then
print("ERROR flash did not appear to accept erase command, naks:", i)
return
else
print(i, "naks, done erasing prg.");
end
end
--program flashfile to the cart
if program then
--open file
file = assert(io.open(flashfile, "rb"))
--determine if auto-doubling, deinterleaving, etc,
--needs done to make board compatible with rom
if filetype == "nes" then
--advance past the 16byte header
local buffsize = 1
local byte
local count = 1
for byte in file:lines(buffsize) do
local data = string.unpack("B", byte, 1)
--print(string.format("%X", data))
count = count + 1
if count == 17 then break end
end
end
--flash cart
time.start()
flash_prgrom(file, prg_size, false)
time.report(prg_size)
--close file
assert(file:close())
end
--verify flashfile is on the cart
if verify then
file = assert(io.open(verifyfile, "wb"))
--dump cart into file
time.start()
dump_prgrom(file, prg_size, false)
time.report(prg_size)
--close file
assert(file:close())
--compare the flash file vs post dump file
if (files.compare( verifyfile, flashfile, true ) ) then
print("\nSUCCESS! Flash verified")
else
print("\n\n\n FAILURE! Flash verification did not match")
end
end
dict.io("IO_RESET")
return
end
-- global variables so other modules can use them
-- call functions desired to run when script is called/imported
-- functions other modules are able to call
gtrom.process = process
-- return the module's table
return gtrom

View File

@ -172,6 +172,7 @@
#define SUN4 68
#define FME7 69 //SUNSOFT-5 with synth
#define HDIVER 78
#define GTROM 111
#define DxROM 205
#define MM2 253
#define DPROM 254 //just a random mapper number for whatever I need it for

View File

@ -59,6 +59,7 @@
#define MMC4_PRG_SOP_FLASH_WR 0x10 //current bank must be selected, & needs cur_bank set prior to calling
#define MMC4_CHR_FLASH_WR 0x11 //needs cur_bank set prior to calling
#define MAP30_PRG_FLASH_WR 0x12 //needs cur_bank set prior to calling
#define GTROM_PRG_FLASH_WR 0x13 //desired bank must be selected
#define SET_CUR_BANK 0x20