From e8062dd1e0249c5a8179f35a00803aad825d9780 Mon Sep 17 00:00:00 2001
From: AKuHAK <621640+AKuHAK@users.noreply.github.com>
Date: Sat, 14 Sep 2024 11:17:27 +0300
Subject: [PATCH] Added "ignore" EEPROM hardware points and fixed pmap in that
 mode

---
 README.txt   | 14 ++++++++++++++
 base/mecha.c | 34 +++++++++++++++++-----------------
 2 files changed, 31 insertions(+), 17 deletions(-)

diff --git a/README.txt b/README.txt
index aafcf63..873bac4 100644
--- a/README.txt
+++ b/README.txt
@@ -30,6 +30,20 @@ C) Other test points:
 	VC_+1.7V	(JL604)
 	+8.5V		(JL430, JL431)
 	GND		(JL432, JL433)
+D) EEPROM Reset Mode on Dragon Models (50k+):
+	EEP_CS and EEP_CE via resistor R6305
+	If the legs of resistor R6305 are shorted,
+	the EEP_CS line will go high,
+	preventing the EEPROM from being read during the console's power-up.
+	The EEPROM will only become accessible after the short is removed.
+	Correct sequence:
+	- Disconnect the power plug
+	- Short the resistor legs
+	- Reconnect the power plug (red light will turn on)
+	- Press the power button (green light will turn on)
+	- Unshort the resistor legs
+	- Run pmap
+	To verify that the EEPROM wasnt read on boot in Menu 4 (Show Ident Data), the CFC should display 00000000
 
 About Optical Block (OP) types:
 -------------------------------
diff --git a/base/mecha.c b/base/mecha.c
index 3403212..366427c 100644
--- a/base/mecha.c
+++ b/base/mecha.c
@@ -773,33 +773,33 @@ const char *MechaGetDesc(void)
             else
                 return "CXP103049-xxx G-chassis (Please contact program creator)";
         case MECHA_TYPE_40: // better check cxd aka M Renewal Date
-            if (!pstricmp(MechaName, "00060507") || !pstricmp(MechaName, "00070507"))
-                return "CXR706080-106GG";
-            else if (!pstrincmp(MechaName, "000005", 6) || !pstrincmp(MechaName, "000105", 6))
+            if (!pstricmp(MechaIdentRaw.cfd, "0301201528"))
                 return "CXR706080-101GG";
-            else if (!pstrincmp(MechaName, "000205", 6) || !pstrincmp(MechaName, "000305", 6))
+            else if (!pstricmp(MechaIdentRaw.cfd, "0303052240"))
                 return "CXR706080-102GG";
-            else if (!pstrincmp(MechaName, "000405", 6) || !pstrincmp(MechaName, "000505", 6))
+            else if (!pstricmp(MechaIdentRaw.cfd, "0304082327"))
                 return "CXR706080-103GG";
-            else if (!pstrincmp(MechaName, "000605", 6) || !pstrincmp(MechaName, "000705", 6))
+            else if (!pstricmp(MechaIdentRaw.cfd, "0306252303"))
                 return "CXR706080-104GG";
-            else if (!pstrincmp(MechaName, "010A05", 6) || !pstrincmp(MechaName, "010B05", 6))
+            else if (!pstricmp(MechaIdentRaw.cfd, "0310082200"))
                 return "CXR706080-702GG";
-            else if (!pstrincmp(MechaName, "000C05", 6) || !pstrincmp(MechaName, "000D05", 6))
-                return "CXR706080-105GG";
-            else if (!pstrincmp(MechaName, "010E05", 6) || !pstrincmp(MechaName, "010F05", 6))
-                return "CXR706080-703GG/-706GG";
-            else if (!pstrincmp(MechaName, "000006", 6) || !pstrincmp(MechaName, "000106", 6))
+            else if (!pstricmp(MechaIdentRaw.cfd, "0311202005"))
+                return "CXR706080-105GG/CXR706F080-1GG";
+            else if (!pstricmp(MechaIdentRaw.cfd, "0404061305"))
+                return "CXR706080-106GG";
+            else if (!pstricmp(MechaIdentRaw.cfd, "0406210953"))
                 return "CXR716080-101GG";
-            else if (!pstrincmp(MechaName, "000206", 6) || !pstrincmp(MechaName, "000306", 6))
+            else if (!pstricmp(MechaIdentRaw.cfd, "0407200904"))
                 return "CXR716080-102GG";
-            else if (!pstrincmp(MechaName, "000406", 6) || !pstrincmp(MechaName, "000506", 6))
+            else if (!pstricmp(MechaIdentRaw.cfd, "0408250212"))
+                return "CXR706080-703GG/-706GG";
+            else if (!pstricmp(MechaIdentRaw.cfd, "0412100130"))
                 return "CXR716080-103GG";
-            else if (!pstrincmp(MechaName, "000606", 6) || !pstrincmp(MechaName, "000706", 6))
+            else if (!pstricmp(MechaIdentRaw.cfd, "0504270917"))
                 return "CXR716080-104GG";
-            else if (!pstrincmp(MechaName, "000a06", 6) || !pstrincmp(MechaName, "000b06", 6))
+            else if (!pstricmp(MechaIdentRaw.cfd, "0603290648"))
                 return "CXR716080-106GG";
-            else if (!pstrincmp(MechaName, "000c06", 6) || !pstrincmp(MechaName, "000d06", 6))
+            else if (!pstricmp(MechaIdentRaw.cfd, "0701290347"))
                 return "CXR726080-301GB";
             else
                 return "unknown";