sanni
5cefd8362c
Update FLASH.ino
2023-02-04 15:51:12 +01:00
PsyK0p4T
a2c94b7215
Add support for Beggar Prince rev.1
...
Fixes cart size, rom header provides wrong values
2023-01-31 00:57:19 +01:00
sanni
032000d369
Disable addons by default
2023-01-17 08:29:05 +01:00
sanni
c8bfc64009
Change 2022 to 2023 in about screen
2023-01-16 12:35:48 +01:00
PsyK0p4T
f471a7e394
Fix game using sram
...
"Virtual Fishing" moved to carts using sram
2023-01-16 02:15:24 +01:00
PsyK0p4T
ae55f07b2f
Add progress bar
2023-01-16 01:12:30 +01:00
sanni
978fc80287
Fix display flicker on HW5 with Arc, Atari, Fairchild and Ody2 size/mapper selection
2023-01-15 15:25:24 +01:00
PsyK0p4T
c77ad6da2e
Update PCE.ino
...
Add support for "Populous (Japan)"
2023-01-11 01:01:21 +01:00
PsyK0p4T
3725c017f7
Update PCE.ino
...
32KB ROM size detection added :
- "Games Express CD Card (Japan)" is now dumped fine
- helps to see if another card is badly inserted/recognized
2023-01-11 00:16:46 +01:00
sanni
1d57169447
Add support for Demons of Asteborg (thx to skaman)
2023-01-04 15:35:13 +01:00
sanni
248a1d9af5
V12.0: Add Atari 2600, Emerson Arcadia 2001, Fairchild Channel F, Magnavox Odyssey 2 modules (thx to skaman)
2023-01-03 19:33:34 +01:00
nsx0r
04f80edc1e
addes mappers 56 + 236
...
addes mappers 56 + 236
2022-12-30 08:24:54 +01:00
splash5
cf9b70554f
Fix for NES "TMNT2" (Japan, VRC4)
2022-12-25 18:45:14 +08:00
nsx0r
1895ba1442
added mappers 31, 57, 214 + fixes
...
added mapper 31, 57, 214
fixed 94, 97, 180 for bus conflicts
fixed mapper 73 (see discussion https://github.com/sanni/cartreader/discussions/657 about Salamander)
merged 200+212
2022-12-22 21:55:00 +01:00
sanni
d977b14cf4
Fix MD Zero Wing (E) (thx to jaffa225)
...
More info: https://github.com/sanni/cartreader/issues/664
2022-12-20 10:31:35 +01:00
nsx0r
2d3eeed53a
fixed mapper 23
...
fixed mapper 23, tested working with Ganbare Goemon 2
2022-12-14 21:46:39 +01:00
nsx0r
bff292435e
mapper 209 dumps the same as 35, 90 and 211
...
mapper 209 dumps the same as 35, 90 and 211
also added info about unused mappers (20, 84, 100,101, 151, 186 and 248)
2022-12-14 13:15:32 +01:00
sanni
d13d8f6817
Merge pull request #659 from splash5/famicom
...
Add NES mapper 209
2022-12-14 11:52:50 +01:00
splash5
36c01f4c8d
Add NES mapper 209
...
Tested with "Shin Samurai Spirits 2 (JY-083)"
2022-12-14 11:47:53 +08:00
nsx0r
b5cd20566e
fixed mapper 63
...
fixed mapper 63, tested working with Powerful 255-in-1 (CH-011 PCB)
2022-12-13 19:11:55 +01:00
sanni
94fa2e8182
Merge pull request #655 from splash5/snes-akaj
...
Fix SNES "Kakinoki Shougi (Japan)"
2022-12-11 11:08:49 +01:00
splash5
eea4fb365f
Do compareCRC when reading game in SFM.
...
Don't rename when calculate checksum, just use filename and folder.
2022-12-11 10:49:07 +08:00
nsx0r
0f1a37e6d3
Update NES.ino
2022-12-11 00:00:57 +01:00
nsx0r
95e795023d
[WIP] solving mappers with bus conflicts
...
solving mappers with bus conflicts, mapper 2 is fixed, more to come after more testing
2022-12-10 15:05:16 +01:00
nsx0r
a18434b8fc
added NES mappers 59+63+113+126+134+174
...
added NES mappers 59+63+113+126+134+174
2022-12-08 16:10:05 +01:00
nsx0r
eba530437f
added NES mappers 46+52+212
...
added NES mappers 46+52+212
2022-12-06 16:48:53 +01:00
nsx0r
86c5e78870
added NES mappers 42+142+157+162+163+177
...
added NES mappers 42+142+157+162+163+177
2022-12-05 20:35:51 +01:00
nsx0r
f258b1ec76
addes NES mappers 178+227+241
...
addes NES mappers 178+227+241
2022-12-04 08:45:49 +01:00
nsx0r
2c477ddae1
added NES mapper 176
...
added NES mapper 176, tested working
2022-11-24 22:18:46 +01:00
splash5
ed1c1f0bea
Fix SNES Daikaijuu Monogatari 2
2022-11-24 17:08:41 +08:00
nsx0r
36fa976b53
added NES mapper 28
...
added NES mapper 28, tested working with 2x Action 53 cartridges
2022-11-19 09:04:06 +01:00
sanni
46dd333bd4
Fix NES mapper selection
2022-11-18 10:46:13 +01:00
nsx0r
4cf2f761ee
adjusting min/max sizes for some mappers
...
adjusting min/max sizes for some mappers, this is required to dump some recent carts:
Lucky Penguin is 64k mapper 2
Project Blue is 512k mapper 34
2022-11-18 07:47:04 +01:00
sanni
8dcb841109
Up version number
2022-11-12 20:25:51 +01:00
Ancyker
e806b39658
Merge pull request #1 from sanni/master
...
Update with master
2022-11-12 14:15:19 -05:00
Remy Starshade
aee632642d
Add Voltage Selection Module
2022-11-12 14:13:22 -05:00
scrap-a
ca23277b5a
Fix Sonic & Knuckles
2022-11-13 03:05:19 +09:00
nsx0r
cf8e3f9b21
fixed mapper 225/255
...
i finally got 2 carts to confirm this is working with this fix
2022-11-11 12:08:17 +01:00
nsx0r
39988d2b1c
fixed mapper 226
...
forgot to set the high bit for bigger carts
2022-11-11 10:53:13 +01:00
nsx0r
9decd85848
added NES mapper 226
...
added NES mapper 226, tested working with NES pirate multicart 42-in-1
2022-11-10 23:20:23 +01:00
nsx0r
fdc1911b5e
fixing NES mapper 228
...
that *should* work
2022-11-09 10:54:58 +01:00
nsx0r
8b493c4447
added NES mapper 228 - UNTESTED
...
added NES mapper 228 (Action 52 + Cheetahmen II) - NEED TESTING
2022-11-08 12:49:42 +01:00
Vincent Pelletier
78c05c826c
Cart_Reader.ino: Move definitions after all forward declarations
...
It seems the Arduino IDE picks the position of the first definition to
insert all auto-generated forward declarations. This fails to compile if
any of these generated forward declarations references a type included
later.
So, reorder the code a bit so the first definition happens strictly after
the last inclusion.
2022-11-05 05:04:37 +00:00
Vincent Pelletier
ab9e36e12e
Cart_Reader.ino: Comment rewind_line implementation
...
The logic of this function is not immediately clear, so comment it
extensively.
2022-11-05 05:04:37 +00:00
Vincent Pelletier
e334edb4e5
Cart_Reader.ino: Simplify checkButton nesting
...
Also, fixes a compiler warning on the HW4/5 function, which could reach
the function's end without a "return" statement.
2022-11-05 05:04:37 +00:00
Vincent Pelletier
7b1e74c1fc
Cart_Reader.ino: Always return a value from SERIAL_MONITOR checkButton
2022-11-05 01:24:19 +00:00
Vincent Pelletier
6de1a34cd7
Cart_Reader.ino: Catch-all condition for page 3
...
Makes it clear to the compiler that no other page exist, and hence
option_offset and num_answers are always initialised.
2022-11-05 01:02:18 +00:00
Vincent Pelletier
4d3cdd9004
NES.ino: Always set browseDatabase
...
Fixes a compiler warning.
2022-11-05 00:43:24 +00:00
nsx0r
43669ce181
addes NES mapper 111
...
addes NES mapper 111
2022-11-02 12:27:08 +01:00
nsx0r
bc0923d1ac
actually fix all NAMCOT mappers similar to 206
...
actually fix all NAMCOT mappers similar to 206
2022-11-02 07:44:25 +01:00
nsx0r
4a799e6969
fixed NES mapper 206
...
fixed NES mapper 206, tested working with FC game "Super Chinese"
2022-11-02 05:50:33 +01:00
sanni
61cc4b034c
Update Cart_Reader.ino
2022-11-02 01:20:35 +01:00
sanni
044e90f575
Update Cart_Reader.ino
2022-11-02 00:44:16 +01:00
sanni
a3b1882e88
Fix NES manual mapper selection
2022-11-02 00:32:54 +01:00
sanni
78aa7a3d34
Update NES.ino
2022-11-01 23:32:46 +01:00
sanni
2c95299010
Turn LED off when rotary button is pressed
2022-11-01 22:50:14 +01:00
sanni
d7082a2366
Add fast scrolling through NES database
...
Fast scrolling skips 30 entries at once.
Also fixed lockup when browsing backwards on first database entry.
2022-11-01 22:26:53 +01:00
Vincent Pelletier
90303b45c0
SNES.ino: Restore code with side-effects
...
This code was removed as part of
a555f21
("All: Resolve all compiler and linker warnings")
because it was filling a 1kB buffer which was never read from.
While I expect reading values from PINC should be invisible from the
cartridge's perspective, writing to PORTL, PORTF and PORTK is definitely
visible.
I have currently no way of testing if this code is required, so in doubt
restore the parts which have effects visible from the cartridge.
2022-11-01 07:56:15 +00:00
Vincent Pelletier
c82815f0d5
SFM.ino, SNES.ino: Rework compiler warnings resolution
...
I am not sure why I changed some variables from 16 bit types to 8 bit types
when the warnings being resolved were only about signedness.
Fixes: a555f21
("All: Resolve all compiler and linker warnings")
2022-11-01 07:53:35 +00:00
sanni
cc17c70e30
Fix reading/writing 4MB HiROM
...
HiROM starts at bank 192 and has 64 banks so byte variable currBank overflows.
2022-10-31 15:41:29 +01:00
sanni
a3feb32e15
V11.1
2022-10-31 11:40:15 +01:00
Vincent Pelletier
f07f6f9025
All: Replace print_Error(*, boolean) calls with print_{,Fatal}Error(*)
...
Also, make print_FatalError(*) independent from print_Error(*).
Also, factorise common parts of print_Error(*).
Frees 2336 bytes of program space and 5 bytes of global ram space.
2022-10-31 08:52:33 +00:00
Vincent Pelletier
0a823bf5b7
Cart_Reader.ino: Factorise missing module error.
...
Also, handle one such case in the HW3 main menu.
2022-10-31 08:52:19 +00:00
Vincent Pelletier
25b615f77c
Cart_Reader.ino: Move print_FatalError prototypes earlier in the file
...
So they can be used in more places within that file.
2022-10-31 05:48:46 +00:00
Vincent Pelletier
4a2a2c69d2
Cart_Reader.ino: Deduplicate HW5 mainMenu pagination logic
2022-10-31 05:48:46 +00:00
Vincent Pelletier
a35c882662
N64.ino: Factorise JoyBus-related code
...
IMPORTANT: with this change, the Adafruit clock generator becomes a hard
requirement to read and write gamecart eeproms.
This is a large patch, partly because JoyBus is used a lot:
- controller
- controller pak
- gamecart eeprom
and partly because of the further simplifications it allows.
Also, implement low-level bit shift functions in assembly in order to get
complete control of the timings: there can be just a few cycles of slack.
Also, use the time waiting for the input line to go high to pack received
bits into bytes on-the-fly, as there is now plenty of time.
This saves about 2080 bytes of program space, and 369 bytes of global ram
space.
2022-10-31 05:48:46 +00:00
Vincent Pelletier
bea06e55fe
N64.ino: Assorted low-hanging fruits
...
More sizeof() use, avoiding high-level loops when a callee can do it
without the call overhead on every iteration, a bit of source code
factorisation, avoiding initializers for large variables.
2022-10-31 05:48:46 +00:00
Vincent Pelletier
d9daadb1f9
N64.ino: Build eeprom path and file name with snprintf_P
...
So the format string is stored in flash rather than in ram.
The gain from doing just one like this is not much, to be done in more
places.
2022-10-31 01:16:06 +00:00
Vincent Pelletier
a43b2553cd
N64.ino: Optimise controller CRC functions for speed
...
Also, shave off 5 bytes from a local initializer.
Saves 22 bytes of program space and of global ram space.
2022-10-31 01:16:06 +00:00
sanni
3826f5aa10
Update Cart_Reader.ino
2022-10-30 11:46:55 +01:00
Vincent Pelletier
fbaed78eb5
SFM.ino: Get rid of write-only global variables
...
These variables are set but never read. Removing them removes a non-trivial
amount of code, which I am not comfortable deleting: it contains knowledge
about cart data structure, even though it is currently not being used for
anything. So comment it out until someone who know this architecture better
comes around.
Frees 146 bytes of program space and 16 bytes of global ram space.
2022-10-29 09:46:00 +00:00
Vincent Pelletier
18bd92d100
WSV.ino: Move WVS to PROGMEM
...
Frees 16 bytes of program space and 8 bytes of global ram space.
2022-10-29 08:01:59 +00:00
Vincent Pelletier
cb26782e22
PCE.ino: Get rid of menuOptionspceCart global variable
...
Also, move a few inline string constants into PROGMEM.
Uses 64 bytes of program space.
Frees 206 bytes of global ram space.
2022-10-29 08:01:59 +00:00
Vincent Pelletier
59665bb848
NES.ino: Factorise Create{PRG,CHR,RAM}FileInSD functions
...
Also, gets rid of filesCount global.
Frees 390 bytes of program space and 21 bytes of global ram space.
2022-10-29 08:01:55 +00:00
Vincent Pelletier
64db4ded54
NES.ino: Convert nointro-disabled global variables into locals
...
Also, remove dead error handling code: sd.exists internally opens the file
and returns the produced status, so myFile.open return value should be the
same.
2022-10-29 07:16:37 +00:00
Vincent Pelletier
264bfd5ce5
INTV.ino: Move INTV to PROGMEM.
...
Uses 8 bytes of program space.
Frees 6 bytes of global ram space.
2022-10-29 07:16:37 +00:00
Vincent Pelletier
a6f9e5e99c
GBA.ino: Get rid of unused global
2022-10-29 07:16:37 +00:00
Vincent Pelletier
d4c5f6ec5b
GBA.ino: Get rid of calcChecksumStr as a global
...
Frees 150 bytes of program space and 5 bytes of global ram space.
2022-10-29 07:16:37 +00:00
Vincent Pelletier
3bb63d77e3
COLV.ino: Move COL to PROGMEM
...
Uses 30 bytes of program space
Frees 6 bytes of global ram space.
2022-10-29 07:16:37 +00:00
Vincent Pelletier
65f7950af4
NES.ino: Move PRG, CHR and RAM to PROGMEM.
...
Uses 90 bytes of program space.
Frees 40 bytes of global ram space.
2022-10-29 07:16:37 +00:00
Vincent Pelletier
133e3feda9
Cart_Reader.ino: New variants of print_Error
...
Tagged with noreturn so the compiler knows about the effect of
forceReset=true.
Ideally, print_Error should lose its forceReset argument so that:
- print_Error never resets
- print_FatalError always resets (and hosts the code doing so)
so the compiler is more accurately aware of the execution flow.
2022-10-29 07:16:37 +00:00
sanni
34981fdb8e
Fix compile error
2022-10-28 15:09:15 +02:00
sanni
a8a981e137
Auto format
2022-10-28 15:02:51 +02:00
sanni
30d880bfa7
Fix SNES romName
2022-10-28 13:38:16 +02:00
sanni
24c5957993
Fix CRC32 calculation
2022-10-28 12:56:38 +02:00
nsx0r
2682e5ef94
added NES mapper 91 + m36 typo fix
...
added NES mapper 91 + m36 typo fix
2022-10-28 11:49:55 +02:00
nsx0r
1509549946
added NES mapper 36
...
added NES mapper 36
2022-10-28 10:29:54 +02:00
sanni
748b9094df
V11.0
2022-10-28 10:26:04 +02:00
Vincent Pelletier
10061beaf5
MD.ino: Move some globals to getCartInfo_MD locals.
...
Also, bypass sdBuffer when it was the directory copied to another buffer.
Also, factorise yet another pair of loops copying rom name.
This frees 59 bytes of global ram space.
2022-10-28 05:29:44 +00:00
Vincent Pelletier
3c3b399d6a
SFM.ino: Move all menu variables from globals to locals.
...
Saves about 100 bytes of program memory and 80 bytes of global ram.
2022-10-28 05:29:44 +00:00
Vincent Pelletier
3632b06980
SFM.ino: Factorise single-game gamecode retrieval.
...
Frees 220 bytes of code and 16 bytes of ram.
2022-10-28 05:29:44 +00:00
Vincent Pelletier
67b54a690b
All: Factorise title generation from cart.
...
Fix out-of-bound access when first byte is not an ascii printable
character.
Reduces program space use by 480 bytes.
2022-10-28 05:29:44 +00:00
Vincent Pelletier
3b05046ee9
All: Factorise CRC functions.
...
This saves 370 bytes of program space.
2022-10-28 05:29:41 +00:00
Vincent Pelletier
84738038e1
NES.ino: Give more time to read "No data found" message.
2022-10-28 05:29:20 +00:00
Vincent Pelletier
337ef94b07
NES.ino: Factorise code.
...
Mainly, this removes a lot of the logic from selectMapping by reusing the
copy already present in getMapping. As a result, selectMapping is not
expected to be accessed from outside this module anymore.
Also, this factorises several smaller chunks of code found throughout the
module.
Also, get rid of a few easy globals along the way.
Also, move a bit more of NES-specific initialisation and menu display to
the NES.ino module.
This saves about 1490 bytes of code.
2022-10-28 05:29:20 +00:00
Vincent Pelletier
e4e09c7bf8
GBA.ino: Reduce gbaMenu size.
...
Replace switch blocks which produce one output with const tables.
Use functions instead of repeating code.
Move common initial and final statements outside of blocks.
Also, do not erase/flash second bank on dual-bank chips when the first one
had failures.
This saves about 520 bytes of code and increases ram use by 12 bytes.
2022-10-28 05:29:20 +00:00
Vincent Pelletier
27baa2b164
All: Factorise code seeking a file back N lines
...
This saves 890 bytes of program space.
2022-10-28 05:29:20 +00:00
Vincent Pelletier
0a627e5bd4
All: Use f.seekCur(x) instead of f.seekSet(f.curPosition() + x)
...
Saves 450 bytes of program space.
2022-10-28 05:29:20 +00:00
Vincent Pelletier
a555f2117f
All: Resolve all compiler and linker warnings
...
No functional change intended.
2022-10-28 05:29:20 +00:00
Vincent Pelletier
d81f2c0509
NES.ino: Simplify CRC functions.
...
It seems crc32EEP only exists because the actual number of bytes read from
file were not checked, hence falling back to smaller reads.
Instead, always read up to the full available buffer, adding to the CRC
only as many bytes as were actually read.
Also, move some related variables to local scope.
Overall, this saves about 50 bytes of code and 80 bytes of global ram.
2022-10-28 05:29:20 +00:00