logoUnique visits: 8970
Can you help getting more info about those carts?
Cart name
Notes for chip search:
  • Use "+" as delimeter for all fields (except "cart name", where space is used); if many values are entered, all of them must appear in the cartridge then; case is not sensitive
  • "Mapper" is the actual mapper used by this cartridge hardware (might not match the one at wiki.nesdev.com, as at the moment I was analyzing this cartridge, there was no mapper assigned to it, so I had to assign my own number for testing)
  • "Original mapper" is the mapper used by licensed version of this game (for multicarts, it refers to mapper of the inside games, so 0+2 means this cartridge can run NROM+UNROM games)
  • Order in which you put values doesn't matter (you can write 7400+74138+7400 or 7400+7400+74138 to search for a cartridge that contains at least two 7400 chips and one 74138
  • Some chips (like PAL16*8) appear in cartridges as 16V8 or 16L8, so be sure to check both posibilities
  • Same goes for memories - type 27F080 to search for 32 pin memories, 27512 for 28 pin with two chip enables or MASKROM_1M_DIP28 for 28 pin with one chip enable
  • Same goes for mappers - some examples: AX5904(MMC1), AX5202P(MMC3), PT8154BM (9112MMC3), AX5208C(VRC4), 23C3662(VRC2)
  • Good news is that you can use wildcards, so 74139+*MMC3* will search for any cartrige that has at least one 74139 and MMC3 chip in any version
Mapper#
Original mapper#
PCB marks
Tags
Chips
150 in 1
Typemulti
Mapper?
Original mapper0
PCB marks150-1
Tags:
Uploaded:2021-08-27 08:48:51

Elements:
NameValue
U127F080
U26224
U374273
U47302
U574153
U674161
U77432
U874157

Chip signature:
27F080+6224+74273+7302+74153+74161+7432+74157

PCB top:

PCB bottom:

Shell top:
No photo

Shell bottom:
No photo
Screenshoots:

Extra info:
Ostatnio trafił w moje ręce pewien tajemniczy kartridż od jednego z grupowiczów. Układy w nim występujące (74*161 + 74*32 + 74*157 + 74*273 + 74*02 + 74*153) i konfiguracja pamięci (512 kB PRG-ROM + 8 kB CHR-RAM) zdradzały, że to jakaś składanka kilkunastu) prostych gier typu UNROM + NROM. Kartridż oczywiście nie działał.
Po odczytaniu ROMu i analizie częstości wystąpień poszczególnych bajtów (histogram) usterka od razu stała się jasna: w pliku występują jedynie bajty nieparzyste, zatem linia D0 od pamięci jest uszkodzona (przywarta do stanu wysokiego, a pomiar wykazał występowanie na niej stale 3.3V).

Aby uratować ten kartridż, należało odzyskać oryginalną zawartość pamięci. Napisałem prosty program, który porównuję pierwsze 16384 bajtów odczytanej kości z każdym z ROMów z popularnej bazy wszystkich gier (GoodNES), nie zwracając uwagi na przekłamany bit D0. Najbliższy okazał się plik "110-in-1 (Menu).nes", jednak nie jest to dokładnie ten sam kartridż (w pierwszych 16kB występuje 3587 bajtów różnicy, a poza tym w pliku zawarte jest jedynie menu).

Widać to zresztą na początku pliku - tam różnice występuję tez na innych bitach.

Jak więc odzyskać zawartość pamięci? Porównanie zawartości z plikiem 110-in-1 widać, że:
* pod adresem 0x58 jest wartość 0x00 (0b00000000)
* pod adresem 0x59 jest wartość 0x85 (0b10000101)
Odczyt z kości dla drugiego adresu zgadza się, a dla pierwszego nie i wynosi 0b00000001, co nie dziwi, bo bit D0 jest zwarty wewnątrz do stanu wysokiego.

Wpadłem na pewien pomysł, który zrealizowałem za pomocą "swojego" programatora (zbudowałem go kiedyś, gdy nie miałem jeszcze sklepowego):
Porównałem pobór prądu pobieranego przez pamięć, gdy na szynie adresowej wystawiamy adres do pierwszej oraz do drugiej komórki pamięci.
W pierwszym przypadku wychodzi 35.3 mA, a w drugim 7.5mA. Pobór jest większy gdyż pamięć "próbuje" wystawić na szynie wartość z bitem D0 = 0, który to jest gdzieś dalej zwierany do zasilania, co powoduje dodatkowy pobór prądu "uciekający" do zasilania. Jednak ten nadmierny pobór jest tu zbawieniem, gdyż pozwoli łatwo odróżnić, czy dla danej komórki bit D0 powinien być 0 (większy pobór) czy 1 (mniejszy pobór). Oczywiście nie miałem zamiaru wystawiania każdego z adresów ręcznego i notowania poboru prądu, gdyż zajęłoby mi to chyba resztę życia..

Wystarczyło stworzyć prosty przetwornik prąd->napięcie (na tranzystorowym kluczu) i podpiąć go do linii D0 w programatorze (a potem po sczytaniu zanegować jej wartość)... 
Rezystor 39R powoduje spadek napięcia przy prądzie 35.3 mA około 300mV lub 1.3V - zależnie czy pobór prądu jest mniejszy czy większy (różnica wystarczając do załączenia lub nie załączenia tranzystora, a jednocześnie nie za duży, aby pamięć działała jeszcze poprawnie przy tak obniżonym zasilaniu) - tak naprawdę baza tranzystora i tak nie pozwala, aby napięcie zasilania spadło mniej niż ~0.7V. No i et voila - udało się odczytać zawartość, zaprogramować nową pamięć i naprawić kartridż.

Comments:

Want to leave a comment?

Name:

Page loaded in 0.8 seconds | W3C validate