--It doesn't seem like I have to worry about PCECD anymore.
--I also don't think I can validate the CRC32 for .SMV because I don't have the original ROM bytes. This was probably used to compare a ROM loaded by Snes9x with the movie. I added it to the movie header in case a core could utilize it.
--I don't think the "start data" of a .VBM is important. After looking at the docs again, it's clear that it's just another term for either the movie's savestate or SRAM, and that the related note about controller data is just an approximation.
-Added Platforms for Import functions that were missing them.
-Merged the ImportSMV functions all into one; most of the stuff is the same.
-Implemented .SMV 1.51 handling. My Arcade's Revenge run synced and beat the first level!
--This also seems to work for 1.52; 3295S finished Act 2.
--1.53 seems identical as well...3587S syncs all the way through.
-Next comes ImportZMV.
--Added platform name.
--Handled input.
---The input seems reasonable, but the frame counts were originally off by 2. Because the docs say "The controller data contains <number_of_frames + 1> frames," I connected the two and discarded the first frame read. I also noticed that Snes9x first accepts input at frame 0 whereas BizHawk does at frame 1, so that makes up for the other frame. I think this is correct.
--Apparently, Snes9x adds garbage bytes to the metadata when you play a movie. The stuff we want, however, is before a NULL character. As such, I refurbished RemoveNull into NullTerminated, which takes a string and returns everything before the first NULL character. Now the author will be displayed properly no matter what.
-Removed an unncessary dependence to Global.Emulator.SystemId in Get/SetControllersAsMnemonic which made it so that importing a movie without loading a game resulted in blank frames.
-ImportVBM now actually appends the frames it parses. Looks pretty good.
--Note that BizHawk cannot currently do anything with the platform (GB, GBC, GBA, SGB), nor are any of the "other" buttons handleable.
2) Ram Poke - fix poking of signed/hex values, set the signed value to the value of the address on load, other misc fixes regarding signed
3) Hex Editor - add Poke to menu/context menu and Ctrl+P hotkey
--I think the proper way to obtain this is through the metadata, which I still don't know how to handle.
-Fixed the savestate offset.
-Parsed out the CRC32 of the ROM, though I haven't done anything to validate this, which is probably a good idea.
--Handled authors, gametype, systemid, coreversion, rom.sha256, moviesram.*, savestate, and subtitles.
--Skipped port1, port2, controlsversion, projectid, saveframe, lagcounter, pollcounters, hostmemory, screenshot, sram.*, rrdata, starttime.*, savetime.*, and prefix.
---I don't think any of these are useful for us, at least not at this stage.
---The other *.sha256 files will be useful if / when BS-X, Sufami turbo, and SGB are implemented.
--Handled flags.
---Handled resets.
---Disallowed subframes and delayed resets.
-.LSMV is good enough for now. .SMV and .ZMV coming next.
--Haven't done anything with the flags because I don't know what they are supposed to do yet.
--Speedy Gonzales v2 doesn't sync after being converted, but I don't think that's my fault.
-Flags and other data will be parsed soon.
2. Changed StopOnEnd to StopOnFrame. This expands the functionality so that you can tell the emulator to run and then stop at a predetermined point.
3. Expanded the functionality of RewindToFrame to handle more cases. Now you can go back or even forward to a frame and it handles the execution and greenzone appropriately.
4. Due to the change in structure some code was changed to check the index of the first and last saved states in the greenzone rather than relying on the size of the saved state list.
5. Changed the list of saved states in the movie log from a list of byte[] to a list of structures (the structure has an int for the index and byte[] for the state).
6. Saved an init state in the movie log. This is used to go back to the beginning if the beginning of the movie is no longer in the list of saved states.
7. Expanded the AddState and SetFrameAt logic in the movie log to account for the fact that the size of the saved state list is now capped.
8. Fixed a bug in the log interpretation for SMS.
9. Fixed a bug in the sms virtual controller, buttons 1 and 2 were hooked to the wrong objects.
10. Fixed the tastudio listview to show lag as pink.
-Made it so that each new search zeroes out the change count.
--This prevents all non-zero items from starting out with 1 change.
--A similar fix needs to be applied to Ram Watch (Filing issue...).
-Allowed changing data size, endian, and unaligned address setting in the middle of the search and maintaining valid values, fixing Issue 72 (The last open Ram Search issue until my "Difference" idea is hopefully accepted).
--Unlike my previous model, this does not align unaligned addresses; all it does is change the size / endian and PeekAddress.
--It does remove unaligned addresses, however, if you have it set to.
--This version converts System Bus instantly whereas the previous version stopped responding.
2. Fixed issues with the light blue current frame pointer in tastudio
3. Removed a totally useless index that was being kept seperately in the movie log.
4. Moved the tastudio update after the check to see if the rest of the saved state list is valid.
5. Changed some function/variable names related to the movie log for clarity.