diff --git a/common.py b/common.py index 1fd19ae5..64d622c4 100644 --- a/common.py +++ b/common.py @@ -447,6 +447,9 @@ JAUDIO_BASE = CFLAGS + [ "-enum int", "-common on" ] + DOL_DEFINES +JAUDIO_SAMPLE = [ + "-func_align 32" +] JSYSTEM_CFLAGS = ' '.join(JSYSTEM_BASE + LOCAL_CFLAGS) JSYSTEM_JGADGET_CFLAGS = ' '.join(JSYSTEM_JGADGET_BASE + LOCAL_CFLAGS) @@ -464,6 +467,7 @@ EXTERNAL_REL_CFLAGS = ' '.join(BASE_REL_CFLAGS) PREPROCESS_CFLAGS = ' '.join(PREPROCESSOR_CFLAGS) FAMICOM_CLFAGS = ' '.join(FAMICOM_BASE + LOCAL_CFLAGS) JAUDIO_CFLAGS = ' '.join(JAUDIO_BASE + LOCAL_CFLAGS) +JAUDIO_SAMPLE_CFLAGS = ' '.join(JAUDIO_BASE + JAUDIO_SAMPLE + LOCAL_CFLAGS) DOL_LDFLAGS = ' '.join([ "-maxerrors 1", diff --git a/config/analysis_overrides.yml b/config/analysis_overrides.yml index 78cf77d3..55996991 100644 --- a/config/analysis_overrides.yml +++ b/config/analysis_overrides.yml @@ -4,6 +4,7 @@ blocked_pointers: blocked_targets: - 0x800A97E0 # boot.c local static const tbl, also start of .rodata - 0x80008000 + - 0x80018800 - 0x801F6C7C # tcs_bad - 0x801F6C7D # ics_bad - 0x800a9a90 diff --git a/config/disasm_overrides.yml b/config/disasm_overrides.yml index 276e66e9..f5bf07b5 100644 --- a/config/disasm_overrides.yml +++ b/config/disasm_overrides.yml @@ -1,6 +1,7 @@ trim_ctors: true symbol_aligns: + 0x80018920: 32 0x80207458: 8 # align RunQueue to 0x001251d8 0x800b9140: 32 # align gam_win_moji1_tex to 32 bytes 0x801f71c0: 32 # align texture_buffer_data to 32 bytes diff --git a/config/dol_slices.yml b/config/dol_slices.yml index a75de4a9..f70a23e5 100644 --- a/config/dol_slices.yml +++ b/config/dol_slices.yml @@ -1,297 +1,299 @@ -ctors.s: - .ctors: [0x800a97b4, 0x800a97c0] # remove trailing 0s from ctor area -#dolphin/os/__start.c: -# .init: [0x80003100, 0x80003354] -dolphin/__ppc_eabi_init.cpp: - .init: [0x80003354, 0x800033a8] - .text: [0x8007fdfc, 0x8007fe90] -runtime/__mem.c: - .init: [0x800033a8, 0x800034e0] -TRK/init/mem_TRK.c: - .init: [0x800034e0, 0x80003534] -asm/__exception.s: - .init: [0x80003534, 0x80005468] -boot.c: - .text: [0x800056c0, 0x8000663c] - .rodata: [0x800a97e0, 0x800a97e8] - .data: [0x800af860, 0x800afe50] - .bss: [0x800e2280, 0x800e2318] -jsyswrap.cpp: - .text: [0x8000663c, 0x80007188] - .ctors: [0x800a9784, 0x800a9788] - .data: [0x800afe50, 0x800b05e8] - .bss: [0x800e2318, 0x800e2640] -version.c: - .data: [0x800b05e8, 0x800b0608] -initial_menu.c: - .text: [0x80007188, 0x80007e58] - .rodata: [0x800a97e8, 0x800a97f8] - .data: [0x800b0608, 0x800b0a60] - .bss: [0x800e2640, 0x800e2790] -dvderr.c: - .text: [0x80007e58, 0x800083f8] - .rodata: [0x800a97f8, 0x800a9838] - .data: [0x800b0a60, 0x800b9140] - .bss: [0x800e2790, 0x800e2b88] -bootdata/gam_win1.c: - .data: [0x800b9140, 0x800bb500] -bootdata/gam_win2.c: - .data: [0x800bb500, 0x800bd820] -bootdata/gam_win3.c: - .data: [0x800bd820, 0x800be460] -bootdata/logo_nin.c: - .data: [0x800be460, 0x800c3140] -nintendo_hi_0.c: - .data: [0x800c3140, 0x800cca40] -jaudio_NES/dummyprobe.c: - .text: [0x800083f8, 0x80008400] -# jaudio_NES/game64.c: # TODO: finish -# .rodata: [0x800a9938, 0x800a9b98] -#jaudio_NES/verysimple.c: -# .text: [0x80008400, 0x80008480] -# .sdata: [0x80217b80, 0x80217b88] -Famicom/famicom.cpp: - .text: [0x80041614, 0x80046888] # TODO: get ~J2DOrthoGraph's dtor in here somehow? 0x800468fc, also add in JUTGamePad::getPortStatus when JUTGamePad is linked? - .rodata: [0x800aa9a8, 0x800aaa30] - .data: [0x800d8778, 0x800d99a0] - .bss: [0x801ef540, 0x801f6bd8] -Famicom/famicom_nesinfo.cpp: - .text: [0x800468fc, 0x80047e40] - .rodata: [0x800aaa30, 0x800aab60] - .data: [0x800d99a0, 0x800da9c8] - .bss: [0x801f6bd8, 0x801f6c80] -GBA2/JoyBoot.c: - .text: [0x80049788, 0x8004ae00] - .data: [0x800daa08, 0x800daaa0] - .bss: [0x801f7180, 0x801f71c0] -libforest/osreport.c: - .text: [0x8005a654, 0x8005a92c] - .data: [0x800dc6d8, 0x800dc738] - .bss: [0x80206f08, 0x80206f20] - .sbss: [0x80218618, 0x80218628] -libforest/fault.c: - .text: [0x8005a92c, 0x8005adac] - .data: [0x800dc738, 0x800dc7c8] - .bss: [0x80206f20, 0x80206f30] - .sbss: [0x80218628, 0x80218630] -libforest/ReconfigBATs.c: - .text: [0x8005adac, 0x8005aed4] -libu64/debug.c: - .text: [0x8005aed4, 0x8005af30] - .data: [0x800dc7c8, 0x800dc7f0] -libu64/gfxprint.c: - .text: [0x8005af30, 0x8005b9a8] - .data: [0x800dc7f0, 0x800dc810] - .sbss: [0x80218630, 0x80218638] -libu64/gfxprint_data.c: - .data: [0x800dc810, 0x800dd090] -libu64/pad.c: - .text: [0x8005b9a8, 0x8005ba2c] -libc64/aprintf.c: - .text: [0x8005cbdc, 0x8005cc14] -libc64/math64.c: - .text: [0x8005cc14, 0x8005cccc] - .sdata2: [0x80219118, 0x80219130] -libc64/qrand.c: - .text: [0x8005cccc, 0x8005cd64] - .sdata: [0x80217de8, 0x80217df0] - .sbss: [0x80218640, 0x80218648] - .sdata2: [0x80219130, 0x80219138] -libc64/sprintf.c: - .text: [0x8005ce18, 0x8005cf08] -libc64/malloc.c: - .text: [0x8005cf08, 0x8005d01c] - .bss: [0x80206F30, 0x80206F60] -libultra/ultra.c: - .text: [0x8005d01c, 0x8005d15c] - .bss: [0x80206f60, 0x80206fa0] -#libultra/gu/scale.c: -# .text: [0x8005e7d4, 0x8005e860] -# .sdata2: [0x80219208, 0x80219210] -#libultra/gu/translate.c: -# .text: [0x8005e8ac, 0x8005e918] -libultra/gu/sins.c: - .text: [0x8005e860, 0x8005e8ac] - .data: [0x800dd360, 0x800ddb60] -#libultra/xldtob.c: -# .text: [0x8005e918, 0x8005f2a0] -# .rodata: [0x800ab110, 0x800ab158] -# .sdata: [0x80217df8, 0x80217e08] -# .sdata2: [0x80219210, 0x80219230] -#libultra/xlitob.c: -# .text: [0x8005f2a0, 0x8005f4cc] -# .data: [0x800ddb60, 0x800ddb88] -#libultra/xprintf.c: -# .text: [0x8005f4cc, 0x8005ff74] -# .rodata: [0x800ab158, 0x800ab170] -# .data: [0x800ddb88, 0x800ddd20] -# .sdata: [0x80217e08, 0x80217e10] -# .sdata2: [0x80219230, 0x80219238] -JSystem/JKernel/JKRHeap.cpp: - .text: [0x80063748, 0x80064028] - .data: [0x800ddf20, 0x800ddf98] - .sdata: [0x80217e58, 0x80217e80] - .sbss: [0x802186d8, 0x80218700] -JSystem/JKernel/JKRExpHeap.cpp: - .text: [0x80064028, 0x80065aa0] - .data: [0x800ddf98, 0x800de3a8] - .sdata: [0x80217e80, 0x80217ec0] - .sbss: [0x80218700, 0x80218720] - .sdata2: [0x80219278, 0x80219288] -JSystem/JKernel/JKRDisposer.cpp: - .text: [0x80065aa0, 0x80065b8c] - .data: [0x800de3a8, 0x800de3c0] - .sdata: [0x80217ec0, 0x80217ec8] -JSystem/JKernel/JKRThread.cpp: - .text: [0x80065b8c, 0x80065ef0] - .ctors: [0x800a978c, 0x800a9790] - .data: [0x800de3c0, 0x800de3f8] - .bss: [0x80207008, 0x80207020] - .sdata: [0x80217ec8, 0x80217ed8] -JSystem/JKernel/JKRAram.cpp: - .text: [0x80065ef8, 0x80066e84] - .ctors: [0x800a9790, 0x800a9794] - .data: [0x800de3f8, 0x800de4c0] - .bss: [0x80207020, 0x80207038] - .sdata: [0x80217ed8, 0x80217ef8] - .sbss: [0x80218720, 0x80218758] -JSystem/JKernel/JKRAramHeap.cpp: - .text: [0x80066e84, 0x80067258] - .ctors: [0x800a9794, 0x800a9798] - .data: [0x800de4c0, 0x800de4f0] - .bss: [0x80207038, 0x80207050] - .sdata: [0x80217ef8, 0x80217f08] -JSystem/JKernel/JKRAramBlock.cpp: - .text: [0x80067258, 0x800674c8] - .data: [0x800de4f0, 0x800de510] - .sdata: [0x80217f08, 0x80217f10] -JSystem/JKernel/JKRAramPiece.cpp: - .text: [0x800674c8, 0x80067a88] - .ctors: [0x800a9798, 0x800a979c] - .data: [0x800de510, 0x800de568] - .bss: [0x80207050, 0x80207080] - .sdata: [0x80217f10, 0x80217f18] -JSystem/JKernel/JKRAramStream.cpp: - .text: [0x80067a88, 0x80067ff4] - .data: [0x800de568, 0x800de608] - .sdata: [0x80217f18, 0x80217f38] - .sbss: [0x80218758, 0x80218768] -JSystem/JKernel/JKRFileLoader.cpp: - .text: [0x80067ff4, 0x800685b0] - .ctors: [0x800a979c, 0x800a97a0] - .data: [0x800de608, 0x800de670] - .bss: [0x80207080, 0x80207098] - .sdata: [0x80217f38, 0x80217f50] - .sbss: [0x80218768, 0x80218770] -JSystem/JKernel/JKRFileFinder.cpp: - .text: [0x800685b0, 0x80068744] - .data: [0x800de670, 0x800de6b0] - .sdata: [0x80217f50, 0x80217f60] -JSystem/JKernel/JKRArchivePub.cpp: - .text: [0x80068744, 0x80068ed0] - .data: [0x800de6b0, 0x800de740] - .sdata: [0x80217f60, 0x80217f78] -JSystem/JKernel/JKRArchivePri.cpp: - .text: [0x80068ed0, 0x80069530] - .sbss: [0x80218770, 0x80218778] -JSystem/JKernel/JKRMemArchive.cpp: - .text: [0x80069530, 0x80069a28] - .data: [0x800de740, 0x800de828] - .sdata: [0x80217f78, 0x80217f98] -JSystem/JKernel/JKRAramArchive.cpp: - .text: [0x80069a28, 0x8006a4fc] - .data: [0x800de828, 0x800de938] - .sdata: [0x80217f98, 0x80217fc8] -JSystem/JKernel/JKRDvdArchive.cpp: - .text: [0x8006a4fc, 0x8006add0] - .data: [0x800de938, 0x800dea70] - .sdata: [0x80217fc8, 0x80217fe8] -JSystem/JKernel/JKRCompArchive.cpp: - .text: [0x8006add0, 0x8006b8a4] - .data: [0x800dea70, 0x800deba8] - .sdata: [0x80217fe8, 0x80218008] -JSystem/JKernel/JKRDvdFile.cpp: - .text: [0x8006b8a4, 0x8006be0c] - .ctors: [0x800a97a0, 0x800a97a4] - .data: [0x800deba8, 0x800dec30] - .bss: [0x80207098, 0x802070b0] - .sdata: [0x80218008, 0x80218028] -JSystem/JKernel/JKRDvdRipper.cpp: - .text: [0x8006be0c, 0x8006c8fc] - .ctors: [0x800a97a4, 0x800a97a8] - .data: [0x800dec30, 0x800dec90] - .bss: [0x802070b0, 0x802070c8] - .sdata: [0x80218028, 0x80218030] - .sbss: [0x80218778, 0x802187a8] -JSystem/JKernel/JKRDvdAramRipper.cpp: - .text: [0x8006c8fc, 0x8006d608] - .ctors: [0x800a97a8, 0x800a97ac] - .bss: [0x802070c8, 0x802070e0] - .sdata: [0x80218030, 0x80218038] - .sbss: [0x802187a8, 0x802187e8] -JSystem/JKernel/JKRDecomp.cpp: - .text: [0x8006d608, 0x8006dd58] - .data: [0x800dec90, 0x800ded18] - .sdata: [0x80218038, 0x80218050] - .sbss: [0x802187e8, 0x802187f0] -JSystem/JSupport/JSUInputStream.cpp: - .text: [0x8006e168, 0x8006e3e4] - .data: [0x800ded18, 0x800dedb8] - .sdata: [0x80218050, 0x80218068] -#JSystem/JSupport/JSUFileStream.cpp: # JSUFileStream linkage disabled until we can resolve order of RTTI strings in .data -# .text: [0x8006e3e4, 0x8006e604] -# .data: [0x800dedb8, 0x800dee60] -# .sdata: [0x80218068, 0x80218088] -JSystem/JGadget/linklist.cpp: - .text: [0x8006e604, 0x8006e800] -JSystem/JUtility/JUTGamePad.cpp: - .text: [0x80070274, 0x800713b0] - .ctors: [0x800a97ac, 0x800a97b0] - .rodata: [0x800ab240, 0x800ab260] - .data: [0x800def60, 0x800defa0] - .bss: [0x802070e0, 0x80207268] - .sdata: [0x802180b8, 0x802180d0] - .sbss: [0x80218808, 0x80218838] - .sdata2: [0x802192c0, 0x80219300] -dolphin/BASE/ppcarch.c: - .text: [0x8007867c, 0x80078718] -dolphin/os/OSArena.c: - .text: [0x8007988c, 0x800798ac] - .sdata: [0x80218178, 0x80218180] - .sbss: [0x802188f8, 0x80218900] -#dolphin/os/OSCache.c: -# .text: [0x80079b40, 0x8007a01c] -# .data: [0x800dfa00, 0x800dfc30] -#dolphin/os/OSDisableInterrupts.c: - # .text: [0x8007ac24, 0x8007ac38] -dolphin/os/OSEnableInterrupts.c: - .text: [0x8007ac38, 0x8007ac4c] -dolphin/os/OSRestoreInterrupts.c: - .text: [0x8007ac4c, 0x8007ac70] -dolphin/os/OSRtc.c: - .text: [0x8007d050, 0x8007db20] - .bss: [0x80207400, 0x80207458] -MSL_C/rand.c: - .text: [0x8009f46c, 0x8009f494] - .sdata: [0x80218260, 0x80218268] -TRK/mainloop.c: - .text: [0x800A1FF4, 0x800A20EC] -TRK/nubevent.c: - .text: [0x800A20EC, 0x800A2314] - .bss: [0x802095C8, 0x802095F0] -#TRK/nubinit.c: #things break, fix later -# .text: [0x800A2314, 0x800A2494] -# .rodata: [0x800AF750, 0x800AF770] -# .bss: [0x802095F0, 0x802095F8] -#TRK/usr_put.c: -# .text: [0x800A3468, 0x800A34F4] -#TRK/dispatch.c: -# .text: [0x800A34F4, 0x800A3590] -# .data: [0x800E2128, 0x800E21B0] -# .bss: [0x8020AFC0, 0x8020AFC8] -dolphin/odenotstub/odenotstub.c: - .text: [0x800a9770, 0x800a9780] -dolphin/amcstubs/AmcExi2Stubs.c: - .text: [0x800a8cc0, 0x800a8cf0] -dolphin/gx/GXStubs.c: - .text: [0x800998d4, 0x800998d8] +ctors.s: + .ctors: [0x800a97b4, 0x800a97c0] # remove trailing 0s from ctor area +#dolphin/os/__start.c: +# .init: [0x80003100, 0x80003354] +runtime/__mem.c: + .init: [0x800033a8, 0x800034e0] +TRK/init/mem_TRK.c: + .init: [0x800034e0, 0x80003534] +asm/__exception.s: + .init: [0x80003534, 0x80005468] +boot.c: + .text: [0x800056c0, 0x8000663c] + .rodata: [0x800a97e0, 0x800a97e8] + .data: [0x800af860, 0x800afe50] + .bss: [0x800e2280, 0x800e2318] +jsyswrap.cpp: + .text: [0x8000663c, 0x80007188] + .ctors: [0x800a9784, 0x800a9788] + .data: [0x800afe50, 0x800b05e8] + .bss: [0x800e2318, 0x800e2640] +initial_menu.c: + .text: [0x80007188, 0x80007e58] + .rodata: [0x800a97e8, 0x800a97f8] + .data: [0x800b0608, 0x800b0a60] + .bss: [0x800e2640, 0x800e2790] +dvderr.c: + .text: [0x80007e58, 0x800083f8] + .rodata: [0x800a97f8, 0x800a9838] + .data: [0x800b0a60, 0x800b9140] + .bss: [0x800e2790, 0x800e2b88] +jaudio_NES/dummyprobe.c: + .text: [0x800083f8, 0x80008400] +jaudio_NES/sample.c: + .text: [0x80018640, 0x80018920] +# jaudio_NES/game64.c: # TODO: finish +# .rodata: [0x800a9938, 0x800a9b98] +#jaudio_NES/verysimple.c: +# .text: [0x80008400, 0x80008480] +# .sdata: [0x80217b80, 0x80217b88] +Famicom/famicom.cpp: + .text: [0x80041614, 0x80046888] # TODO: get ~J2DOrthoGraph's dtor in here somehow? 0x800468fc, also add in JUTGamePad::getPortStatus when JUTGamePad is linked? + .rodata: [0x800aa9a8, 0x800aaa30] + .data: [0x800d8778, 0x800d99a0] + .bss: [0x801ef540, 0x801f6bd8] +Famicom/famicom_nesinfo.cpp: + .text: [0x800468fc, 0x80047e40] + .rodata: [0x800aaa30, 0x800aab60] + .data: [0x800d99a0, 0x800da9c8] + .bss: [0x801f6bd8, 0x801f6c80] +GBA2/JoyBoot.c: + .text: [0x80049788, 0x8004ae00] + .data: [0x800daa08, 0x800daaa0] + .bss: [0x801f7180, 0x801f71c0] +libforest/osreport.c: + .text: [0x8005a654, 0x8005a92c] + .data: [0x800dc6d8, 0x800dc738] + .bss: [0x80206f08, 0x80206f20] + .sbss: [0x80218618, 0x80218628] +libforest/fault.c: + .text: [0x8005a92c, 0x8005adac] + .data: [0x800dc738, 0x800dc7c8] + .bss: [0x80206f20, 0x80206f30] + .sbss: [0x80218628, 0x80218630] +libforest/ReconfigBATs.c: + .text: [0x8005adac, 0x8005aed4] +libu64/debug.c: + .text: [0x8005aed4, 0x8005af30] + .data: [0x800dc7c8, 0x800dc7f0] +libu64/gfxprint.c: + .text: [0x8005af30, 0x8005b9a8] + .data: [0x800dc7f0, 0x800dc810] + .sbss: [0x80218630, 0x80218638] +libu64/pad.c: + .text: [0x8005b9a8, 0x8005ba2c] +libc64/aprintf.c: + .text: [0x8005cbdc, 0x8005cc14] +libc64/math64.c: + .text: [0x8005cc14, 0x8005cccc] + .sdata2: [0x80219118, 0x80219130] +libc64/qrand.c: + .text: [0x8005cccc, 0x8005cd64] + .sdata: [0x80217de8, 0x80217df0] + .sbss: [0x80218640, 0x80218648] + .sdata2: [0x80219130, 0x80219138] +libc64/sprintf.c: + .text: [0x8005ce18, 0x8005cf08] +libc64/malloc.c: + .text: [0x8005cf08, 0x8005d01c] + .bss: [0x80206F30, 0x80206F60] +libultra/ultra.c: + .text: [0x8005d01c, 0x8005d15c] + .bss: [0x80206f60, 0x80206fa0] +#libultra/gu/scale.c: +# .text: [0x8005e7d4, 0x8005e860] +# .sdata2: [0x80219208, 0x80219210] +#libultra/gu/translate.c: +# .text: [0x8005e8ac, 0x8005e918] +libultra/gu/sins.c: + .text: [0x8005e860, 0x8005e8ac] + .data: [0x800dd360, 0x800ddb60] +#libultra/xldtob.c: +# .text: [0x8005e918, 0x8005f2a0] +# .rodata: [0x800ab110, 0x800ab158] +# .sdata: [0x80217df8, 0x80217e08] +# .sdata2: [0x80219210, 0x80219230] +#libultra/xlitob.c: +# .text: [0x8005f2a0, 0x8005f4cc] +# .data: [0x800ddb60, 0x800ddb88] +#libultra/xprintf.c: +# .text: [0x8005f4cc, 0x8005ff74] +# .rodata: [0x800ab158, 0x800ab170] +# .data: [0x800ddb88, 0x800ddd20] +# .sdata: [0x80217e08, 0x80217e10] +# .sdata2: [0x80219230, 0x80219238] +JSystem/JKernel/JKRHeap.cpp: + .text: [0x80063748, 0x80064028] + .data: [0x800ddf20, 0x800ddf98] + .sdata: [0x80217e58, 0x80217e80] + .sbss: [0x802186d8, 0x80218700] +JSystem/JKernel/JKRExpHeap.cpp: + .text: [0x80064028, 0x80065aa0] + .data: [0x800ddf98, 0x800de3a8] + .sdata: [0x80217e80, 0x80217ec0] + .sbss: [0x80218700, 0x80218720] + .sdata2: [0x80219278, 0x80219288] +JSystem/JKernel/JKRDisposer.cpp: + .text: [0x80065aa0, 0x80065b8c] + .data: [0x800de3a8, 0x800de3c0] + .sdata: [0x80217ec0, 0x80217ec8] +JSystem/JKernel/JKRThread.cpp: + .text: [0x80065b8c, 0x80065ef0] + .ctors: [0x800a978c, 0x800a9790] + .data: [0x800de3c0, 0x800de3f8] + .bss: [0x80207008, 0x80207020] + .sdata: [0x80217ec8, 0x80217ed8] +JSystem/JKernel/JKRAram.cpp: + .text: [0x80065ef8, 0x80066e84] + .ctors: [0x800a9790, 0x800a9794] + .data: [0x800de3f8, 0x800de4c0] + .bss: [0x80207020, 0x80207038] + .sdata: [0x80217ed8, 0x80217ef8] + .sbss: [0x80218720, 0x80218758] +JSystem/JKernel/JKRAramHeap.cpp: + .text: [0x80066e84, 0x80067258] + .ctors: [0x800a9794, 0x800a9798] + .data: [0x800de4c0, 0x800de4f0] + .bss: [0x80207038, 0x80207050] + .sdata: [0x80217ef8, 0x80217f08] +JSystem/JKernel/JKRAramBlock.cpp: + .text: [0x80067258, 0x800674c8] + .data: [0x800de4f0, 0x800de510] + .sdata: [0x80217f08, 0x80217f10] +JSystem/JKernel/JKRAramPiece.cpp: + .text: [0x800674c8, 0x80067a88] + .ctors: [0x800a9798, 0x800a979c] + .data: [0x800de510, 0x800de568] + .bss: [0x80207050, 0x80207080] + .sdata: [0x80217f10, 0x80217f18] +JSystem/JKernel/JKRAramStream.cpp: + .text: [0x80067a88, 0x80067ff4] + .data: [0x800de568, 0x800de608] + .sdata: [0x80217f18, 0x80217f38] + .sbss: [0x80218758, 0x80218768] +JSystem/JKernel/JKRFileLoader.cpp: + .text: [0x80067ff4, 0x800685b0] + .ctors: [0x800a979c, 0x800a97a0] + .data: [0x800de608, 0x800de670] + .bss: [0x80207080, 0x80207098] + .sdata: [0x80217f38, 0x80217f50] + .sbss: [0x80218768, 0x80218770] +JSystem/JKernel/JKRFileFinder.cpp: + .text: [0x800685b0, 0x80068744] + .data: [0x800de670, 0x800de6b0] + .sdata: [0x80217f50, 0x80217f60] +JSystem/JKernel/JKRArchivePub.cpp: + .text: [0x80068744, 0x80068ed0] + .data: [0x800de6b0, 0x800de740] + .sdata: [0x80217f60, 0x80217f78] +JSystem/JKernel/JKRArchivePri.cpp: + .text: [0x80068ed0, 0x80069530] + .sbss: [0x80218770, 0x80218778] +JSystem/JKernel/JKRMemArchive.cpp: + .text: [0x80069530, 0x80069a28] + .data: [0x800de740, 0x800de828] + .sdata: [0x80217f78, 0x80217f98] +JSystem/JKernel/JKRAramArchive.cpp: + .text: [0x80069a28, 0x8006a4fc] + .data: [0x800de828, 0x800de938] + .sdata: [0x80217f98, 0x80217fc8] +JSystem/JKernel/JKRDvdArchive.cpp: + .text: [0x8006a4fc, 0x8006add0] + .data: [0x800de938, 0x800dea70] + .sdata: [0x80217fc8, 0x80217fe8] +JSystem/JKernel/JKRCompArchive.cpp: + .text: [0x8006add0, 0x8006b8a4] + .data: [0x800dea70, 0x800deba8] + .sdata: [0x80217fe8, 0x80218008] +JSystem/JKernel/JKRDvdFile.cpp: + .text: [0x8006b8a4, 0x8006be0c] + .ctors: [0x800a97a0, 0x800a97a4] + .data: [0x800deba8, 0x800dec30] + .bss: [0x80207098, 0x802070b0] + .sdata: [0x80218008, 0x80218028] +JSystem/JKernel/JKRDvdRipper.cpp: + .text: [0x8006be0c, 0x8006c8fc] + .ctors: [0x800a97a4, 0x800a97a8] + .data: [0x800dec30, 0x800dec90] + .bss: [0x802070b0, 0x802070c8] + .sdata: [0x80218028, 0x80218030] + .sbss: [0x80218778, 0x802187a8] +JSystem/JKernel/JKRDvdAramRipper.cpp: + .text: [0x8006c8fc, 0x8006d608] + .ctors: [0x800a97a8, 0x800a97ac] + .bss: [0x802070c8, 0x802070e0] + .sdata: [0x80218030, 0x80218038] + .sbss: [0x802187a8, 0x802187e8] +JSystem/JKernel/JKRDecomp.cpp: + .text: [0x8006d608, 0x8006dd58] + .data: [0x800dec90, 0x800ded18] + .sdata: [0x80218038, 0x80218050] + .sbss: [0x802187e8, 0x802187f0] +JSystem/JSupport/JSUInputStream.cpp: + .text: [0x8006e168, 0x8006e3e4] + .data: [0x800ded18, 0x800dedb8] + .sdata: [0x80218050, 0x80218068] +#JSystem/JSupport/JSUFileStream.cpp: # JSUFileStream linkage disabled until we can resolve order of RTTI strings in .data +# .text: [0x8006e3e4, 0x8006e604] +# .data: [0x800dedb8, 0x800dee60] +# .sdata: [0x80218068, 0x80218088] +JSystem/JGadget/linklist.cpp: + .text: [0x8006e604, 0x8006e800] +JSystem/JUtility/JUTGamePad.cpp: + .text: [0x80070274, 0x800713b0] + .ctors: [0x800a97ac, 0x800a97b0] + .rodata: [0x800ab240, 0x800ab260] + .data: [0x800def60, 0x800defa0] + .bss: [0x802070e0, 0x80207268] + .sdata: [0x802180b8, 0x802180d0] + .sbss: [0x80218808, 0x80218838] + .sdata2: [0x802192c0, 0x80219300] +dolphin/BASE/ppcarch.c: + .text: [0x8007867c, 0x80078718] +dolphin/os/OSArena.c: + .text: [0x8007988c, 0x800798ac] + .sdata: [0x80218178, 0x80218180] + .sbss: [0x802188f8, 0x80218900] +#dolphin/os/OSCache.c: +# .text: [0x80079b40, 0x8007a01c] +# .data: [0x800dfa00, 0x800dfc30] +#dolphin/os/OSDisableInterrupts.c: + # .text: [0x8007ac24, 0x8007ac38] +dolphin/os/OSEnableInterrupts.c: + .text: [0x8007ac38, 0x8007ac4c] +dolphin/os/OSRestoreInterrupts.c: + .text: [0x8007ac4c, 0x8007ac70] +dolphin/os/OSRtc.c: + .text: [0x8007d050, 0x8007db20] + .bss: [0x80207400, 0x80207458] +dolphin/__ppc_eabi_init.cpp: + .init: [0x80003354, 0x800033a8] + .text: [0x8007fdfc, 0x8007fe90] +dolphin/gx/GXStubs.c: + .text: [0x800998d4, 0x800998d8] +MSL_C/rand.c: + .text: [0x8009f46c, 0x8009f494] + .sdata: [0x80218260, 0x80218268] +TRK/mainloop.c: + .text: [0x800A1FF4, 0x800A20EC] +TRK/nubevent.c: + .text: [0x800A20EC, 0x800A2314] + .bss: [0x802095C8, 0x802095F0] +dolphin/amcstubs/AmcExi2Stubs.c: + .text: [0x800a8cc0, 0x800a8cf0] +#TRK/nubinit.c: #things break, fix later +# .text: [0x800A2314, 0x800A2494] +# .rodata: [0x800AF750, 0x800AF770] +# .bss: [0x802095F0, 0x802095F8] +#TRK/usr_put.c: +# .text: [0x800A3468, 0x800A34F4] +#TRK/dispatch.c: +# .text: [0x800A34F4, 0x800A3590] +# .data: [0x800E2128, 0x800E21B0] +# .bss: [0x8020AFC0, 0x8020AFC8] +dolphin/odenotstub/odenotstub.c: + .text: [0x800a9770, 0x800a9780] +version.c: + .data: [0x800b05e8, 0x800b0608] +bootdata/gam_win1.c: + .data: [0x800b9140, 0x800bb500] +bootdata/gam_win2.c: + .data: [0x800bb500, 0x800bd820] +bootdata/gam_win3.c: + .data: [0x800bd820, 0x800be460] +bootdata/logo_nin.c: + .data: [0x800be460, 0x800c3140] +nintendo_hi_0.c: + .data: [0x800c3140, 0x800cca40] +libu64/gfxprint_data.c: + .data: [0x800dc810, 0x800dd090] diff --git a/configure.py b/configure.py index 71559bc9..0956c5b1 100644 --- a/configure.py +++ b/configure.py @@ -630,7 +630,10 @@ class CSource(Source): self.cflags = c.SDK_FLAGS self.cc = c.OCC elif path.startswith("src/static/jaudio_NES/"): - self.cflags = c.JAUDIO_CFLAGS + if path.startswith("src/static/jaudio_NES/sample.c"): + self.cflags = c.JAUDIO_SAMPLE_CFLAGS + else: + self.cflags = c.JAUDIO_CFLAGS self.cc = c.CC elif path.startswith("src/static/JSystem/JGadget/"): self.cflags = c.JSYSTEM_JGADGET_CFLAGS diff --git a/include/jaudio_NES/audiostruct.h b/include/jaudio_NES/audiostruct.h new file mode 100644 index 00000000..9a9f40f7 --- /dev/null +++ b/include/jaudio_NES/audiostruct.h @@ -0,0 +1,185 @@ +#ifndef AUDIOSTRUCT_H +#define AUDIOSTRUCT_H + +#include "types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct chnode_ chnode; +typedef struct link_ link; + +/* sizeof(struct link_) == 0x10 */ +struct link_ { + /* 0x00 */ link* next; + /* 0x04 */ link* prev; + union { + /* 0x08 */ int numAfter; /* when link is head */ + /* 0x08 */ void* pData; /* when link is node */ + }; + /* 0x0C */ chnode* pNode; +}; + +/* sizeof(struct chnode_) == 0x40 */ +struct chnode_ { + /* 0x00 */ link globalUse; + /* 0x10 */ link globalFree; + /* 0x20 */ link globalRelease; + /* 0x30 */ link globalReleaseWait; +}; + +/* sizeof(struct AudioPort_) == 0x8 */ +typedef struct AudioPort_ { + /* 0x00 */ u8 cmd; + /* 0x01 */ u8 groupID; + /* 0x02 */ u8 subtrackID; + /* 0x03 */ u8 _03; + /* 0x04 */ u32 param; +} AudioPort; + +/* sizeof(Acmd) == 0x4*/ +typedef union Acmd { + struct { + /* 0x00 */ u8 p0; + /* 0x01 */ u8 p1; + /* 0x02 */ u8 p2; + /* 0x03 */ u8 p3; + }; + /* 0x00 */ u32 uint32; +} Acmd; + +/* sizeof(ALHeap) == 0x14 */ +typedef struct ALHeap { + /* 0x00 */ u8* base; + /* 0x04 */ u8* current; + /* 0x08 */ int length; + /* 0x0C */ u32 count; + /* 0x10 */ u8* last; +} ALHeap; + +/* sizeof(ArcHeader) == 0x10 */ +typedef struct ArcHeader_ { + /* 0x00 */ s16 numEntries; + /* 0x02 */ u16 _02; + /* 0x04 */ u8* pData; + /* 0x08 */ u8 copy; +} ArcHeader ATTRIBUTE_ALIGN(8); + +/* sizeof(AutoHeapstrc) == 0xC */ +typedef struct AutoHeapstrc_ { + /* 0x00 */ int seqLen; + /* 0x04 */ int bankLen; + /* 0x08 */ int waveLen; +} AutoHeapstrc; + +/* sizeof(DataHeapstrc) == 0x8 */ +typedef struct DataHeapstrc_ { + /* 0x00 */ int dataLen; + /* 0x04 */ int autoLen; +} DataHeapstrc; + +/* sizeof(delay) == 0x30 */ +typedef struct delay_ { + /* 0x00 */ u8 _00[0x30 - 0x00]; /* TODO */ +} delay; + +/* sizeof(commonch) == 0x20 */ +typedef struct commonch_ { + /* 0x00 */ u8 _00; + /* 0x01 */ u8 _01; + /* 0x02 */ u8 _02; + /* 0x03 */ u8 _03; + /* 0x04 */ u8 _04; + /* 0x05 */ u8 _05; + /* 0x06 */ u8 _06; + /* 0x07 */ u8 _07; + /* 0x08 */ u16 _08; + /* 0x0A */ u16 _0A; + /* 0x0C */ u16 _0C; + /* 0x0E */ u16 _0E; + /* 0x10 */ void* _10; + /* 0x14 */ int _14; + /* 0x18 */ u8 _18; + /* 0x19 */ u8 _19; + /* 0x1A */ u8 _1A; + /* 0x1B */ u8 _1B[4]; +} commonch; + +/* sizeof(driverch) == 0x18 */ +typedef struct driverch_ { + /* 0x00 */ u8 _00; + /* 0x01 */ u8 _01; + /* 0x02 */ u8 _02; + /* 0x03 */ u8 _03; + /* 0x04 */ u8 _04; + /* 0x05 */ u8 _05; + /* 0x06 */ u8 _06; + /* 0x07 */ u8 _07; + /* 0x08 */ u16 _08; + /* 0x0A */ u16 _0A; + /* 0x0C */ u32 _0C; + /* 0x10 */ u8* _10; + /* 0x14 */ s16 _14; + /* 0x16 */ s16 _16; +} driverch; + +/* sizeof(phase) == 0x01 */ +typedef struct phase_ { + /* 0x00 */ u8 _00; +} phase; + +/* sizeof(drvparam) == 0x1C */ +typedef struct drvparam_ { + /* 0x00 */ u8 _00; + /* 0x01 */ u8 _01; + /* 0x02 */ u8 _02; + /* 0x03 */ u8 _03; + /* 0x04 */ phase phase; + /* 0x08 */ f32 pitch; + /* 0x0C */ f32 volume; + /* 0x10 */ int _10; + /* 0x14 */ int _14; + /* 0x18 */ u8 _18; + /* 0x19 */ u8 _19; + /* 0x1A */ u16 _1A; +} drvparam; + +/* sizeof(envdat) == 0x04 */ +typedef struct envdat_ { + /* 0x00 */ s16 key; + /* 0x02 */ s16 value; +} envdat; + +/* sizeof(envp) == 0x20 */ +typedef struct envp_ { + /* 0x00 */ u8 state; + /* 0x01 */ u8 envelope_table_row; + /* 0x02 */ s16 key; + /* 0x04 */ f32 min_vol; + /* 0x08 */ f32 attack; + /* 0x0C */ f32 decay_release; + /* 0x10 */ f32 volume; + /* 0x14 */ f32 target_volume; + /* 0x18 */ f32 _18; + /* 0x1C */ envdat* pEnvData; +} envp; + +typedef union SOUNDID_ { + struct { + u8 wave_id; + u8 inst_id; + u8 _02; + u8 _03; + }; + + u32 uint32; +} SOUNDID; + +typedef struct note_ note; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/jaudio_NES/audiowork.h b/include/jaudio_NES/audiowork.h new file mode 100644 index 00000000..f3f81892 --- /dev/null +++ b/include/jaudio_NES/audiowork.h @@ -0,0 +1,14 @@ +#ifndef AUDIOWORK_H +#define AUDIOWORK_H + +#include "types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/jaudio_NES/sample.h b/include/jaudio_NES/sample.h new file mode 100644 index 00000000..3acde41c --- /dev/null +++ b/include/jaudio_NES/sample.h @@ -0,0 +1,12 @@ +#ifndef SAMPLE_H +#define SAMPLE_H + +#include "types.h" + +extern void Jac_imixcopy(s16* ta, s16* tb, s16* td, s32 s); +extern void Jac_bcopyfast(u32* src, u32* dest, u32 size); +extern void Jac_bcopy(void* src, void* dest, s32 size); +extern void Jac_bzerofast(u32* dest, u32 size); +extern void Jac_bzero(void* dest, s32 size); + +#endif diff --git a/src/static/jaudio_NES/sample.c b/src/static/jaudio_NES/sample.c new file mode 100644 index 00000000..5f3997b3 --- /dev/null +++ b/src/static/jaudio_NES/sample.c @@ -0,0 +1,116 @@ +#include "jaudio_NES/sample.h" + +#include "dolphin/os/OSCache.h" + +extern void Jac_imixcopy(s16* ta, s16* tb, s16* td, s32 s) { + for (s; s > 0; s--) { + *td++ = *ta++; + *td++ = *tb++; + } +} + +extern void Jac_bcopyfast(u32* src, u32* dest, u32 size) { + u32 copy1, copy2, copy3, copy4; + for (size = size / (4 * sizeof(u32)); size != 0; size--) { + copy1 = *src++; + copy2 = *src++; + copy3 = *src++; + copy4 = *src++; + *dest++ = copy1; + *dest++ = copy2; + *dest++ = copy3; + *dest++ = copy4; + } +} + +extern void Jac_bcopy(void* src, void* dest, s32 size) { + u8 alignedSrc, alignedDst; + u32* usrc; + u32* udest; + + u8* bsrc = (u8*)src; + u8* bdest = (u8*)dest; + + alignedSrc = (reinterpret_cast(bsrc) & 0x03); + alignedDst = (reinterpret_cast(bdest) & 0x03); + if ((alignedSrc) == (alignedDst) && (size & 0x0f) == 0) { + Jac_bcopyfast((u32*)src, (u32*)dest, size); + } else if ((alignedSrc) == (alignedDst) && (size >= 16)) { + if ((alignedSrc) != 0) { + for (alignedSrc = 4 - alignedSrc; (alignedSrc) != 0; alignedSrc--) { + *bdest++ = (u32) * (bsrc)++; + size--; + } + } + + udest = (u32*)bdest; + usrc = (u32*)bsrc; + + for (; size >= 4; size -= 4) { + *udest++ = *usrc++; + } + + if (size != 0) { + bdest = (u8*)udest; + bsrc = (u8*)usrc; + + for (; size > 0; size--) { + *bdest++ = (u32)*bsrc++; + } + } + } else { + for (; size > 0; size--) { + *bdest++ = (u32)*bsrc++; + } + } +} + +extern void Jac_bzerofast(u32* dest, u32 size) { + for (size = size / (4 * sizeof(u32)); size != 0; size--) { + *dest++ = 0; + *dest++ = 0; + *dest++ = 0; + *dest++ = 0; + } +} + +extern void Jac_bzero(void* dest, s32 size) { + u32* udest; + u8* bdest = (u8*)dest; + u8 alignedbitsDst = reinterpret_cast(bdest) & 0x3; + if (alignedbitsDst == 0) { + if ((size & 0x1f) == 0) { + DCZeroRange(dest, size); + return; + } + if ((size & 0xf) == 0) { + Jac_bzerofast((u32*)dest, size); + return; + } + } + + if (size >= 16) { + if (alignedbitsDst != 0) { + for (alignedbitsDst = 4 - alignedbitsDst; alignedbitsDst != 0; alignedbitsDst--) { + *bdest++ = 0; + size--; + } + } + + udest = (u32*)bdest; + for (; size >= 4; size -= 4) { + *udest++ = 0; + } + + if (size != 0) { + bdest = (u8*)udest; + for (; size > 0; size--) { + *bdest++ = 0; + } + } + } else { + for (; size > 0; size--) { + *bdest++ = 0; + } + } +}