Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ClusterM/famicom-dumper.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCluster <clusterrr@clusterrr.com>2020-09-06 22:40:01 +0300
committerCluster <clusterrr@clusterrr.com>2020-09-06 22:40:01 +0300
commitd1493a2d976c036155f29e78078c46f037db7454 (patch)
tree390d1731e6289c11fd695679d1857ca92c91c04c
parent964d61e57d296c6e27a046df876e2c19f129f236 (diff)
Faster checksum calculation
-rw-r--r--dumper.c12
-rw-r--r--famicom-dumper.hex46
2 files changed, 35 insertions, 23 deletions
diff --git a/dumper.c b/dumper.c
index 6cab60e..c0ef773 100644
--- a/dumper.c
+++ b/dumper.c
@@ -63,7 +63,7 @@ ISR(USART0_RX_vect)
static void set_address(unsigned int address)
{
unsigned char l = address & 0xFF;
- unsigned char h = address>>8;
+ unsigned char h = (address >> 8) & 0xFF;
PORTA = l;
PORTC = h;
@@ -178,12 +178,20 @@ static void read_prg_crc_send(unsigned int address, unsigned int len)
{
LED_GREEN_ON;
uint16_t crc = 0;
+ MODE_READ;
+ PRG_READ;
+ PHI2_HI;
+ set_romsel(address); // set /ROMSEL low if need
while (len > 0)
{
- crc = crc16_update(crc, read_prg_byte(address));
+ PORTA = address & 0xFF;
+ PORTC = (address >> 8) & 0xFF;
+ _delay_us(1);
+ crc = crc16_update(crc, PIND);
len--;
address++;
}
+ ROMSEL_HI;
set_address(0);
comm_start(COMMAND_PRG_READ_RESULT, 2);
comm_send_byte(crc & 0xFF);
diff --git a/famicom-dumper.hex b/famicom-dumper.hex
index 509d5cf..883ea2b 100644
--- a/famicom-dumper.hex
+++ b/famicom-dumper.hex
@@ -8,7 +8,7 @@
:100070000C9458000C9458000C9458000C945800A0
:100080000C9458000C9458000C94580011241FBE76
:10009000CFEFD0E1DEBFCDBF29E0A0E0B1E001C0ED
-:1000A0001D92A531B207E1F70E9414030C94430896
+:1000A0001D92A531B207E1F70E9414030C94620877
:1000B0000C9400008BBB95BB95FD06C0809162003F
:1000C0008061809362000895809162008F7E8093AA
:1000D00062000895CF93DF93C2E6D0E028812E7F9F
@@ -102,7 +102,7 @@
:1006500082BB11BA1BBA15BA909162009061909357
:1006600062008ABB84BBBC98C498C798C6980E9495
:100670000B0360E070E080E00E94390277247394FD
-:100680000EE6C02ED12C84E1482E512C66246A94AB
+:100680001EE6C12ED12C04E1402E512C66246A9422
:100690008FB589628FBD21E02EBD20E030E0E0E023
:1006A00041E050E060E070E080910B01811135C0C5
:1006B0008FB589628FBD7EBC403187E258076105E6
@@ -152,8 +152,8 @@
:100970006200809162008160809362002FEFE21A32
:10098000F20A49815A81415051095A834983452BC2
:1009900039F6C79860E070E08EE00E94390278CEA8
-:1009A000E0900D0180910E01F12CF82A30910F0199
-:1009B000398380911001432F50E0582B5A8349838B
+:1009A000E0900D0180910E01F12CF82A20910F01A9
+:1009B000298380911001422F50E0582B5A8349839C
:1009C000C79A452B99F001E111E0F80161918F017F
:1009D000C7010E94E300FFEFEF1AFF0A29813A8165
:1009E000215031093A832983232B79F7C79860E096
@@ -185,7 +185,7 @@
:100B80008B819C810E948A00882E8B819C810E948F
:100B90008A00982E8B819C810E948A00382E882D95
:100BA000892586FF18C0892D832586FF14C081FC06
-:100BB00060C285FEDFCF63E070E08AE20E94390206
+:100BB00078C285FEDFCF63E070E08AE20E943902EE
:100BC000882D0E946102892D0E946102832D0E945E
:100BD0006102C7985DCD8B819C810E948A00982E0E
:100BE0008B819C810E948A009812C4CFE981FA818E
@@ -199,7 +199,7 @@
:100C6000B0001DBC1CBC8CB59DB58D389B45D0F427
:100C700080E090E80E948A0089838CB59DB58D380C
:100C80009B4580F480E090E80E948A008B83598124
-:100C90005827547409F4DFC189838CB59DB58D380C
+:100C90005827547409F4F7C189838CB59DB58D38F4
:100CA0009B4580F360E070E08CE20E943902C798B7
:100CB000EFCCC79AC69A809162008E7F80936200C3
:100CC00080916200826080936200FFEF20E732E053
@@ -235,13 +235,13 @@
:100EA000415051095A8349838CB59DB584389E4180
:100EB00008F0ACCEC7010E943801882EC7010E94FD
:100EC0003801982EC7010E943801382E882D8925B7
-:100ED00086FF09C0892D832586FF05C081FCC9C016
+:100ED00086FF09C0892D832586FF05C081FCE1C0FE
:100EE00085FEE2CF68CEC7010E943801982EC70167
:100EF0000E9438019812D8CFE981FA818081981236
:100F0000D3CF2B813C81232B09F660E070E08AE08F
:100F10000E943902C798BCCBE0900D0180910E0170
:100F2000F12CF82A00910F018091100110E0182B8C
-:100F3000C69A0115110509F4A3C01A821982C701C6
+:100F3000C69A0115110509F4C2C01A821982C701A7
:100F40000E946A0029813A8128273A83298388E010
:100F500090E00CC049815A8156954795E1E04E27B3
:100F6000E0EA5E275A834983019759F0398130FDC1
@@ -250,17 +250,21 @@
:100F9000B1F619814A8149831BBA15BA8091620062
:100FA00080618093620062E070E08CE00E94390210
:100FB000812F0E94610289810E946102C69868CBDC
-:100FC000E0900D0180910E01F12CF82A00910F01A3
-:100FD0008091100110E0182BC69A0115110509F433
-:100FE0004CC01A821982C7010E943801E981FA8136
-:100FF000E827FA83E98388E090E00CC029813A81F0
-:101000003695279541E0242740EA34273A832983FF
-:10101000019759F0F981F0FDF1CFE981FA81F69558
-:10102000E795FA83E9830197A9F701501109FFEFCA
-:10103000EF1AFF0A01151105B1F619812A812983DA
-:101040001BBA15BA8091620080618093620062E0F1
-:1010500070E088E0ABCFFB81FF3F09F4D0CD61E0C9
-:1010600070E08BE20E9439028B810E946102C79876
-:101070000FCB63E070E089E2A1CD198210E0E0CFF0
-:0A108000198210E089CFF894FFCF29
+:100FC00040910D0180910E0150E0582B60910F016E
+:100FD0008091100170E0782BC69A62BA11BA8091A4
+:100FE00062008068809362008091620081608093DB
+:100FF00062008091620057FD58C082608093620059
+:101000006115710509F458C080E090E04BBB55BBF9
+:10101000E2E0EA95F1F700C020B3822728E030E053
+:1010200009C096958795F1E08F27F0EA9F27215018
+:10103000310939F080FDF5CF96958795215031091A
+:10104000C9F7615071094F5F5F4F61157105F1F686
+:101050008B839983809162008260809362001BBAC7
+:1010600015BA8091620080618093620062E070E056
+:1010700088E00E9439028B810E94610289810E946E
+:101080006102C69805CBFB81FF3F09F4B8CD61E052
+:1010900070E08BE20E9439028B810E946102C79846
+:1010A000F7CA63E070E089E289CD8D7F80936200AA
+:1010B0006115710509F0A8CF19821B82CBCF198267
+:0810C00010E06ACFF894FFCFA5
:00000001FF