toolsbin.rar: s.bat: convert .pj (project 64 save state) into sparse format (.ram) m.bat: makes miniusfs from .ram and an existing .lib recon.exe: general purpose sparse rom tool (use for making LIBs, etc.) sp64.exe: takes an unformatted file (ROM or save state) and conerts it to sparse format. rom2usf.exe: take a .ram and a sparse ROM and make a .usf psfpoint.exe: a recompiled version of psfpoint, much larger but loads faster on my system sp6404-07.rar: The source to sp64.exe recon0407.rar: The source to recon.exe rom2usf0407.rar: The source to rom2usf.exe plugin.rar: Plugins needed for PJ64 USF. Use exactly these, no substitutes. pj64-04-06bin.rar: PJ64 USF, instructions below. usf.reg will set up the settings the way I have them here. usfpj640407.rar: Source to project64.exe in_usf49: The latest version of the USF player pj64player49.rar: Source to the latest version of the USF player sm64st.ips: Use this on a V64 format USA Super Mario 64 ROM to convert it to a music player. You can use this to test out the things I describe here. Select a different track by changing what's loaded at offset 0x3b28 in the ROM. ---- Rough and vague instructions on using PJ64 USF: *Make sure that the RSP plugin is set to NOT send Audio Lists to the Audio Plugin. 1. Select "Create Sparse ROM" from the System menu 2. Open the ROM you want to use 3. Wait until the song loops 4. Select "End Emulation" from the File menu A save state will be automatically made and "cleaned". The sparse ROM will be created as c:\n64dev\sm64st\sparse.bin (sorry, you probably want to change this) and a record of what ROM ranges are used is created as c:\windows\desktop\pilog.txt. You can then: 1. Use SP64.exe to create a sparse form of the .pj save state 2. Use rom2usf to create a USF from the sparsified save state and ROM. Making a USFlib or miniUSF is a little more complicated: 1. Save the sparse.bin for each track (rename with track name or whatever) 2. Use SP64.exe to create a sparse form of the save state for each track 3. Use recon foo.ram ram.lib l for all .ram (sparsified save state) files, to merge them all into ram.lib 4. Use recon foo.bin bin.lib l for all .bin (sparsified ROM) files, to merge them all into bin.lib 5. Use recon foo.ram foo.dif ram.lib c for all .ram files, to create a record of the differences in each. 6. Use rom2usf bin.lib ram.lib whatever.usflib to make a USFlib for the set. 7. Use rom2usf NULL foo.ram foo.miniusf to make a miniUSF for each track. Everything is currently compiled for Super Mario 64. Most of the changes you'll have to make are in tracer.c. This contains a function for each type of memory access so that I can track what memory is read and written. The primary change will be to have the tracer activate at whatever point you need it to, for Mario 64 this was 0x80248b24 so just replace that with whatever address you have. I also have a check for detecting a loop in Mario 64's music, this will be entirely useless to you so you'll probably want to remove it (unless you've figured out something similar for 007). I do the save cleaning in Machine_CleanSave in cpu.c and the sparse ROM saving in CloseCPU in cpu.c (where I also call Machine_CleanSave). The ROM size specific stuff is mostly in dma.c (malloc(0x100000) should be malloc(rom_size/8), and the loop below it should be similarly changed) and cpu.c (the for loop in line 190 should go to rom_size/8), but there might be more. You should be able to change the size in the player by simply RomFileSize in rom.c to whatever size you need instead of 0x800000. The other tools should be pretty straightforward, just look for 0x800000 and change it. If stuff doesn't compile or doesn't work first try it with Mario 64 and if that doesn't work I'll see what I can do. -hcs