GBA cart dumping supported!

haven't done anything with save ram/flash yet, but should be able to
dump rom for any/all GBA carts now!  Tested with 8Mbyte Metroid Fusion.
Took ~75sec at 107KBps
This commit is contained in:
Paul XPS 2018-12-06 20:12:21 -06:00
parent 99e3494db8
commit fa71e2ef2a
14 changed files with 1669 additions and 1337 deletions

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\cc4sAHYU.o (__aeabi_unwind_cpp_pr0)
C:\Users\paul\AppData\Local\Temp\ccekVufX.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,13 +51,14 @@ 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\ccmcEXxC.ltrans0.ltrans.o (__gnu_thumb1_case_uqi)
C:\Users\paul\AppData\Local\Temp\ccQzBxIk.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\ccmcEXxC.ltrans0.ltrans.o (__gnu_thumb1_case_uhi)
C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o (__gnu_thumb1_case_uhi)
Allocating common symbols
Common symbol size file
cur_addr_lo 0x2 source/gba.o (symbol from plugin)
buff3 0x14 source/buffer.o (symbol from plugin)
__lock___atexit_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)
@ -86,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)
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)
addr_ptr 0x4 source/bootload.o (symbol from plugin)
@ -129,39 +131,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\ccodwd7C.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccodwd7C.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccodwd7C.o
.stack 0x00000000 0xc00 C:\Users\paul\AppData\Local\Temp\ccodwd7C.o
.heap 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccodwd7C.o
.debug_line 0x00000000 0x7c C:\Users\paul\AppData\Local\Temp\ccodwd7C.o
.debug_info 0x00000000 0x22 C:\Users\paul\AppData\Local\Temp\ccodwd7C.o
.debug_abbrev 0x00000000 0x12 C:\Users\paul\AppData\Local\Temp\ccodwd7C.o
.text 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccUnJdk0.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccUnJdk0.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccUnJdk0.o
.stack 0x00000000 0xc00 C:\Users\paul\AppData\Local\Temp\ccUnJdk0.o
.heap 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccUnJdk0.o
.debug_line 0x00000000 0x7c C:\Users\paul\AppData\Local\Temp\ccUnJdk0.o
.debug_info 0x00000000 0x22 C:\Users\paul\AppData\Local\Temp\ccUnJdk0.o
.debug_abbrev 0x00000000 0x12 C:\Users\paul\AppData\Local\Temp\ccUnJdk0.o
.debug_aranges
0x00000000 0x28 C:\Users\paul\AppData\Local\Temp\ccodwd7C.o
.debug_str 0x00000000 0x80 C:\Users\paul\AppData\Local\Temp\ccodwd7C.o
.debug_ranges 0x00000000 0x20 C:\Users\paul\AppData\Local\Temp\ccodwd7C.o
0x00000000 0x28 C:\Users\paul\AppData\Local\Temp\ccUnJdk0.o
.debug_str 0x00000000 0x68 C:\Users\paul\AppData\Local\Temp\ccUnJdk0.o
.debug_ranges 0x00000000 0x20 C:\Users\paul\AppData\Local\Temp\ccUnJdk0.o
.ARM.attributes
0x00000000 0x1b C:\Users\paul\AppData\Local\Temp\ccodwd7C.o
.text 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text 0x00000000 0x4 C:\Users\paul\AppData\Local\Temp\cc4sAHYU.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc4sAHYU.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc4sAHYU.o
.ARM.extab 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc4sAHYU.o
.ARM.exidx 0x00000000 0x8 C:\Users\paul\AppData\Local\Temp\cc4sAHYU.o
.debug_line 0x00000000 0x49 C:\Users\paul\AppData\Local\Temp\cc4sAHYU.o
.debug_info 0x00000000 0x26 C:\Users\paul\AppData\Local\Temp\cc4sAHYU.o
.debug_abbrev 0x00000000 0x14 C:\Users\paul\AppData\Local\Temp\cc4sAHYU.o
0x00000000 0x1b C:\Users\paul\AppData\Local\Temp\ccUnJdk0.o
.text 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.text 0x00000000 0x4 C:\Users\paul\AppData\Local\Temp\ccekVufX.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccekVufX.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccekVufX.o
.ARM.extab 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccekVufX.o
.ARM.exidx 0x00000000 0x8 C:\Users\paul\AppData\Local\Temp\ccekVufX.o
.debug_line 0x00000000 0x49 C:\Users\paul\AppData\Local\Temp\ccekVufX.o
.debug_info 0x00000000 0x26 C:\Users\paul\AppData\Local\Temp\ccekVufX.o
.debug_abbrev 0x00000000 0x14 C:\Users\paul\AppData\Local\Temp\ccekVufX.o
.debug_aranges
0x00000000 0x20 C:\Users\paul\AppData\Local\Temp\cc4sAHYU.o
.debug_str 0x00000000 0x7d C:\Users\paul\AppData\Local\Temp\cc4sAHYU.o
0x00000000 0x20 C:\Users\paul\AppData\Local\Temp\ccekVufX.o
.debug_str 0x00000000 0x65 C:\Users\paul\AppData\Local\Temp\ccekVufX.o
.ARM.attributes
0x00000000 0x21 C:\Users\paul\AppData\Local\Temp\cc4sAHYU.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccCeVEpf.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccCeVEpf.o
.ARM.extab 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccCeVEpf.o
0x00000000 0x21 C:\Users\paul\AppData\Local\Temp\ccekVufX.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccENOwHW.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccENOwHW.o
.ARM.extab 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccENOwHW.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)
@ -424,10 +426,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\ccodwd7C.o
LOAD C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
LOAD C:\Users\paul\AppData\Local\Temp\cc4sAHYU.o
LOAD C:\Users\paul\AppData\Local\Temp\ccCeVEpf.o
LOAD C:\Users\paul\AppData\Local\Temp\ccUnJdk0.o
LOAD C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
LOAD C:\Users\paul\AppData\Local\Temp\ccekVufX.o
LOAD C:\Users\paul\AppData\Local\Temp\ccENOwHW.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
@ -441,17 +443,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 0x50e0
.text 0x08000000 0x5210
*(.isr_vector)
.isr_vector 0x08000000 0xc0 C:\Users\paul\AppData\Local\Temp\ccodwd7C.o
.isr_vector 0x08000000 0xc0 C:\Users\paul\AppData\Local\Temp\ccUnJdk0.o
0x08000000 __isr_vector
*(.usb_driver)
.usb_driver 0x080000c0 0x3bc C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.usb_driver 0x080000c0 0x3bc C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
0x08000198 USB_IRQHandler
*(.usb_desc)
.usb_desc 0x0800047c 0xb8 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.usb_desc 0x0800047c 0xb8 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
*(.hardfault)
.hardfault 0x08000534 0x2 C:\Users\paul\AppData\Local\Temp\ccodwd7C.o
.hardfault 0x08000534 0x2 C:\Users\paul\AppData\Local\Temp\ccUnJdk0.o
0x08000534 TIM1_CC_IRQHandler
0x08000534 TSC_IRQHandler
0x08000534 ADC1_COMP_IRQHandler
@ -490,7 +492,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\ccmcEXxC.ltrans0.ltrans.o
.hardfault 0x08000538 0xc C:\Users\paul\AppData\Local\Temp\ccQzBxIk.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)
@ -506,11 +508,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\ccmcEXxC.ltrans0.ltrans.o
.fw_update 0x080005ac 0x150 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
0x00000770 . = 0x770
*fill* 0x080006fc 0x74 ff
*(.fw_up_main)
.fw_up_main 0x08000770 0x70 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.fw_up_main 0x08000770 0x70 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
0x00000800 . = 0x800
*fill* 0x080007e0 0x20 ff
*(.appver)
@ -518,173 +520,174 @@ 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\ccodwd7C.o
0x08000804 0x3c C:\Users\paul\AppData\Local\Temp\ccUnJdk0.o
0x08000804 Reset_Handler
*(.usbFuncWrite)
.usbFuncWrite 0x08000840 0x44 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.usbFuncWrite 0x08000840 0x44 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
*(.usbFuncSetup)
.usbFuncSetup 0x08000884 0x1994 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.usbFuncSetup 0x08000884 0x1a54 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
*(.text*)
.text.snes_page_rd_poll.constprop.26
0x08002218 0x7c C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.nes_cpu_page_rd_poll.constprop.25
0x08002294 0x6c C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.nes_ppu_page_rd_poll.constprop.22
0x08002300 0x68 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.snes_page_rd_poll.constprop.27
0x080022d8 0x7c C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.text.nes_cpu_page_rd_poll.constprop.26
0x08002354 0x6c C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.text.nes_ppu_page_rd_poll.constprop.23
0x080023c0 0x68 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.text.append_pairity
0x08002368 0x1e C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x08002428 0x1e C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.text.delay_us
0x08002386 0x14 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
*fill* 0x0800239a 0x2 ff
.text.lfsr_32 0x0800239c 0x30 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.snes_wr 0x080023cc 0x60 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.snes_rd 0x0800242c 0x48 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.write_page_snes.constprop.33
0x08002474 0x194 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x08002446 0x14 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
*fill* 0x0800245a 0x2 ff
.text.lfsr_32 0x0800245c 0x30 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.text.snes_wr 0x0800248c 0x60 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.text.snes_rd 0x080024ec 0x48 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.text.write_page_snes.constprop.34
0x08002534 0x194 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.text.snes_3v_flash_wr
0x08002608 0x50 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x080026c8 0x50 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.text.snes_5v_flash_wr
0x08002658 0x50 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x08002718 0x50 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.text.nes_dualport_wr
0x080026a8 0x50 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x08002768 0x50 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.text.nes_dualport_rd
0x080026f8 0x38 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x080027b8 0x38 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.text.nes_ppu_wr
0x08002730 0x50 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x080027f0 0x50 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.text.nes_ppu_rd
0x08002780 0x38 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x08002840 0x38 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.text.mmc3_chrrom_flash_wr
0x080027b8 0x44 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x08002878 0x44 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.text.nrom_chrrom_flash_wr
0x080027fc 0x44 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x080028bc 0x44 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.text.nes_cpu_wr
0x08002840 0x6c C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x08002900 0x6c C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.text.cdream_chrrom_flash_wr
0x080028ac 0x84 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x0800296c 0x84 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.text.mmc4_chrrom_flash_wr
0x08002930 0x74 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x080029f0 0x74 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.text.cnrom_chrrom_flash_wr
0x080029a4 0x7c C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x08002a64 0x7c C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.text.nes_cpu_rd
0x08002a20 0x40 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x08002ae0 0x40 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.text.map30_prgrom_flash_wr
0x08002a60 0x74 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x08002b20 0x74 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.text.mmc4_prgrom_sop_flash_wr
0x08002ad4 0x54 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x08002b94 0x54 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.text.mmc3_prgrom_flash_wr
0x08002b28 0x50 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x08002be8 0x50 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.text.disc_push_exp0_prgrom_wr
0x08002b78 0x48 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x08002c38 0x48 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.text.discrete_exp0_prgrom_wr
0x08002bc0 0x58 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x08002c80 0x58 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.text.unrom_prgrom_flash_wr
0x08002c18 0x64 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x08002cd8 0x64 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.text.nrom_prgrom_flash_wr
0x08002c7c 0x44 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x08002d3c 0x44 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.text.pbje_scan
0x08002cc0 0x10c C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x08002d80 0x10c C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.text.pbje_state_change
0x08002dcc 0x88 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x08002e8c 0x88 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.text.jtag_init_pbje
0x08002e54 0xe0 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x08002f14 0xe0 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.text.jtag_run_pbje.part.0
0x08002f34 0xb8 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x08002ff4 0xb8 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.text.io_reset
0x08002fec 0x174 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x080030ac 0x174 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.text.gba_rd 0x08003220 0x4c C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.text.write_page_verify
0x08003160 0x5c C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x0800326c 0x5c C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.text.write_page
0x080031bc 0x34 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x080032c8 0x34 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.text.get_next_buff
0x080031f0 0x54 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x080032fc 0x54 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.text.mmc1_wr.constprop.12
0x08003244 0x22 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
*fill* 0x08003266 0x2 ff
0x08003350 0x22 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
*fill* 0x08003372 0x2 ff
.text.mmc1_chrrom_flash_wr
0x08003268 0x60 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x08003374 0x60 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.text.mmc1_prgrom_flash_wr
0x080032c8 0x50 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x080033d4 0x50 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.text.swim_wotf
0x08003318 0xb4 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x08003424 0xb4 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.text.swim_rotf
0x080033cc 0xac C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x080034d8 0xac C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.text.startup.main
0x08003478 0xac0 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x08003478 main
*fill* 0x08003f38 0x8 ff
.text 0x08003f40 0x154 C:\Users\paul\AppData\Local\Temp\ccCeVEpf.o
0x08003f40 swim_xfr
.text 0x08004094 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)
0x08004350 _Unwind_GetCFA
0x08004354 __gnu_Unwind_RaiseException
0x080043a8 __gnu_Unwind_ForcedUnwind
0x080043bc __gnu_Unwind_Resume
0x08004404 __gnu_Unwind_Resume_or_Rethrow
0x08004420 _Unwind_Complete
0x08004424 _Unwind_DeleteException
0x08004434 _Unwind_VRS_Get
0x0800447c _Unwind_VRS_Set
0x080044c4 __gnu_Unwind_Backtrace
0x08004814 __aeabi_unwind_cpp_pr0
0x08004820 __aeabi_unwind_cpp_pr1
0x0800482c __aeabi_unwind_cpp_pr2
0x08004838 _Unwind_VRS_Pop
.text 0x08004a9c 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)
0x08004a9c __restore_core_regs
0x08004a9c restore_core_regs
0x08004ac8 __gnu_Unwind_Restore_VFP
0x08004acc __gnu_Unwind_Save_VFP
0x08004ad0 __gnu_Unwind_Restore_VFP_D
0x08004ad4 __gnu_Unwind_Save_VFP_D
0x08004ad8 __gnu_Unwind_Restore_VFP_D_16_to_31
0x08004adc __gnu_Unwind_Save_VFP_D_16_to_31
0x08004ae0 __gnu_Unwind_Restore_WMMXD
0x08004ae4 __gnu_Unwind_Save_WMMXD
0x08004ae8 __gnu_Unwind_Restore_WMMXC
0x08004aec __gnu_Unwind_Save_WMMXC
0x08004af0 ___Unwind_RaiseException
0x08004af0 _Unwind_RaiseException
0x08004b20 _Unwind_Resume
0x08004b20 ___Unwind_Resume
0x08004b50 _Unwind_Resume_or_Rethrow
0x08004b50 ___Unwind_Resume_or_Rethrow
0x08004b80 _Unwind_ForcedUnwind
0x08004b80 ___Unwind_ForcedUnwind
0x08004bb0 ___Unwind_Backtrace
0x08004bb0 _Unwind_Backtrace
.text 0x08004be0 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)
0x08004c34 __gnu_unwind_execute
0x08004f24 __gnu_unwind_frame
0x08004f4c _Unwind_GetRegionStart
0x08004f58 _Unwind_GetLanguageSpecificData
0x08004f6c _Unwind_GetDataRelBase
0x08004f74 _Unwind_GetTextRelBase
.text.abort 0x08004f7c 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)
0x08004f7c abort
.text.memcpy 0x08004f8c 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)
0x08004f8c memcpy
0x08003584 0xae8 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
0x08003584 main
*fill* 0x0800406c 0x4 ff
.text 0x08004070 0x154 C:\Users\paul\AppData\Local\Temp\ccENOwHW.o
0x08004070 swim_xfr
.text 0x080041c4 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)
0x08004480 _Unwind_GetCFA
0x08004484 __gnu_Unwind_RaiseException
0x080044d8 __gnu_Unwind_ForcedUnwind
0x080044ec __gnu_Unwind_Resume
0x08004534 __gnu_Unwind_Resume_or_Rethrow
0x08004550 _Unwind_Complete
0x08004554 _Unwind_DeleteException
0x08004564 _Unwind_VRS_Get
0x080045ac _Unwind_VRS_Set
0x080045f4 __gnu_Unwind_Backtrace
0x08004944 __aeabi_unwind_cpp_pr0
0x08004950 __aeabi_unwind_cpp_pr1
0x0800495c __aeabi_unwind_cpp_pr2
0x08004968 _Unwind_VRS_Pop
.text 0x08004bcc 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)
0x08004bcc __restore_core_regs
0x08004bcc restore_core_regs
0x08004bf8 __gnu_Unwind_Restore_VFP
0x08004bfc __gnu_Unwind_Save_VFP
0x08004c00 __gnu_Unwind_Restore_VFP_D
0x08004c04 __gnu_Unwind_Save_VFP_D
0x08004c08 __gnu_Unwind_Restore_VFP_D_16_to_31
0x08004c0c __gnu_Unwind_Save_VFP_D_16_to_31
0x08004c10 __gnu_Unwind_Restore_WMMXD
0x08004c14 __gnu_Unwind_Save_WMMXD
0x08004c18 __gnu_Unwind_Restore_WMMXC
0x08004c1c __gnu_Unwind_Save_WMMXC
0x08004c20 ___Unwind_RaiseException
0x08004c20 _Unwind_RaiseException
0x08004c50 _Unwind_Resume
0x08004c50 ___Unwind_Resume
0x08004c80 _Unwind_Resume_or_Rethrow
0x08004c80 ___Unwind_Resume_or_Rethrow
0x08004cb0 _Unwind_ForcedUnwind
0x08004cb0 ___Unwind_ForcedUnwind
0x08004ce0 ___Unwind_Backtrace
0x08004ce0 _Unwind_Backtrace
.text 0x08004d10 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)
0x08004d64 __gnu_unwind_execute
0x08005054 __gnu_unwind_frame
0x0800507c _Unwind_GetRegionStart
0x08005088 _Unwind_GetLanguageSpecificData
0x0800509c _Unwind_GetDataRelBase
0x080050a4 _Unwind_GetTextRelBase
.text.abort 0x080050ac 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)
0x080050ac abort
.text.memcpy 0x080050bc 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)
0x080050bc memcpy
.text._raise_r
0x08005014 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)
0x08005014 _raise_r
.text.raise 0x08005070 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)
0x08005070 raise
.text._kill_r 0x08005084 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)
0x08005084 _kill_r
0x08005144 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)
0x08005144 _raise_r
.text.raise 0x080051a0 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)
0x080051a0 raise
.text._kill_r 0x080051b4 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)
0x080051b4 _kill_r
.text._getpid_r
0x080050ac 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)
0x080050ac _getpid_r
.text._getpid 0x080050b4 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)
0x080050b4 _getpid
.text._kill 0x080050c4 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)
0x080050c4 _kill
.text._exit 0x080050d4 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)
0x080050d4 _exit
0x080051dc 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)
0x080051dc _getpid_r
.text._getpid 0x080051e4 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)
0x080051e4 _getpid
.text._kill 0x080051f4 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)
0x080051f4 _kill
.text._exit 0x08005204 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)
0x08005204 _exit
*(.init)
.init 0x080050d8 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
0x080050d8 _init
.init 0x08005208 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
0x08005208 _init
*(.fini)
.fini 0x080050dc 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
0x080050dc _fini
.fini 0x0800520c 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
0x0800520c _fini
*crtbegin.o(.ctors)
*crtbegin?.o(.ctors)
*(EXCLUDE_FILE(*crtend.o *crtend?.o) .ctors)
@ -698,42 +701,42 @@ LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eab
*(.rodata*)
*(.eh_frame*)
.glue_7 0x080050e0 0x0
.glue_7 0x080050e0 0x0 linker stubs
.glue_7 0x08005210 0x0
.glue_7 0x08005210 0x0 linker stubs
.glue_7t 0x080050e0 0x0
.glue_7t 0x080050e0 0x0 linker stubs
.glue_7t 0x08005210 0x0
.glue_7t 0x08005210 0x0 linker stubs
.vfp11_veneer 0x080050e0 0x0
.vfp11_veneer 0x080050e0 0x0 linker stubs
.vfp11_veneer 0x08005210 0x0
.vfp11_veneer 0x08005210 0x0 linker stubs
.v4_bx 0x080050e0 0x0
.v4_bx 0x080050e0 0x0 linker stubs
.v4_bx 0x08005210 0x0
.v4_bx 0x08005210 0x0 linker stubs
.iplt 0x080050e0 0x0
.iplt 0x080050e0 0x0 C:\Users\paul\AppData\Local\Temp\ccodwd7C.o
.iplt 0x08005210 0x0
.iplt 0x08005210 0x0 C:\Users\paul\AppData\Local\Temp\ccUnJdk0.o
.ARM.extab 0x080050e0 0x30
.ARM.extab 0x08005210 0x30
*(.ARM.extab* .gnu.linkonce.armextab.*)
.ARM.extab 0x080050e0 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 0x08005104 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)
0x08005110 __exidx_start = .
.ARM.extab 0x08005210 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 0x08005234 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)
0x08005240 __exidx_start = .
.ARM.exidx 0x08005110 0xd0
.ARM.exidx 0x08005240 0xd0
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
.ARM.exidx 0x08005110 0x8 C:\Users\paul\AppData\Local\Temp\ccCeVEpf.o
.ARM.exidx 0x08005240 0x8 C:\Users\paul\AppData\Local\Temp\ccENOwHW.o
0x10 (size before relaxing)
.ARM.exidx 0x08005118 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 0x08005248 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 0x080051b0 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 0x080052e0 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)
0x080051e0 __exidx_end = .
0x080051e0 __etext = ALIGN (0x4)
0x08005310 __exidx_end = .
0x08005310 __etext = ALIGN (0x4)
.rel.dyn 0x080051e0 0x0
.rel.iplt 0x080051e0 0x0 C:\Users\paul\AppData\Local\Temp\ccodwd7C.o
.rel.dyn 0x08005310 0x0
.rel.iplt 0x08005310 0x0 C:\Users\paul\AppData\Local\Temp\ccUnJdk0.o
.data 0x20000000 0x430 load address 0x080051e0
.data 0x20000000 0x430 load address 0x08005310
0x20000000 __data_start__ = .
*(vtable)
*(.data*)
@ -761,84 +764,89 @@ 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 0x08005610
.igot.plt 0x20000430 0x0 C:\Users\paul\AppData\Local\Temp\ccodwd7C.o
.igot.plt 0x20000430 0x0 load address 0x08005740
.igot.plt 0x20000430 0x0 C:\Users\paul\AppData\Local\Temp\ccUnJdk0.o
.bss 0x20000430 0x304 load address 0x08005610
.bss 0x20000430 0x308 load address 0x08005740
0x20000430 . = ALIGN (0x4)
0x20000430 __bss_start__ = .
*(.bss*)
.bss.addr_ptr 0x20000430 0x4 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.bss.addrh 0x20000434 0x2 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.bss.addr_ptr 0x20000430 0x4 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.bss.addrh 0x20000434 0x2 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.bss.bank_table
0x20000436 0x2 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.bss.buff0 0x20000438 0x14 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.bss.buff1 0x2000044c 0x14 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.bss.buff2 0x20000460 0x14 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.bss.buff3 0x20000474 0x14 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.bss.cur_bank 0x20000488 0x1 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
*fill* 0x20000489 0x3
.bss.cur_buff 0x2000048c 0x4 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x20000436 0x2 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.bss.buff0 0x20000438 0x14 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.bss.buff1 0x2000044c 0x14 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.bss.buff2 0x20000460 0x14 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.bss.buff3 0x20000474 0x14 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.bss.cur_addr_hi
0x20000488 0x1 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
*fill* 0x20000489 0x1
.bss.cur_addr_lo
0x2000048a 0x2 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.bss.cur_bank 0x2000048c 0x1 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
*fill* 0x2000048d 0x3
.bss.cur_buff 0x20000490 0x4 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.bss.cur_usb_load_buff
0x20000490 0x4 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x20000494 0x4 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.bss.incoming_bytes_remain
0x20000494 0x1 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
*fill* 0x20000495 0x3
.bss.lfsr 0x20000498 0x4 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.bss.num_buff.5087
0x2000049c 0x1 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
*fill* 0x2000049d 0x3
0x20000498 0x1 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
*fill* 0x20000499 0x3
.bss.lfsr 0x2000049c 0x4 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.bss.num_buff.5089
0x200004a0 0x1 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
*fill* 0x200004a1 0x3
.bss.oper_info_struct
0x200004a0 0x20 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x200004a4 0x20 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.bss.pbje_command
0x200004c0 0x1 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x200004c4 0x1 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.bss.pbje_data
0x200004c1 0x20 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x200004c5 0x20 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.bss.pbje_numclk
0x200004e1 0x1 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x200004e5 0x1 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.bss.pbje_status
0x200004e2 0x1 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x200004e6 0x1 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.bss.raw_bank_status
0x200004e3 0x10 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
*fill* 0x200004f3 0x1
0x200004e7 0x10 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
*fill* 0x200004f7 0x1
.bss.raw_buffer16
0x200004f4 0x200 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x200004f8 0x200 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.bss.rv16.4756
0x200006f4 0x8 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.bss.rv16.5007
0x200006fc 0x8 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x200006f8 0x8 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.bss.rv16.5009
0x20000700 0x8 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.bss.stm_debug_disable
0x20000704 0x1 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
*fill* 0x20000705 0x3
0x20000708 0x1 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
*fill* 0x20000709 0x3
.bss.swim_base
0x20000708 0x4 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.bss.swim_pin 0x2000070c 0x1 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
*fill* 0x2000070d 0x3
.bss.tck_base 0x20000710 0x4 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.bss.tck_pin 0x20000714 0x1 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
*fill* 0x20000715 0x3
.bss.tdi_base 0x20000718 0x4 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.bss.tdi_pin 0x2000071c 0x1 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
*fill* 0x2000071d 0x3
.bss.tdo_base 0x20000720 0x4 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.bss.tdo_pin 0x20000724 0x1 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
*fill* 0x20000725 0x3
.bss.tms_base 0x20000728 0x4 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.bss.tms_pin 0x2000072c 0x1 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x2000070c 0x4 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.bss.swim_pin 0x20000710 0x1 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
*fill* 0x20000711 0x3
.bss.tck_base 0x20000714 0x4 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.bss.tck_pin 0x20000718 0x1 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
*fill* 0x20000719 0x3
.bss.tdi_base 0x2000071c 0x4 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.bss.tdi_pin 0x20000720 0x1 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
*fill* 0x20000721 0x3
.bss.tdo_base 0x20000724 0x4 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.bss.tdo_pin 0x20000728 0x1 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
*fill* 0x20000729 0x3
.bss.tms_base 0x2000072c 0x4 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.bss.tms_pin 0x20000730 0x1 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
*(COMMON)
*fill* 0x2000072d 0x3
COMMON 0x20000730 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)
0x20000730 errno
0x20000734 . = ALIGN (0x4)
0x20000734 __bss_end__ = .
*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)
0x20000734 errno
0x20000738 . = ALIGN (0x4)
0x20000738 __bss_end__ = .
.heap 0x20000734 0x0
0x20000734 __end__ = .
0x20000734 PROVIDE (end = .)
.heap 0x20000738 0x0
0x20000738 __end__ = .
0x20000738 PROVIDE (end = .)
*(.heap*)
0x20000734 __HeapLimit = .
0x20000738 __HeapLimit = .
.stack_dummy 0x20000734 0x0
.stack_dummy 0x20000738 0x0
*(.stack*)
0x20001800 __StackTop = (ORIGIN (RAM) + LENGTH (RAM))
0x20001800 __StackLimit = (__StackTop - SIZEOF (.stack_dummy))
@ -851,45 +859,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\ccmcEXxC.ltrans0.ltrans.o
0x0000001e 0x2f C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.ARM.attributes
0x0000004d 0x21 C:\Users\paul\AppData\Local\Temp\ccCeVEpf.o
0x0000004d 0x21 C:\Users\paul\AppData\Local\Temp\ccENOwHW.o
.comment 0x00000000 0x7f
.comment 0x00000000 0x7f C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.comment 0x00000000 0x7f C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
0x80 (size before relaxing)
.debug_info 0x00000000 0x501b
.debug_info 0x00000000 0x4ff5 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.debug_info 0x00004ff5 0x26 C:\Users\paul\AppData\Local\Temp\ccCeVEpf.o
.debug_info 0x00000000 0x51d1
.debug_info 0x00000000 0x51ab C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.debug_info 0x000051ab 0x26 C:\Users\paul\AppData\Local\Temp\ccENOwHW.o
.debug_abbrev 0x00000000 0x69e
.debug_abbrev 0x00000000 0x68a C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.debug_abbrev 0x0000068a 0x14 C:\Users\paul\AppData\Local\Temp\ccCeVEpf.o
.debug_abbrev 0x00000000 0x68a C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.debug_abbrev 0x0000068a 0x14 C:\Users\paul\AppData\Local\Temp\ccENOwHW.o
.debug_loc 0x00000000 0x503a
.debug_loc 0x00000000 0x503a C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.debug_loc 0x00000000 0x51c7
.debug_loc 0x00000000 0x51c7 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.debug_aranges 0x00000000 0x1d8
.debug_aranges 0x00000000 0x1e0
.debug_aranges
0x00000000 0x1b8 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x00000000 0x1c0 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.debug_aranges
0x000001b8 0x20 C:\Users\paul\AppData\Local\Temp\ccCeVEpf.o
0x000001c0 0x20 C:\Users\paul\AppData\Local\Temp\ccENOwHW.o
.debug_ranges 0x00000000 0xce8
.debug_ranges 0x00000000 0xce8 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.debug_ranges 0x00000000 0xd18
.debug_ranges 0x00000000 0xd18 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.debug_line 0x00000000 0x1923
.debug_line 0x00000000 0x1830 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.debug_line 0x00001830 0xf3 C:\Users\paul\AppData\Local\Temp\ccCeVEpf.o
.debug_line 0x00000000 0x19ae
.debug_line 0x00000000 0x18bb C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
.debug_line 0x000018bb 0xf3 C:\Users\paul\AppData\Local\Temp\ccENOwHW.o
.debug_str 0x00000000 0x1187
.debug_str 0x00000000 0x110e C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x1233 (size before relaxing)
.debug_str 0x0000110e 0x79 C:\Users\paul\AppData\Local\Temp\ccCeVEpf.o
.debug_str 0x00000000 0x11c2
.debug_str 0x00000000 0x1161 C:\Users\paul\AppData\Local\Temp\ccQzBxIk.ltrans0.ltrans.o
0x127e (size before relaxing)
.debug_str 0x00001161 0x61 C:\Users\paul\AppData\Local\Temp\ccENOwHW.o
.debug_frame 0x00000000 0x584
.debug_frame 0x00000000 0x584 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.debug_frame 0x00000000 0x59c
.debug_frame 0x00000000 0x59c C:\Users\paul\AppData\Local\Temp\ccQzBxIk.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

@ -82,6 +82,11 @@ uint8_t dump_buff( buffer *buff ) {
//id contains MSb of page when <256B buffer
buff->last_idx, 1 );
break;
case GBA_ROM_PAGE:
//address must have already been latched
//we're only telling page_rd the number of bytes to read, and where to put it
buff->cur_byte = gba_page_rd( buff->data, buff->last_idx );
break;
#endif
#ifdef NES_CONN

View File

@ -3,6 +3,9 @@
//only need this file if connector is present on the device
#ifdef GB_CONN
uint16_t cur_addr_lo;
uint8_t cur_addr_hi;
//=================================================================================================
//
// GBA operations
@ -26,20 +29,32 @@ uint8_t gba_call( uint8_t opcode, uint8_t miscdata, uint16_t operand, uint8_t *r
#define RD_LEN 0
#define RD0 1
#define RD1 2
//resist temptation to make these 16bit indexes
//will break rule of accessing usb_buff in half word aligned access
//would have to use RD1-RD2 for 16bit aligned access..
#define BYTE_LEN 1
#define HWORD_LEN 2
switch (opcode) {
// //no return value:
case GBA_WR:
gba_wr( operand, miscdata );
case LATCH_ADDR:
//operand A0-15, miscdata A16-23->D0-7
gba_latch_addr( operand, miscdata );
break;
case RELEASE_BUS:
ROMSEL_HI();
DATA_IP(); //A16-23 are output here during reads
break;
//8bit return values:
case GBA_RD:
rdata[RD_LEN] = BYTE_LEN;
rdata[RD0] = gba_rd( operand );
//address must have been latched already
rdata[RD_LEN] = HWORD_LEN;
//can use operand as a variable
operand = gba_rd();
rdata[RD0] = operand;
rdata[RD1] = operand>>8;
break;
default:
//macro doesn't exist
@ -50,15 +65,85 @@ uint8_t gba_call( uint8_t opcode, uint8_t miscdata, uint16_t operand, uint8_t *r
}
uint8_t gba_rd( uint16_t addr )
//latches A0-23, leaves /CS low for subsequent accesses
void gba_latch_addr( uint16_t addr_lo, uint8_t addr_hi)
{
return 0xAA;
}
//store address so other functions can keep track of incrementing
cur_addr_lo = addr_lo;
cur_addr_hi = addr_hi;
//set addr & data bus to output
ADDR_OP();
DATA_OP();
//place addr on the bus
ADDR_SET(addr_lo);
DATA_SET(addr_hi);
//latch the address
//leave it low for subsequent access
ROMSEL_LO();
//leave AD0-15 as input for subsequent access
ADDR_IP();
//leave A16-23 as output for subsequent access
void gba_wr( uint16_t addr, uint8_t data )
{
return;
}
//address must already have been latched
//will increment address variables and A16-23
//ready to read next byte
uint16_t gba_rd()
{
uint16_t read;
if( cur_addr_lo == 0xFFFF ) {
//going to have a roll over when incrementing
cur_addr_hi++;
//don't output it till this access is done though
}
CSRD_LO();
cur_addr_lo++; //increment to next byte that will be read
read = ADDR_VAL;
CSRD_HI();
//if we had a 16bit addr roll over, need to increment A16-23
DATA_SET(cur_addr_hi);
return read;
}
//can only read 255 bytes, len can't be 255 else it would create infinite loop
//TODO get a 16bit data pointer
uint8_t gba_page_rd( uint8_t *data, uint8_t len)
{
uint8_t i;
uint16_t read;
for( i=0; i<=len; i++ ) {
//usbPoll(); //Call usbdrv.h usb polling while waiting for data
//read 16bits
read = gba_rd();
//store lower byte little endian
data[i] = read;
//upper byte
i++;
//store upper byte
data[i] = read>>8;
}
//return index of last byte read
return i;
}
#endif //GB_CONN

View File

@ -7,7 +7,8 @@
uint8_t gba_call( uint8_t opcode, uint8_t miscdata, uint16_t operand, uint8_t *rdata );
uint8_t gba_rd( uint16_t addr );
void gba_wr( uint16_t addr, uint8_t data );
uint16_t gba_rd();
void gba_latch_addr( uint16_t addr_lo, uint8_t addr_hi);
uint8_t gba_page_rd( uint8_t *data, uint8_t len);
#endif

View File

@ -48,7 +48,7 @@ uint8_t io_call( uint8_t opcode, uint8_t miscdata, uint16_t operand, uint8_t *rd
case GB_POWER_5V:
GBP_OP(); GBP_5V(); break;
case GAMEBOY_INIT: gameboy_init(); break;
// case GBA_INIT: gba_init(); break;
case GBA_INIT: gba_init(); break;
#endif
#ifdef SEGA_CONN
case SEGA_INIT: sega_init(); break;
@ -326,18 +326,17 @@ void gba_init()
io_reset();
//enable control outputs and disable memories
//ROM
//ROM-RAM
ROMSEL_OP();
ROMSEL_HI();
ROMSEL_HI(); //gameboy pin 5 ADDRESS LATCH
CSRD_OP();
CSRD_HI();
CSRD_HI(); //gameboy pin 4 /RD
CSWR_OP();
CSWR_HI();
CSWR_HI(); //gameboy pin 3 /WR
//Set #RESET pin low
EXP0_LO();
EXP0_OP();
//if SWIM is active, EXP0 must be set to pullup prior to SWIM transfers
EXP0_HI(); //gameboy pin 30 "GAMEBOY /RESET" (GBA /CS2)
//other control pins are inputs or unused, leave as IP pullup from reset
@ -346,9 +345,12 @@ void gba_init()
DATA_IP_PU();
//now meet conditions to call other macros
//setup address $0000
ADDR_ENABLE();
ADDR_SET(0x0000);
ADDR_ENABLE(); //turns on GPIO block & sets to output
ADDR_IP(); //ad0-15 input
ADDR_PU(); //ad0-15 pullup
ADDR_SET(0x0000); //output set to zero, but won't take effect until outputed
//All AD0-15 & D0-7 are bidir pins, don't drive them until ready
//default is 3v on gameboy/GBA port

View File

@ -1142,6 +1142,11 @@ void software_AXL_CLK();
// Write/Output: Byte/half word access only, no bit accesses
// Read/Input: Not supported
//
// Broke the rules above for devices with GBA ports, let them be inputs
// don't really need to define a whole new port, just need to be able to
// read from the current definition. Old kazzo's and STM_NES can't
// do these functions, but they don't have GBA/N64 connectors..
//
// ---------------------------------------------------------------------------------------
#if defined (STM_INL6_PROTO) || defined(STM_INL6)
@ -1160,6 +1165,8 @@ void software_AXL_CLK();
//Appears to be working for setting A10, but not A11 reguardless of order of execution..
//TODO really these macros should be making byte writes to the registers, not 16bit RMW
#define ADDR_SET(hword) Abank->ODR = hword
#define ADDR_RD(hword) hword = Abank->IDR
#define ADDR_VAL (Abank->IDR)
#define ADDR_EN_CLK() RCC->AHBENR |= RCC_AHBENR_ADDR
#define ADDR_ENABLE() ADDR_EN_CLK(); ADDR_OP()

185
host/scripts/gba/basic.lua Normal file
View File

@ -0,0 +1,185 @@
-- create the module's table
local basic = {}
-- import required modules
local dict = require "scripts.app.dict"
local dump = require "scripts.app.dump"
local flash = require "scripts.app.flash"
local help = require "scripts.app.help"
local time = require "scripts.app.time"
-- file constants
local mapname = "BASIC" --IDK what else to call it right now, no real mappers. Just different save types
-- local functions
--dump the ROM
local function dump_rom( file, rom_size_KB, debug )
--ROM ONLY dump all 32KB, most of this code is overkill for no MBC.
-- but follows same format as MBC's
local KB_per_read = 128 --read 16bit address space 2Bytes per address (2*64K = 128KByte)
local num_reads = rom_size_KB / KB_per_read
local read_count = 0
local addr_base = 0 --this value doesn't matter, but dumptofile won't like it if it's nil
--GBA roms increment themselves after each read. So really only have to latch
--the first address, then read out each byte sequentially..
--The address provided for dumptofile doesn't actually do anything on the firmware side
--The firmware keeps track of the address being currently read from
--
--One thing to note is that to aid in double buffering the firmware assumes the host will
--want the next page and goes ahead and starts dumping it, once the last page was read.
--For parallel roms this doesn't matter when the page beyond a bank is read for no good.
--But for GBA the rom increments itself and will become unaligned with the host if one
--doesn't LATCH_ADDR before starting each dumptofile
--[[
-- Read entire rom at once:
--latch address AD0-15 A16-23
dict.gba("LATCH_ADDR", 0x0000, 0x00)
dump.dumptofile( file, rom_size_KB, addr_base, "GBA_PAGE", false )
dict.gba("RELEASE_BUS")
--]]
-- read 64K address space (128KByte) at a time just so we can report progress from here
-- In practice the isn't a measureable speed difference comparared to reading the entire
-- rom at once
while ( read_count < num_reads ) do
if (read_count %8 == 0) then
print("Dumping ROM bank: ", read_count, " of ", num_reads-1)
end
--latch address AD0-15 A16-23
dict.gba("LATCH_ADDR", 0x0000, read_count)
dump.dumptofile( file, KB_per_read, addr_base, "GBA_ROM_PAGE", false )
read_count = read_count + 1
dict.gba("RELEASE_BUS")
end
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
local rom_size = console_opts["prg_rom_size_kb"]
local wram_size = console_opts["wram_size_kb"]
local mirror = console_opts["mirror"]
--initialize device i/o for NES
dict.io("IO_RESET")
dict.io("GBA_INIT")
dict.io("GB_POWER_3V") --GBA is 3v cartridge
--test the cart
if test then
-- print("Testing ", mapname)
-- nes.detect_mapper_mirroring(true)
-- print("EXP0 pull-up test:", dict.io("EXP0_PULLUP_TEST"))
-- --nes.read_flashID_prgrom_exp0(true)
-- rom_manf_id(true)
-- --nes.read_flashID_chrrom_8K(true)
-- chrrom_manf_id(true)
end
--dump the cart to dumpfile
if read then
print("\nDumping ROM...")
--init_mapper()
file = assert(io.open(dumpfile, "wb"))
--dump cart into file
time.start()
dump_rom(file, rom_size, false)
time.report(rom_size_KB)
--close file
assert(file:close())
print("DONE Dumping ROM")
end
--erase the cart
if erase then
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
-- --flash cart
-- flash_rom(file, rom_size, true)
-- --close file
-- assert(file:close())
--
end
--verify flashfile is on the cart
if verify then
--for now let's just dump the file and verify manually
print("\nPost dumping ROM...")
--init_mapper()
file = assert(io.open(verifyfile, "wb"))
--dump cart into file
time.start()
dump_rom(file, rom_size, false)
time.report(rom_size_KB)
--close file
assert(file:close())
print("DONE post dumping ROM")
end
dict.io("IO_RESET")
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
basic.process = process
-- return the module's table
return basic

View File

@ -90,6 +90,9 @@ function main ()
--local curcart = require "scripts.gb.romonly"
--local curcart = require "scripts.gb.mbc1"
--GBA
--local curcart = require "scripts.gba.basic"
-- =====================================================
-- USERS: set cart_console to the to point to the mapper script you would like to use here.
-- =====================================================
@ -143,10 +146,12 @@ function main ()
--released INL6 path (big square boards)
--fwupdate.update_firmware("../firmware/build_stm6/inlretro_stm_AV00.bin")
--fwupdate.update_firmware("../firmware/build_stm6/inlretro_stm_AV01.bin", 0x6DC, false) --INL6 skip ram pointer
--fwupdate.update_firmware("../firmware/build_stm6/inlretro_stm.bin", 0x6DC, false) --nightly build
--released INL_N path (smaller NESmaker boards)
--fwupdate.update_firmware("../firmware/build_stmn/inlretro_stm_AV00.bin")
--fwupdate.update_firmware("../firmware/build_stmn/inlretro_stm_AV01.bin", 0x6E8, false) --INL_NES skip ram pointer
--fwupdate.update_firmware("../firmware/build_stmn/inlretro_stm.bin", 0x6E8, false) --nightly build
@ -238,6 +243,8 @@ function main ()
elseif cart_console == "GBA" then
curcart.process(process_opts, console_opts)
--always end with and gpio reset incase the script didn't
dict.io("IO_RESET")

View File

@ -121,6 +121,7 @@
#define SNESROM_PAGE 0x24 //mapper byte specifies A15-8 ROMSEL low
#define SNESSYS_PAGE 0x25 //mapper byte specifies A15-8 ROMSEL high
#define GAMEBOY_PAGE 0x26 //mapper byte specifies A15-8
#define GBA_ROM_PAGE 0x27 //address must have already been latched with gba dictionary
//operand LSB
//SST 39SF0x0 manf/prod IDs

View File

@ -17,8 +17,20 @@
//=============================================================================================
#define GBA_RD 0 //RL=3 return error code, data len = 1, 1 byte of data
#define GBA_WR 1
//must have latched the address first
//rom will auto increment so can just call this repeatedly to read a sequence of addresses
#define GBA_RD 0 //RL=4 return error code, data len = 1, 2 bytes of data
//#define GBA_WR 1
//operand A0-15, miscdata A16-23
//leaves /CE low for subsequent accesses
//leaves A16-23 as output
//leaves AD0-15 as input
#define LATCH_ADDR 2
//take /CE high to finish above access
//put A16-23 back to input
#define RELEASE_BUS 3
#endif