1. A breve aggiorneremo la piattaforma di Reboot per risolvere alcuni problemi con i plug-in, quindi chiediamo ancora un po' di pazienza, Lo staff di Reboot

LE PROTEZIONI NELLE CONSOLES - NEO GEO X

Discussione in 'Altre piattaforme' iniziata da student, 15 Mar 2020.

  1. student

    student Staff Livello 45 Staff

    Iscritto:
    30 Ago 2015
    Messaggi:
    4.890
    Like ricevuti:
    5.060
    [​IMG]
    Cominciamo subito con il dire che questa console non se l'è filata praticamente nessuno sia per il costo spropositato rispetto a ciò che offriva dal punto di vista hardware (fatta eccezione per la docking station e per il joypad) sia per la qualità abbastanza "cheap" delle plastiche di cui è composta sia per i pochi titoli che offriva (nella memoria interna ne sono presenti solo 20 e nemmeno tutti "best").

    Il trailer pubblicitario non era male:

    ma la console è durata poco sugli scaffali (dal Dicembre 2012 fino forse a fine 2013, non è ben chiara la cosa, in ogni caso sicuramente non fu più in commercio dopo il 2016) probabilmente anche a causa delle non poche problematiche incorse tra Tommo ed SNK che potete leggere in ordine cronologico qui, qui e qui e delle quali non si trova una documentata fine.

    I prodotti ufficialmente rilasciati sono stati i seguenti:

    – NEOGEO X GOLD Limited Edition
    [​IMG]

    La console portatile con tutti i suoi accessori:
    NEOGEO X Station x1, NEOGEO X Arcade Stick x1, NEOGEO X Game Card - Ninja Masters x1, Power Supply x1, HDMI Cable x1, A/V Out Cable x1, Quick Start Guide x1
    Al cui interno include i seguenti titoli precaricati:
    (3 Count Bout, Alpha Mission II, Art of Fighting, Baseball Stars 2, Cyber-Lip, Fatal Fury, Fatal Fury Special, The King of Fighters '95, King of the Monsters, Last Resort, League Bowling, Magician Lord, Metal Slug, Mutation Nation, NAM-1975, Puzzled, Real Bout Fatal Fury Special, Samurai Shodown II, Super Sidekicks, World Heroes Perfect

    – NEOGEO X Mega Pack Vol.1
    [​IMG]

    (Art of Fighting 3, Kizuna Encounter, Sengoku, Blazing Star, The Last Blade, Shock Troopers, Blue's Journey, Metal Slug 2 ,Super Sidekicks 3, Garou: Mark of the Wolves, Samurai Shodown III, Top Hunter: Roddy & Cathy, The King Of Fighters '96, Savage Reign, World Heroes 2 Jet)

    – NEOGEO X Classics Vol.1
    [​IMG]

    (Metal Slug 2, Sengoku,Top Hunter)

    – NEOGEO X Classics Vol.2
    [​IMG]

    (Samurai Shodown 3, Savage Reign, Super Sidekicks 3)

    – NEOGEO X Classics Vol.3
    [​IMG]

    (The King of Fighters '96, Shock Troopers, Kizuna Encounter)

    – NEOGEO X Classics Vol.4
    [​IMG]

    (Mark of the Wolves, Shock Troopers, World Heroes 2 Jet)

    – NEOGEO X Classics Vol.5
    [​IMG]

    (The Last Blade, Art of Fighting 3, Blue's Journey)



    L'hardware che monta è quello che segue:
    [​IMG]

    SoC: Ingenic JZ4770 (2011), lo stesso che potete trovare ad esempio nella molto più recente (2019) portatile ANBERNIC RG 350:
    [​IMG]
    che ha al suo interno una CPU XBurst 1GHz ed una GPU Vivante GC860.
    FLASH CHIP: 2GB eMMC Samsung KLM2G1DEHE-B101 (al suo posto, nelle console di prima produzione, è possibile trovare una microSD interna da 2GB).
    RAM: 256MB (2x DDR2 Samsung K4T1G164QF)
    Display: 4.3-inch LCD 480x272, 16:9 aspect ratio

    La console utilizza delle normali schede SD ma lo slot ha 4 pins invertiti come "protezione":
    [​IMG]
    Si può creare un adattatore microsd homemade con i pins invertiti oppure comprarlo già fatto:
    [​IMG]

    Nonostante questo, dopo aver letto il thread del nostro utente @peppepintaudi, non ho saputo resistere al desiderio di modificarla e, dopo averne trovata una da riparare (righe orizzontali a schermo - LCD modello GL043009T0-40 V1) a prezzo "modico", ho scoperto che le informazioni su come farlo sono veramente frammentarie ed a volte anche non corrette.


    Iniziamo con il fare alcune premesse:
    Esistono solamente le seguenti versioni del firmware originale:

    v337/v370: queste 2 versioni permettono l'hack descritto nel thread che menzionavo prima grazie alla presenza di una shell root senza password nel terminale di debug rimossa nelle versioni v500/v500a; di seguito il file di testo originale di chi per primo ha scoperto il sistema:
    _ _ _____ ___ ____ _____ ___ ____ ___ _ ____ __ __
    | \ | | ____/ _ \ / ___| ____/ _ \ / ___|/ _ \| | | _ \ \ \/ /
    | \| | _|| | | | | _| _|| | | | | | _| | | | | | | | | \ /
    | |\ | |__| |_| | |_| | |__| |_| | | |_| | |_| | |___| |_| | / \
    |_| \_|_____\___/ \____|_____\___/ \____|\___/|_____|____/ /_/\_\

    The Neo Geo X (NGX) is a handheld video game console manufactured by Tommo Inc.,
    licensed by SNK Playmore and the latest console released as part of the Neo Geo
    brand. The device ships with a default enabled UART console and runs a Linux
    distribution. Opening the device exposes 4 pins which are labelled Rx/Tx/3.3V
    by the top of the PCB on the backside above the battery. Soldering onto these
    points will enable a console which will show the boot messages from the Linux
    kernel and output any debugging information to the user. Additionally it was
    discovered that the device has no root password so from this point you are able
    to use the device as a standard Linux device, install your own ROM's and modify
    the device further etc. This modification does not function with firmware
    version V500A on a device as it appears to have been disabled in the boot
    loader.

    Here is an example of the boot log output and root access obtained. baud rate
    is 57600, 8N1. Additionally, a log capture is provided that shows details
    of the firmware update process.


    SD card found!
    init ok


    U-Boot 1.1.6-g4c3c6395-dirty (Jan 16 2013 - 12:29:21)

    Board: NEOGEO X(CPU Speed 1020 MHz)
    DRAM: 256 MB
    Error: Unknown flash ID, force set to 'SST_ID_39SF040'
    Flash: 512 kB
    NAND:nand_get_flash_type: No NAND device found!!!
    NAND device: dev_id: 0x0000 ext_id: 0x000000 not known!
    nand_scan: No NAND device found!!!
    0 MiB
    SD init ok
    *** Warning - MMC/SD first load, using default environment

    -=-=-=-= 0x8ff7f000 -=-=-=-
    jz4750_lcd.c 1439
    usb status is 0
    read vbat value is 3810
    usb status is 0
    SNK go go go!
    act8600: Write register --00000080
    data: 00000024
    act8600: Read register --00000081
    data: 00000005
    act8600: Write register --00000081
    data: 00000081
    LCD quick disable timeout!
    jz4750_lcd.c 1385
    jz4750_lcd.c 1488
    pix clk is 12142857
    In jz4750fb_deep_set_mode
    pix clk is 12142857
    jz4750_lcd.c 1500
    LCD quick disable timeout!
    pix clk is 12142857
    jz4750_lcd.c 1515
    usb status is 0
    usb status is 0
    jz4750_lcd.c 1612
    SD init ok
    Linux version 2.6.31.3-g6113b4c-dirty (ugame_hhx@ugame-desktop) (gcc version 4.3
    Jz47XX Floating coprocessor work on 32*32bit mode
    console [early0] enabled
    CPU revision is: 2ed1024f (Ingenic JZRISC)
    FPU revision is: 00330000
    CPU clock: 1020MHz, System clock: 128MHz, Peripheral clock: 128MHz, Memory clocz
    JZ4770 F4770 board setup
    Power Management for JZ
    Determined physical RAM map:
    memory: 04000000 @ 00000000 (usable)
    User-defined physical RAM map:
    memory: 10000000 @ 00000000 (usable)
    Zone PFN ranges:
    Normal 0x00000000 :arrowright: 0x00010000
    Movable zone start PFN for each node
    early_node_map[1] active PFN ranges
    0: 0x00000000 :arrowright: 0x00010000
    Built 1 zonelists in Zone order, mobility grouping on. Total pages: 65024
    Kernel command line: mem=256M console=ttyS2,57600n8 ip=off root=/dev/mmcblk0p1 o
    PID hash table entries: 1024 (order: 10, 4096 bytes)
    Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
    Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
    Primary instruction cache 16kB, VIPT, 4-way, linesize 32 bytes.
    Primary data cache 16kB, 4-way, VIPT, no aliases, linesize 32 bytes
    Memory: 254916k/262144k available (2954k kernel code, 6864k reserved, 1348k dat)
    SLUB: Genslabs=7, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
    NR_IRQS:384
    Console: colour dummy device 80x25
    console handover: boot [early0] :arrowright: real [ttyS2]
    Calibrating delay loop... 814.28 BogoMIPS (lpj=4071424)
    Mount-cache hash table entries: 512
    NET: Registered protocol family 16
    jz_platform_init
    bio: create slab <bio-0> at 0
    SCSI subsystem initialized
    usbcore: registered new interface driver usbfs
    usbcore: registered new interface driver hub
    usbcore: registered new device driver usb
    jz_i2c0 jz_i2c0.0: JZ4760 i2c bus driver.
    jz_i2c1 jz_i2c1.1: JZ4760 i2c bus driver.
    jz_i2c2 jz_i2c2.5: JZ4760 i2c bus driver.
    i2c-gpio i2c-gpio.3: using pins 101 (SDA) and 100 (SCL)
    act8600_power:
    4 84 1
    5 49 1
    6 57 0
    7 57 1
    8 36 1
    ===>start MSC0 clock
    mmc0: No card detect facilities available
    mmc0: new high speed SDHC card at address 0215
    JZ mmc0 driver registered
    ===>start MSC1 clock!
    ===>REG_CPM_CLKGR0 = 0x2fddb780
    mmc1: new high speed SD card at address 0215
    JZ mmc1 driver registered
    musb_hdrc: version 6.0, musb-dma, otg (peripheral+host), debug=0
    jz4760: Normal mode.
    musb_hdrc musb_hdrc.0: DMA IRQ: Shared. DMA Channels: 6.
    jz4760: Disable USB PHY.
    jz_vbus_hotplug: Registered.
    musb_hdrc musb_hdrc.0: USB OTG mode controller at b3440000 using DMA, IRQ 21
    NET: Registered protocol family 1
    cable state is OFFLINE
    msgmni has been set to 498
    alg: No test for stdrng (krng)
    io scheduler noop registered
    io scheduler cfq registered (default)
    Medive printk: create proc : it6610_me!
    LCDC: PixClock:12000000
    REG_CPM_LPCDR=0x20000023
    LCDC: PixClock:12000000
    REG_CPM_LPCDR=0x20000023
    test kernel argv from uboot start!
    JZ4770: Char device core registered.
    JZ4770: Virtual Driver of TCSM registered.
    init rda5807p
    ++++++++++++ HP OUT +++++++++++++
    REG_CPM_GPUCDR= 0x00000002
    GPU CLOCK USE PLL0
    GPU GPU_CLK2x= 340 MHz
    Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
    ɥ±á250: ttyS2 at MMIO 0x0 (irq = 3) is a 16550A
    loop: module loaded
    efuse check OK!
    register misc device efuse successed.
    jz4770_mii_bus: probed
    eth%d: Don't found any phy device at all
    jz4770_mac jz4770_mac.0: MII Probe failed!
    PPP generic driver version 2.4.2
    PPP Deflate Compression module registered
    PPP BSD Compression module registered
    PPP MPPE Compression module registered
    usbmon: debugfs is not available
    ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
    jz-ohci jz-ohci.0: JZ OHCI
    jz-ohci jz-ohci.0: new USB bus registered, assigned bus number 1
    jz-ohci jz-ohci.0: irq 20, io mem 0x13430000
    usb usb1: configuration #1 chosen from 1 choice
    hub 1-0:1.0: USB hub found
    hub 1-0:1.0: 2 ports detected
    Initializing USB Mass Storage driver...
    usbcore: registered new interface driver usb-storage
    USB Mass Storage support registered.
    g_file_storage gadget: File-backed Storage Gadget, version: 20 November 2008
    g_file_storage gadget: Number of LUNs=1
    jz4760: Disable USB PHY.
    musb_hdrc musb_hdrc.0: MUSB HDRC host driver
    musb_hdrc musb_hdrc.0: new USB bus registered, assigned bus number 2
    usb usb2: configuration #1 chosen from 1 choice
    hub 2-0:1.0: USB hub found
    hub 2-0:1.0: 1 port detected
    jz4760: Enable USB PHY.
    jz-gpio-keys: scan interval 20ms
    input: JZ GPIO keys as /class/input/input0
    input: touchscreen as /class/input/input1
    input: JZ Touch Screen registered.
    Create vbat proc entry.
    WARNING: can NOT get clock 4119!
    jz4770-rtc jz4770-rtc: rtc core: registered jz4770-rtc as rtc0
    mmcblk0: mmc0:0215 NCard 3.74 GiB
    mmcblk0: p1 p2 p3 p4
    mmcblk1: mmc1:0215 APPSD 121 MiB
    mmcblk1: p1
    usbcore: registered new interface driver usbhid
    usbhid: v2.6:USB HID core driver
    register codec 802adf58
    ===>enter init_jz_i2s
    musb_stage0_irq 759: unhandled DISCONNECT transition (UNDEFINED)
    drivers/video/jz4760_lcd.c 3103 avout_ack_timer 1
    hdmi out
    JZ I2S OSS audio driver initialized
    NET: Registered protocol family 17
    jz4770-rtc jz4770-rtc: setting system clock to 2011-11-20 10:05:51 UTC (1321783)
    kjournald starting. Commit interval 5 seconds
    EXT3-fs: mounted filesystem with writeback data mode.
    VFS: Mounted root (ext3 filesystem) readonly on device 179:1.
    Freeing unused kernel memory: 152k freed
    Warning: unable to open an initial console.
    kjournald starting. Commit interval 5 seconds
    EXT3-fs: mounted filesystem with writeback data mode.



    Welcome to NEOGEO X
    (none) login: Medive printk: write it610 mode is 0
    LCD disable timeout! REG_LCD_STATE=0x00000000x
    Medive printk: write it610 mode is 0
    LCD disable timeout! REG_LCD_STATE=0x00000006x
    mixer set volume,is external codec 0
    key_open
    Welcome to NEOGEO X
    (none) login: root
    test string.…
    # id
    uid=0(root) gid=0(root) groups=0(root),10(wheel)
    # uname -a
    Linux (none) 2.6.31.3-g6113b4c-dirty #380 Wed Jan 16 12:33:35 CST 2013 mips GNUx
    #
    Firmware update log:
    SD card found!
    init ok
    U-Boot 1.1.6-g4c3c6395-dirty (Jan 16 2013 - 12:29:21)
    Board: NEOGEO X(CPU Speed 1020 MHz)
    DRAM: 256 MB
    Error: Unknown flash ID, force set to 'SST_ID_39SF040'
    Flash: 512 kB
    NAND:nand_get_flash_type: No NAND device found!!!
    NAND device: dev_id: 0x0000 ext_id: 0x000000 not known!
    nand_scan: No NAND device found!!!
    0 MiB
    SD init ok
    *** Warning - MMC/SD first load, using default environment
    -=-=-=-= 0x8ff7f000 -=-=-=-
    jz4750_lcd.c 1439
    usb status is 1
    read vbat value is 4254
    usb status is 4
    SNK go go go!
    act8600: Write register --00000080
    data: 00000024
    act8600: Read register --00000081
    data: 00000005
    act8600: Write register --00000081
    data: 00000081
    LCD quick disable timeout!
    jz4750_lcd.c 1385
    jz4750_lcd.c 1488
    pix clk is 12142857
    In jz4750fb_deep_set_mode
    pix clk is 12142857
    jz4750_lcd.c 1500
    LCD quick disable timeout!
    pix clk is 12142857
    jz4750_lcd.c 1515
    usb status is 1
    usb status is 1
    jz4750_lcd.c 1612
    SD init ok
    ll init
    CFG_CPU_SPEED = 23C34600
    CFG_EXTAL = 00B71B00
    cfcr = 03431530
    plcr1 = B1000120
    REG_CPM_CPCCR = 03431530
    REG_CPM_CPPCR = B1008520
    cpu_clk = 23C34600
    mem_clk = 08F0D180
    ps = 00001A0A
    00000003
    {
    00000001
    00000003
    00000002
    00000003
    00000004
    00000002
    00000003
    00000002
    00000003
    00000004
    00000003
    00000003
    00000002
    00000003
    00000004
    }
    X00000003
    00000002
    -0000001F
    00000014
    00002326
    Setup fw args finish!
    Start address is :00000000
    Address offset is:00C00000
    GOT correct to :80C850C0
    cpu speed init ok!!!
    gpio as uart 2 work
    MSC Secondary Program Loader
    act8600: Write register --00000080
    data: 00000024
    act8600: Read register --00000081
    data: 00000005
    act8600: Write register --00000081
    data: 00000081
    LCD quick disable timeout!
    LCD quick disable timeout!
    mmc1_init start
    mmc1_init after msc1 init
    cmd res after 55 is 37
    cmd res after 41 is 3f
    SD card found!
    retries is 58
    sd1 init ok
    U-Boot 1.1.6-g6e69133d-dirty (Jul 7 2013 - 23:14:52)
    Board: NEOGEO X(CPU Speed 1020 MHz)
    DRAM: 256 MB
    Error: Unknown flash ID, force set to 'SST_ID_39SF040'
    Flash: 512 kB
    NAND:nand_get_flash_type: No NAND device found!!!
    NAND device: dev_id: 0x0000 ext_id: 0x000000 not known!
    nand_scan: No NAND device found!!!
    0 MiB
    msc_read 637 try to read kernel image from msc to ram
    SD card found!
    sd1 init ok
    *** Warning - MMC/SD first load, using default environment
    -=-=-=-= 0x8ff7f000 -=-=-=-
    jz4750_lcd.c 1439
    usb status is 1
    read vbat value is 4254
    usb status is 4
    SNK go go go!
    act8600: Write register --00000080
    data: 00000024
    act8600: Read register --00000081
    data: 00000081
    act8600: Write register --00000081
    data: 00000081
    jz4750_lcd.c 1385
    jz4750_lcd.c 1488
    pix clk is 12142857
    In jz4750fb_deep_set_mode
    pix clk is 12142857
    jz4750_lcd.c 1500
    LCD quick disable timeout!
    pix clk is 12142857
    jz4750_lcd.c 1515
    usb status is 1
    usb status is 1
    jz4750_lcd.c 1612
    SD card found!
    sd1 init ok
    Linux version 2.6.31.3-00010-g94ce818-dirty (ugame_hhx@ugame-desktop) (gcc version 4.1.2) #50 Sat Jul 13 10:16:02 CST 2013
    Jz47XX Floating coprocessor work on 32*32bit mode
    console [early0] enabled
    CPU revision is: 2ed1024f (Ingenic JZRISC)
    FPU revision is: 00330000
    CPU clock: 1020MHz, System clock: 128MHz, Peripheral clock: 128MHz, Memory clock: 128MHz
    JZ4770 F4770 board setup
    Power Management for JZ
    Determined physical RAM map:
    memory: 04000000 @ 00000000 (usable)
    User-defined physical RAM map:
    memory: 10000000 @ 00000000 (usable)
    Initrd not found or empty - disabling initrd
    Zone PFN ranges:
    Normal 0x00000000 :arrowright: 0x00010000
    Movable zone start PFN for each node
    early_node_map[1] active PFN ranges
    0: 0x00000000 :arrowright: 0x00010000
    Built 1 zonelists in Zone order, mobility grouping on. Total pages: 65024
    Kernel command line: mem=256M console=ttyS2,57600n8 ip=off rw rdinit=/linuxrc
    PID hash table entries: 1024 (order: 10, 4096 bytes)
    Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
    Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
    Primary instruction cache 16kB, VIPT, 4-way, linesize 32 bytes.
    Primary data cache 16kB, 4-way, VIPT, no aliases, linesize 32 bytes
    Memory: 253636k/262144k available (2924k kernel code, 8196k reserved, 1355k data, 1508k init, 0k highmem)
    SLUB: Genslabs=7, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
    NR_IRQS:384
    Console: colour dummy device 80x25
    console handover: boot [early0] :arrowright: real [ttyS2]
    Calibrating delay loop... 814.28 BogoMIPS (lpj=4071424)
    Mount-cache hash table entries: 512
    NET: Registered protocol family 16
    jz_platform_init
    bio: create slab <bio-0> at 0
    SCSI subsystem initialized
    usbcore: registered new interface driver usbfs
    usbcore: registered new interface driver hub
    usbcore: registered new device driver usb
    jz_i2c0 jz_i2c0.0: JZ4760 i2c bus driver.
    jz_i2c1 jz_i2c1.1: JZ4760 i2c bus driver.
    jz_i2c2 jz_i2c2.5: JZ4760 i2c bus driver.
    i2c-gpio i2c-gpio.3: using pins 101 (SDA) and 100 (SCL)
    act8600_power:
    4 84 1
    5 49 1
    6 57 0
    7 57 1
    8 36 1
    ===>start MSC0 clock
    mmc0: No card detect facilities available
    mmc0: new high speed SDHC card at address 0215
    JZ mmc0 driver registered
    ===>start MSC1 clock!
    ===>REG_CPM_CLKGR0 = 0x2fd83780
    mmc1: new SD card at address 0260
    JZ mmc1 driver registered
    musb_hdrc: version 6.0, musb-dma, otg (peripheral+host), debug=0
    jz4760: Normal mode.
    musb_hdrc musb_hdrc.0: DMA IRQ: Shared. DMA Channels: 6.
    jz4760: Disable USB PHY.
    jz_vbus_hotplug: Registered.
    musb_hdrc musb_hdrc.0: USB OTG mode controller at b3440000 using DMA, IRQ 21
    NET: Registered protocol family 1
    cable state is POWER
    msgmni has been set to 495
    alg: No test for stdrng (krng)
    io scheduler noop registered
    io scheduler cfq registered (default)
    Medive printk: create proc : it6610_me!
    LCDC: PixClock:24000000
    REG_CPM_LPCDR=0x20000011
    LCDC: PixClock:24000000
    REG_CPM_LPCDR=0x20000011
    test kernel argv from uboot start!
    JZ4770: Char device core registered.
    JZ4770: Virtual Driver of TCSM registered.
    init rda5807p
    ++++++++++++ HP OUT +++++++++++++
    REG_CPM_GPUCDR= 0x00000002
    GPU CLOCK USE PLL0
    GPU GPU_CLK2x= 340 MHz
    Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
    serial8250: ttyS0 at MMIO 0x0 (irq = 5) is a 16550A
    serial8250: ttyS1 at MMIO 0x0 (irq = 4) is a 16550A
    ɥ±á250: ttyS2 at MMIO 0x0 (irq = 3) is a 16550A
    serial8250: ttyS3 at MMIO 0x0 (irq = 2) is a 16550A
    loop: module loaded
    efuse check OK!
    register misc device efuse successed.
    jz4770_mii_bus: probed
    eth%d: Don't found any phy device at all
    jz4770_mac jz4770_mac.0: MII Probe failed!
    PPP generic driver version 2.4.2
    PPP Deflate Compression module registered
    PPP BSD Compression module registered
    PPP MPPE Compression module registered
    usbmon: debugfs is not available
    ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
    jz-ohci jz-ohci.0: JZ OHCI
    jz-ohci jz-ohci.0: new USB bus registered, assigned bus number 1
    jz-ohci jz-ohci.0: irq 20, io mem 0x13430000
    usb usb1: configuration #1 chosen from 1 choice
    hub 1-0:1.0: USB hub found
    hub 1-0:1.0: 2 ports detected
    Initializing USB Mass Storage driver...
    usbcore: registered new interface driver usb-storage
    USB Mass Storage support registered.
    g_file_storage gadget: File-backed Storage Gadget, version: 20 November 2008
    g_file_storage gadget: Number of LUNs=1
    jz4760: Disable USB PHY.
    musb_hdrc musb_hdrc.0: MUSB HDRC host driver
    musb_hdrc musb_hdrc.0: new USB bus registered, assigned bus number 2
    usb usb2: configuration #1 chosen from 1 choice
    hub 2-0:1.0: USB hub found
    hub 2-0:1.0: 1 port detected
    jz4760: Enable USB PHY.
    jz-gpio-keys: scan interval 20ms
    input: JZ GPIO keys as /class/input/input0
    input: touchscreen as /class/input/input1
    input: JZ Touch Screen registered.
    Create vbat proc entry.
    WARNING: can NOT get clock 4119!
    jz4770-rtc jz4770-rtc: rtc core: registered jz4770-rtc as rtc0
    mmcblk0: mmc0:0215 NCard 3.74 GiB
    mmcblk0: p1 p2 p3 p4
    mmcblk1: mmc1:0260 ITE 1.84 GiB
    mmcblk1: p1 p2 p3 p4
    usbcore: registered new interface driver usbhid
    usbhid: v2.6:USB HID core driver
    register codec 802a6d0c
    ===>enter init_jz_i2s
    drivers/video/jz4760_lcd.c 3103 avout_ack_timer 1
    hdmi out
    JZ I2S OSS audio driver initialized
    NET: Registered protocol family 17
    jz4770-rtc jz4770-rtc: setting system clock to 2011-11-20 20:49:21 UTC (1321822161)
    Freeing unused kernel memory: 1508k freed
    Start mdev...
    1
    Start recovery...
    kjournald starting. Commit interval 5 seconds
    EXT3 FS on mmcblk0p2, internal journal
    EXT3-fs: mounted filesystem with writeback data mode.
    update loop
    local file version is 371
    temp_cfg file length is 351
    sys_file_version is 701
    boot code is 00000001
    serial code num is 3
    serial_code0 is 00000000
    serial_code1 is 00000011
    serial_code2 is 00000001
    temp serial num is 00000001
    file_offsets is 355
    file_offsets is 1035315
    file_offsets is 2070307
    file_offsets is 3105267
    file_offsets is 4922942
    file_offsets is 8102393
    file_offsets is 563847673
    burn offsets is 0
    file array is 3
    burn offsets is 4194304
    file array is 4
    burn offsets is 8388608
    file array is 5
    burn offsets is 12582912
    file array is 6
    burn offsets is 568328192
    file array is 7
    file length is 1034960
    file length is 1034992
    file length is 1034960
    file length is 1817675
    file length is 3179451
    file length is 555745280
    file length is 136314880
    byte_w: 2, byte_h: 16, asc_w: 7, cjk_w: 15
    ----font init finish----
    char_num is 5
    src/update.c 616 update_dir is /mmc/sys_update_file
    enough read_return is 1034960,write_return is 1034960
    enough read_return is 1817675,write_return is 1817675
    enough read_return is 3179451,write_return is 3179451
    total read is 555745280,
    total write is 555745280
    total read is 136314880,
    total write is 136314880
    update success!
    -- prdelka

    v500/v500a: in queste versioni il bug che permetteva l'utilizzo dell'hack è stato fixato quindi non puo' essere utilizzato e le ROMs ed i dati di sistema sono criptati anche se con il "macchinoso" sistema seguente (un tool per criptare/decriptare lo potete trovare qui):
    Grazie al dev cyanic per le info:

    Neo Geo X card build process

    PREPARATION:
    1. Pack games with fbacache and name gameX.aes or gameX.mvs, where X is game number starting from 1
    2. Create gameX.png for launcher image (209x413) where X corresponds to above

    PACKING:
    1. Create /card_game

    2. Encrypt all ROMs and copy to /card_game

    3. Copy all gameX.png to card_game

    4. ROMs hash for copy verification: For each gameX.aes/.mvs, calculate SHA-1 hash. Concat all hashes (no separators), and save to /card_game/card_rom_key.txt

    5. Calculate heaven's gate file:
    - for each game ROM, take last 0x20000 bytes and append "jacky_made"; calculate SHA-1 hash
    - combine all hashes into file
    - struct:
    int hashLength;
    int numEntries;
    char hashes[hashLength] * numEntries

    6. Generate game_card_configure.conf:
    - contents:
    card_game_work_path=/mnt/mmc/card_game/
    card_game_number=x
    - card_game_work_path appears to be unused

    7. Combine heaven's gate and game_card_configure.conf:
    - struct:
    int hashfileLength;
    int configLength;
    byte hashfileData[hashfileLength];
    byte configData[configLength];

    9. swap sprite and test blocks;

    10. gamestore encrypt above with key /card_game/game1.png to /card_game/game_card_configure.conf
    Non è possibile avere su scheda esterna più di 50 giochi+relativa cover a causa di un limite impostato nel firmware (aumentare questo limite richiederebbe troppo lavoro in quanto hard coded quindi è più facile utilizzare diverse schede in ognuna delle quali caricare un massimo di 50 giochi tenendo presente che i restanti titoli non cloni sono meno di 150). I giochi, una volta criptati, NON possono essere switchati tra loro a causa del sistema di codifica che li "lega" insieme.

    Questo fw è necessario solamente se volete utilizzare i giochi originali rilasciati su SD card successivamente all'uscita della console. Se volete "sbloccare" questa versione o si effettua un downgrade ad una versione precedente, oppure si flasha un custom firmware (seguire la guida al flashing nelle relative sezioni).

    Le console con fw337 montano una microSD interna anzichè avere un flash chip, mentre quelle con fw370 potrebbero avere o una microSD oppure un flash chip (l'unico modo per scoprirlo è aprire la console): la mia guida al dumping/flashing è stata testata SOLO su console con flash chip ma c'è una versione degli NGX-Tools per linux anche per la versione con SD (la trovate in allegato a questo thread).


    Esistono 2 versioni conosciute di custom firmware per questa console:

    v0.345-G775E600 (basato su fw 370)

    v0.4-5-GECF6931 (basato su fw 500a)

    di questi due fw ne esistono due sottoversioni: i files .bin minori di 2gb possono essere flashati con il kit apposito ufficiale "Rocket Cable":
    [​IMG]
    quelli da 2gb si flashano con i tools per Linux o per Windows descritti nelle guide. NON ho provato a flashare i firmware in modo inverso (quelli per NGX-Tools flashati con la guida e viceversa) quindi... fatelo eventualmente a vostro rischio e pericolo !

    L1 = switch 4:3/16:9
    L2 = HDMI/TV OUT switch (funziona solamente quando la console è in modalità docked e sono collegate entrambe le uscite)
    R1 = pausa
    R2 = ffwd 1.3/ffwd 1.5/normal speed
    SELECT = pausa (versione docked)
    START = solitamente avvia il gioco
    MENU = continue play / home (aggiunge crediti per i giochi arcade - premere a lungo per far apparire il menu nei giochi arcade)
    START+SELECT (modalità docked) = durante la scritta neo geo, se la ROM è stata riconvertita via fbacache con uniBIOS anzichè con il BIOS classico, accede ad unibios
    R1+R2+START (modalità portatile) = durante la scritta neo geo, se la ROM è stata riconvertita via fbacache con uniBIOS anzichè con il BIOS classico, accede ad unibios

    I firmware NON sono protetti e possono essere flashati/downgradati/upgradati tra le varie versioni senza alcun problema.

    Se avete flashato un fw v500/500a modificato con SD riempita di emulatori la guida per aggiungere giochi criptati funzionerà lo stesso ma se la console trova la cartella SD:\card_game caricherà questa anzichè mostrare i vari emulatori quindi è consigliato utilizzare 2 SD card differenti, una per gli emulatori ed una per le ROMs Neo Geo criptate.



    CREARE GIOCHI AGGIUNTIVI SU CARD ESTERNA


    FW v337/370

    Leggere questo thread.


    FW v500/500a

    Leggere questo thread.



    FLASHARE UN NUOVO FIRMWARE (ORIGINALE o CUSTOM) SOTTO WINDOWS - ANCHE UNBRICK !

    [​IMG]
    NECESSARIO

    - Windows XP (purtroppo sembrano non esistere drivers per il chip JZ4770 per versioni di Windows superiori); va bene anche una versione virtualizzata (testata e funzionante con VMWare).
    - Cavo di collegamento microUSB tra PC e Neo Geo X
    - Il programma USBbootTool.exe in allegato (usb_boot_burn-jz4770-20111025.rar che include anche i drivers necessari)
    - Una immagine da flashare sulla console

    NON è necessario alcun cavetto speciale o SD card particolare

    QUESTA PROCEDURA PERMETTE ANCHE L'UNBRICK DI CONSOLES BRIKKATE !!


    PROCEDURA

    1 - A console SPENTA, tenendo premuto il tasto START, collegarla al PC: si accenderanno contemporaneamente i led rosso e blu della console e verrà riconosciuto un nuovo dispositivo USB i cui drivers mancheranno (potete vedere il dispositivo non riconosciuto in "Gestione Periferiche");

    2 - Proprio da "Gestione Periferiche", alla voce del dispositivo non riconosciuto, selezionare l'opzione di selezione manuale dei drivers e dargli in pasto la cartella dove si trova USBbootTool.exe; la console sarà ora riconosciuta come Ingenic USB Boot Class :arrowright: USB Boot Device;

    3 - Scollegare la console;

    4 - Avviare il programma USBbootTool.exe;

    5 - A console SPENTA, tenendo premuto il tasto START, collegarla di nuovo al PC; ora verrà riconosciuta correttamente dal sistema (anche se il programma "sembra" non mostrare alcun collegamento);

    6 - Verificare che il menu a tendina in alto a destra, alla voce "CPU", abbia selezionato "Jz4770" (potete selezionare sia "Nand Flash" che "SD/MMC card" alla voce in basso a destra, è indifferente);

    7 - Cliccare, a livello della riga "uboot.bin", sul pulsante in fondo a destra "II..." e dargli in pasto il file di immagine (es. nand.img); AUTOMATICAMENTE il programma metterà la spunta alla voce uboot.bin e SEMPRE AUTOMATICAMENTE inizierà la procedura di full flashing (non verrà flashato solo il boot ma tutta l'immagine scelta) senza chiedere alcuna conferma; la procedura durerà circa 10-15 minuti; potete controllare la progressione nella barra in basso nella locazione in cui il PC ha trovato il dispositivo:
    [​IMG]

    8 - Scollegare la console e... FATTO !

    9 - Opzionale: a questo punto, collegando la console accesa al PC, potrebbe apparire una memoria di massa da circa 1GB non formattata: potete formattarla come preferite (di default dovrebbe essere una FAT16 ma non sono sicuro in ogni caso il tipo di formattazione di questa partizione non cambia nulla).

    ATTENZIONE
    La procedura di flashing potrebbe bloccarsi al 90-95% (la barra di progressione non scorre più): credo che dipenda dalle dimensioni del file .img utilizzato: in ogni caso, se ciò si dovesse verificare, PRIMA chiudete il programma e poi scollegate la console; alla sua accensione dovrebbe funzionare tutto correttamente perchè il sistema operativo si trova nelle prime 3 partizioni che occupano circa 6-700 mega (quindi fino a circa il 30-35%) il resto è rappresentato dalla partizione di memoria di massa che si vede collegando la console al PC.


    Il programma è anche in grado di leggere (dumpare) la memoria interna selezionando "Form" = 0 e "To" = "Il blocco fino al quale leggere" ma nei miei test il programma non riesce a dumpare oltre il blocco 5000 (ogni blocco corrisponde a 512 bytes ed il totale dei blocchi dovrebbe essere 3862528).



    DUMPING/FLASHING della NAND o SD via LINUX


    Anche questo metodo risolve eventuali bricks.


    NECESSARIO

    - Pc con Linux Ubuntu
    - Cavo di collegamento microUSB tra PC e Neo Geo X


    PROCEDURA

    1 - Avviare UBUNTU

    2 - Aprire il terminale in una nuova cartella dal nome a piacere (cliccare con il pulsante destro del mouse sopra la cartella create e selezionare la voce :arrowright: open terminal)

    Aggiornare git e scaricare il repository degli NGX Tools:
    sudo apt-get install git
    git clone https://github.com/thisisdavlar/xcom_ngx_tools.git

    Entrare nella cartella dei sorgenti di NGX Tools
    cd xcom_ngx_tools/
    cd ingenic-boot-master

    Installare le dipendenze necessarie per una compilazione che vada a buon fine (VERIFICATE la risposta ad ogni comando e, se richiesto, date YES per confermare altrimenti il comando non verra' eseguito !):
    sudo apt-get update
    sudo apt-get install make
    sudo apt-get install gcc
    sudo apt-get install libusb-dev
    sudo apt-get install libconfuse-common
    sudo apt-get install libconfuse2
    sudo apt-get install libconfuse-dev
    sudo apt-get install libusb-1.0-0-dev
    sudo cp tool/99-IngenicBoot.rules /etc/udev/rules.d

    Ora avviare la compilazione dei tools avviando lo specifico script con il comando:
    ./rebuild.sh
    appariranno degli warnings, non curatevene - NON devono apparire errori ! Se appaiono probabilmente non siete riusciti ad installare correttamente le librerie libconfuse - trovate in allegato a questo thread le 3 necessarie da installare NELL'ORDINE seguente: libconfuse-common, libconfuse2, libconfuse-dev.

    Adesso tenere premuto il tasto START della console e, mentre lo si tiene premuto, collegarla al PC tramite cavetto microUSB: si accenderanno i led blu e rosso.

    Verificare il corretto riconoscimento della console da parte del PC con il comando:
    ./ingenic-boot --probe
    dovremmo ricevere qualcosa del tipo:
    probe only
    bus 001 dev 013: pid 4770
    data: JZ4770V1

    A questo punto dumpare la eMMC [KLM2G1DEHE-B101] della console:
    ./dump_handheld.sh
    (la procedura dovrebbe durare 10-20 minuti, se dovesse durare qualche ora è probabile che il collegamento USB con la console non sia buono quindi anche il dump non sarà corretto - provare un'altra porta USB)
    Otterremo finalmente il file nand.img di circa 2GB - BACKUPPIAMOLO IN UN POSTO SICURO !!

    Se si ottiene l'errore> "../bin/fw_cfg_tool: not found" significa che non e'andata a buon fine la compilazione con lo script rebuild.sh a causa di una dipendenza/libreria mancante o non correttamente installata ad inizio procedura.

    PER DUMPARE LA SD utilizzare i sorgenti gia' modificati in allegato (ingenic-boot-master-SD.rar) e come ultimo comando, al posto di ./dump_handheld.sh utilizzare invece il comando:
    ./ingenic-boot --dump=sd.img@3862528

    Se il computer non trova il dispositivo nonostante il comando probe abbia funzionato dovete sostituire il file di configurazione dentro /ingenic-boot-master/fw/current.cfg con quello in allegato di default chiamato jz4770_default.cfg.


    Per flashare un firmware copiarlo nella cartella dove si trova il file "ingenic-boot" e dare il comando:
    sudo ./ingenic-boot --boot nand.img



    Se con questi sistemi non riuscite a riflashare il vostro firmware è probabile che il flash chip della vostra console sia andato; potete sempre utilizzare la hard mod per bypassarlo utilizzando una scheda (micro)SD saldata come mostrato in figura:
    [​IMG]
    [​IMG]
    Immagine del pinout tratta da qui: https://steward-fu.github.io/website/handheld/ngx-v370/boot_sdcard0.htm



    TEST MODE

    [​IMG]

    Se nella radice memory card esterna inserite un file chiamato test_mode.txt la console al boot avvierà un programma di testing che richiederà la modalità docked (console inserita nella sua docking station) per essere avviato, dopodichè proseguirà in modalità handheld.

    Di seguito vari screenshots di alcuni tests:
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]



    CURIOSITA'

    La console ha una CPU IGNEIC JZ4770 ed un LCD 480x272 (16:9)… girovagando per il web è emerso che almeno un'altra console ha le stesse specifiche, per l'esattezza la GCW Zero; ho dunque provato a flasharne il firmware .img (OpenDingux - nome del file trovato "SDCARD0 dingux_english_4g_20130113.rar") ed il risultato è stato il seguente :smile:
    [​IMG]
    [​IMG]
    [​IMG]
    Tempo di boot di pochissimi secondi, le funzioni hardware mancanti (es. la radio, l'accelerometro ed il motorino vibrante) ovviamente non funzionano ma il software comunque non crasha. Osservando i dettagli si nota che il firmware è quello di una Ritmix RZX-50, console semi-sconosciuta (con CPU JZ4755 quindi leggermente differente!) probabilmente venduta in Russia che offre il supporto di vari formati [MPEG, MPG, Flash, MPEG1, MPEG2, MKV (H.264, DIVX, XVID), AVI (H.264, DIVX, XVID), VOD, RM, RMVB, MP4, 3GP, AVI, ASF, MPE, FLV, support for HD video P720, JPEG, BMP, GIF, PNG, TXT, PDF, RTF, DOC, HTML]. Altra console con lo stesso processore è ad esempio la più recente RG-350 ma il display ha risoluzione differente (320x240) quindi un eventuale suo firmware flashato avrebbe potrebbe non funzionare correttamente... ed infatti, testando il file "RG-350_BASE_v1.5_231019.img":
    [​IMG]
    si avvia il boot logo con immagine corrotta e la console va in bootloop.
    Ho testato anche il fw "ArcadeMini_CFW_133_4.7z" (per la console RS-07 Retro Arcade Mini) che ha la stessa risoluzione della NGX ma CPU JZ4760B ed ottengo un black screen.
    Altri possibili "candidati", per chi avesse voglia di provare, si possono trovare qui.



    CONCLUSIONI

    La console nasce priva di protezioni ma la successiva necessità di vendere altri giochi su scheda esterna ha richiesto una codifica degli stessi che è rimasta inviolata per molti anni probabilmente a causa del fatto che questa console non ha venduto affatto bene e quindi non è arrivata tra le mani di nessun dev. L'hardware rimane pregevole per l'epoca in cui è stata distribuita ed è a tutti gli effetti una bella portatile per fare del retrogaming vista la possibilità di poter utilizzare sia una uscita TV-Out che una uscita HDMI; ha nel suo arsenale un bel Arcade Stick classico con connessione USB ed una docking station molto simile ad un originale modello AES. Certo, dal punto di vista degli homebrews ha solamente emulatori ma vista la possibilità di utilizzare firmwares alternativi le sue funzioni possono espandersi di molto !
     

    File Allegati:

    #1
    Ultima modifica: 28 Mag 2021
    A zoomx, iostream, gelderm e 3 altri utenti piace questo elemento.
  2. peppepintaudi

    peppepintaudi Livello 8

    Iscritto:
    15 Ott 2015
    Messaggi:
    198
    Like ricevuti:
    29
    GRAZIE per la menzione speciale :smiley: bella guida e bel lavoro, io ho solo un dubbio, ma per trovare qualche img da dumpare? dico a me non importa perché la lascio cosí com'é la mia, peró quando e se ci metterai dentro il custom firmware, faglielo un video che sono curioso!
     
    #2
    A student piace questo elemento.
  3. student

    student Staff Livello 45 Staff

    Iscritto:
    30 Ago 2015
    Messaggi:
    4.890
    Like ricevuti:
    5.060
    Le img già dumpate (sono 5 in totale, 3 originali e 2 custom) si trovano in giro, in particolare in alcuni threads di un certo forum francese.

    Ho già messo il cf basato su fw500a ma ancora non ho l'adattatore SD (ho provato a costruirlo ma ho visto che ci vuole troppo tempo ed ho desistito). Il sistema di interfaccia grafica è identico a quello originale.
     
    #3
    Ultima modifica: 15 Mar 2020
Sto caricando...

Condividi questa Pagina