I've beaten the game once, but not with all the items. My flashcart says it has a 'dangerous' cheat to enable all items, but it doesn't appear to alter the quantity of treasures.
So far I've started collecting several .sav versions and have begun to compare their contents to try and isolate where information is stored, and where checksums are stored.
(Decimal character number (starting at 1), 4 hex numbers 0 indicating no change (usually), 4 decimal numbers, thoughts, hex address (0 start))
I've also written a C program using Wikipedia's pages as a resource to explain the algorithm and typical polynomial factors used for 16 bit crcs. All current permutations I've attempted have resulted in failure.
I'm starting to think I might need to run the checksum over a range other than 0x1c3c to 0x1c5b. Alternately seed it differently (0, 0xffff, and 'checksum' from the main segment), use a different set of coefficients (using LSB first: 0xa001 0x8408 0xedd1 0xa6bc 0x91a0 ), or something other than crc-16 style checksums.
I have also yet to experiment patching a valid set of items from one save in to another to see if they are still valid.
So far I've started collecting several .sav versions and have begun to compare their contents to try and isolate where information is stored, and where checksums are stored.
(Decimal character number (starting at 1), 4 hex numbers 0 indicating no change (usually), 4 decimal numbers, thoughts, hex address (0 start))
Code:
ÂÂÂÂ972ÂÂ F1ÂÂ E8ÂÂ 4ÂÂÂÂÂÂÂÂÂÂ 114ÂÂ241ÂÂ232ÂÂÂÂ4ÂÂÂÂChecksum?ÂÂÂÂÂÂÂÂ8ÂÂÂÂÂÂÂÂÂÂ
ÂÂ 104FÂÂ 0ÂÂÂÂ7FÂÂ 80ÂÂÂÂÂÂÂÂÂÂ 79ÂÂÂÂ0ÂÂ127ÂÂ128ÂÂÂÂChecksum?ÂÂÂÂÂÂÂÂ9ÂÂÂÂÂÂÂÂÂÂ
ÂÂ 11FFÂÂ 0ÂÂÂÂ0ÂÂÂÂ0ÂÂÂÂÂÂÂÂÂÂ 255ÂÂÂÂ0ÂÂÂÂ0ÂÂÂÂ0ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ
ÂÂ 12FFÂÂ 0ÂÂÂÂ0ÂÂÂÂ0ÂÂÂÂÂÂÂÂÂÂ 255ÂÂÂÂ0ÂÂÂÂ0ÂÂÂÂ0ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ
ÂÂ 17DCÂÂ DAÂÂ 48ÂÂ 96ÂÂÂÂÂÂÂÂÂÂ220ÂÂ218ÂÂ 72ÂÂ150ÂÂÂÂChecksum?ÂÂÂÂÂÂÂÂ10ÂÂÂÂÂÂÂÂ
ÂÂ 1843ÂÂ 3EÂÂ 4EÂÂ 4FÂÂÂÂÂÂÂÂÂÂ 67ÂÂ 62ÂÂ 78ÂÂ 79ÂÂÂÂChecksum?ÂÂÂÂÂÂÂÂ11ÂÂÂÂÂÂÂÂ
ÂÂ 232AÂÂ 0ÂÂÂÂ31ÂÂ 0ÂÂÂÂÂÂÂÂÂÂÂÂ42ÂÂÂÂ0ÂÂ 49ÂÂÂÂ0ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ
ÂÂ 261ÂÂÂÂ0ÂÂÂÂ2ÂÂÂÂ0ÂÂÂÂÂÂÂÂÂÂÂÂ 1ÂÂÂÂ0ÂÂÂÂ2ÂÂÂÂ0ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ
ÂÂ 274ÂÂÂÂ0ÂÂÂÂ5ÂÂÂÂ0ÂÂÂÂÂÂÂÂÂÂÂÂ 4ÂÂÂÂ0ÂÂÂÂ5ÂÂÂÂ0ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ
ÂÂ 290ÂÂÂÂ0ÂÂÂÂ7BÂÂ 0ÂÂÂÂÂÂÂÂÂÂÂÂ 0ÂÂÂÂ0ÂÂ123ÂÂÂÂ0ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ
ÂÂ 30E0ÂÂ 0ÂÂÂÂE6ÂÂ 0ÂÂÂÂÂÂÂÂÂÂ 224ÂÂÂÂ0ÂÂ230ÂÂÂÂ0ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ
ÂÂ 311ÂÂÂÂ0ÂÂÂÂFBÂÂ 0ÂÂÂÂÂÂÂÂÂÂÂÂ 1ÂÂÂÂ0ÂÂ251ÂÂÂÂ0ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ
ÂÂ 320ÂÂÂÂ0ÂÂÂÂFFÂÂ 0ÂÂÂÂÂÂÂÂÂÂÂÂ 0ÂÂÂÂ0ÂÂ255ÂÂÂÂ0ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ
ÂÂ 340ÂÂÂÂ0ÂÂÂÂ20ÂÂ 0ÂÂÂÂÂÂÂÂÂÂÂÂ 0ÂÂÂÂ0ÂÂ 32ÂÂÂÂ0ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ
ÂÂ 430ÂÂÂÂ0ÂÂÂÂ2ÂÂÂÂ0ÂÂÂÂÂÂÂÂÂÂÂÂ 0ÂÂÂÂ0ÂÂÂÂ2ÂÂÂÂ0ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ
ÂÂ20566ÂÂ 9EÂÂ 9FÂÂ 73ÂÂÂÂÂÂÂÂÂÂ102ÂÂ158ÂÂ159ÂÂ115ÂÂÂÂChecksum?ÂÂÂÂÂÂÂÂCCÂÂÂÂÂÂÂÂ
ÂÂ2061BÂÂ 1AÂÂ 0ÂÂÂÂ19ÂÂÂÂÂÂÂÂÂÂ 27ÂÂ 26ÂÂÂÂ0ÂÂ 25ÂÂÂÂChecksum?ÂÂÂÂÂÂÂÂCDÂÂÂÂÂÂÂÂ
33980ÂÂÂÂ18ÂÂ 0ÂÂÂÂ0ÂÂÂÂÂÂÂÂÂÂÂÂ 0ÂÂ 24ÂÂÂÂ0ÂÂÂÂ0ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ
33990ÂÂÂÂ0ÂÂÂÂ0ÂÂÂÂ10ÂÂÂÂÂÂÂÂÂÂÂÂ0ÂÂÂÂ0ÂÂÂÂ0ÂÂ 16ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ
3583C2ÂÂ 70ÂÂ C0ÂÂ 2BÂÂÂÂÂÂÂÂÂÂ194ÂÂ112ÂÂ192ÂÂ 43ÂÂÂÂChecksum?ÂÂÂÂÂÂÂÂDFEÂÂÂÂÂÂÂÂ
358483ÂÂ 69ÂÂ 41ÂÂ BDÂÂÂÂÂÂÂÂÂÂ131ÂÂ105ÂÂ 65ÂÂ189ÂÂÂÂChecksum?ÂÂÂÂÂÂÂÂDFFÂÂÂÂÂÂÂÂ
359372ÂÂ F1ÂÂ E8ÂÂ 4ÂÂÂÂÂÂÂÂÂÂ 114ÂÂ241ÂÂ232ÂÂÂÂ4ÂÂÂÂChecksum?ÂÂÂÂÂÂÂÂE08ÂÂÂÂÂÂÂÂ
35944FÂÂ 0ÂÂÂÂ7FÂÂ 80ÂÂÂÂÂÂÂÂÂÂ 79ÂÂÂÂ0ÂÂ127ÂÂ128ÂÂÂÂChecksum?ÂÂÂÂÂÂÂÂE09ÂÂÂÂÂÂÂÂ
3595FFÂÂ 0ÂÂÂÂ0ÂÂÂÂ0ÂÂÂÂÂÂÂÂÂÂ 255ÂÂÂÂ0ÂÂÂÂ0ÂÂÂÂ0ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ
3596FFÂÂ 0ÂÂÂÂ0ÂÂÂÂ0ÂÂÂÂÂÂÂÂÂÂ 255ÂÂÂÂ0ÂÂÂÂ0ÂÂÂÂ0ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ
3601DCÂÂ DAÂÂ 48ÂÂ 96ÂÂÂÂÂÂÂÂÂÂ220ÂÂ218ÂÂ 72ÂÂ150ÂÂÂÂChecksum?ÂÂÂÂÂÂÂÂE10ÂÂÂÂÂÂÂÂ
360243ÂÂ 3EÂÂ 4EÂÂ 4FÂÂÂÂÂÂÂÂÂÂ 67ÂÂ 62ÂÂ 78ÂÂ 79ÂÂÂÂChecksum?ÂÂÂÂÂÂÂÂE11ÂÂÂÂÂÂÂÂ
36072AÂÂ 0ÂÂÂÂ31ÂÂ 0ÂÂÂÂÂÂÂÂÂÂÂÂ42ÂÂÂÂ0ÂÂ 49ÂÂÂÂ0ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ
36101ÂÂÂÂ0ÂÂÂÂ2ÂÂÂÂ0ÂÂÂÂÂÂÂÂÂÂÂÂ 1ÂÂÂÂ0ÂÂÂÂ2ÂÂÂÂ0ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ
36114ÂÂÂÂ0ÂÂÂÂ5ÂÂÂÂ0ÂÂÂÂÂÂÂÂÂÂÂÂ 4ÂÂÂÂ0ÂÂÂÂ5ÂÂÂÂ0ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ
36130ÂÂÂÂ0ÂÂÂÂ7BÂÂ 0ÂÂÂÂÂÂÂÂÂÂÂÂ 0ÂÂÂÂ0ÂÂ123ÂÂÂÂ0ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ
3614E0ÂÂ 0ÂÂÂÂE6ÂÂ 0ÂÂÂÂÂÂÂÂÂÂ 224ÂÂÂÂ0ÂÂ230ÂÂÂÂ0ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ
36151ÂÂÂÂ0ÂÂÂÂFBÂÂ 0ÂÂÂÂÂÂÂÂÂÂÂÂ 1ÂÂÂÂ0ÂÂ251ÂÂÂÂ0ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ
36160ÂÂÂÂ0ÂÂÂÂFFÂÂ 0ÂÂÂÂÂÂÂÂÂÂÂÂ 0ÂÂÂÂ0ÂÂ255ÂÂÂÂ0ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ
36180ÂÂÂÂ0ÂÂÂÂ20ÂÂ 0ÂÂÂÂÂÂÂÂÂÂÂÂ 0ÂÂÂÂ0ÂÂ 32ÂÂÂÂ0ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ
36270ÂÂÂÂ0ÂÂÂÂ2ÂÂÂÂ0ÂÂÂÂÂÂÂÂÂÂÂÂ 0ÂÂÂÂ0ÂÂÂÂ2ÂÂÂÂ0ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ
378966ÂÂ 9EÂÂ 9FÂÂ 73ÂÂÂÂÂÂÂÂÂÂ102ÂÂ158ÂÂ159ÂÂ115ÂÂÂÂMoney little (lowECCÂÂÂÂÂÂÂÂ
37901BÂÂ 1AÂÂ 0ÂÂÂÂ19ÂÂÂÂÂÂÂÂÂÂ 27ÂÂ 26ÂÂÂÂ0ÂÂ 25ÂÂÂÂMoney little (uppECDÂÂÂÂÂÂÂÂ
69820ÂÂÂÂ18ÂÂ 0ÂÂÂÂ0ÂÂÂÂÂÂÂÂÂÂÂÂ 0ÂÂ 24ÂÂÂÂ0ÂÂÂÂ0ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ
69830ÂÂÂÂ0ÂÂÂÂ0ÂÂÂÂ10ÂÂÂÂÂÂÂÂÂÂÂÂ0ÂÂÂÂ0ÂÂÂÂ0ÂÂ 16ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ
7167C2ÂÂ 70ÂÂ C0ÂÂ 2BÂÂÂÂÂÂÂÂÂÂ194ÂÂ112ÂÂ192ÂÂ 43ÂÂÂÂMoney/Checksum?ÂÂ1BFEÂÂÂÂÂÂ
716883ÂÂ 69ÂÂ 41ÂÂ BDÂÂÂÂÂÂÂÂÂÂ131ÂÂ105ÂÂ 65ÂÂ189ÂÂÂÂMoney/Checksum?ÂÂ1BFFÂÂÂÂÂÂ
723315ÂÂ 16ÂÂ 0ÂÂÂÂ0ÂÂÂÂÂÂÂÂÂÂÂÂ21ÂÂ 22ÂÂÂÂ0ÂÂÂÂ0ItemÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ
723712ÂÂ 13ÂÂ 0ÂÂÂÂ0ÂÂÂÂÂÂÂÂÂÂÂÂ18ÂÂ 19ÂÂÂÂ0ÂÂÂÂ0ItemÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ
724719ÂÂ 0ÂÂÂÂ0ÂÂÂÂ1AÂÂÂÂÂÂÂÂÂÂ 25ÂÂÂÂ0ÂÂÂÂ0ÂÂ 26ItemÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ
7295B9ÂÂ 8BÂÂ 0ÂÂÂÂ89ÂÂÂÂÂÂÂÂÂÂ185ÂÂ139ÂÂÂÂ0ÂÂ137ÂÂÂÂItem Checksum?ÂÂ 1C7EÂÂÂÂÂÂ
7296ACÂÂ B7ÂÂ 0ÂÂÂÂ98ÂÂÂÂÂÂÂÂÂÂ172ÂÂ183ÂÂÂÂ0ÂÂ152ÂÂÂÂItem Checksum?ÂÂ 1C7FÂÂÂÂÂÂ
736115ÂÂ 16ÂÂ 0ÂÂÂÂ0ÂÂÂÂÂÂÂÂÂÂÂÂ21ÂÂ 22ÂÂÂÂ0ÂÂÂÂ0ItemÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ
736512ÂÂ 13ÂÂ 0ÂÂÂÂ0ÂÂÂÂÂÂÂÂÂÂÂÂ18ÂÂ 19ÂÂÂÂ0ÂÂÂÂ0ItemÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ
737519ÂÂ 0ÂÂÂÂ0ÂÂÂÂ1AÂÂÂÂÂÂÂÂÂÂ 25ÂÂÂÂ0ÂÂÂÂ0ÂÂ 26ItemÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ
7423B9ÂÂ 8BÂÂ 0ÂÂÂÂ89ÂÂÂÂÂÂÂÂÂÂ185ÂÂ139ÂÂÂÂ0ÂÂ137ÂÂÂÂItem Checksum?ÂÂ 1CFEÂÂÂÂÂÂ
7424ACÂÂ B7ÂÂ 0ÂÂÂÂ98ÂÂÂÂÂÂÂÂÂÂ172ÂÂ183ÂÂÂÂ0ÂÂ152ÂÂÂÂItem Checksum?ÂÂ 1CFF
I've also written a C program using Wikipedia's pages as a resource to explain the algorithm and typical polynomial factors used for 16 bit crcs. All current permutations I've attempted have resulted in failure.
I'm starting to think I might need to run the checksum over a range other than 0x1c3c to 0x1c5b. Alternately seed it differently (0, 0xffff, and 'checksum' from the main segment), use a different set of coefficients (using LSB first: 0xa001 0x8408 0xedd1 0xa6bc 0x91a0 ), or something other than crc-16 style checksums.
I have also yet to experiment patching a valid set of items from one save in to another to see if they are still valid.