Main Restorations Software Audio/Jukebox/MP3 Everything Else Buy/Sell/Trade
Project Announcements Monitor/Video GroovyMAME Merit/JVL Touchscreen Meet Up Retail Vendors
Driving & Racing Woodworking Software Support Forums Consoles Project Arcade Reviews
Automated Projects Artwork Frontend Support Forums Pinball Forum Discussion Old Boards
Raspberry Pi & Dev Board controls.dat Linux Miscellaneous Arcade Wiki Discussion Old Archives
Lightguns Arcade1Up Try the site in https mode Site News

Unread posts | New Replies | Recent posts | Rules | Chatroom | Wiki | File Repository | RSS | Submit news

Recent Posts

Pages: [1] 2 3 ... 10

Started by TheRetroCarrot - Last post by Zebidee

I've only just looked in at this project, which I regret, as it is ambitious and innovative. Nice work so far!


Something I found interesting is that the exact location where I have purity struggles, is where it looks like they tack welded a plate over a seam in the original tube frame at the factory. I'm not sure if this is normal, or why this would have been done over just welding the frame itself. I'm almost thinking this might have been a hacky repair down in the factory for some reason, though it might just be standard. Can't say I've ever noticed on another tube before, and the location made me wonder. Either way I managed to get the purity to an acceptable barely perceptible issue before, I know I'll be able to get it good with enough playing around with magnets. I also ran my degaussing coil over the metal shield while I had it apart, as I suspect it might have gotten magnetized.



A thought has occurred to me that perhaps your "purity" issue relates to the horizontal stabilizing wire(s) present in all Sony Trinitron CRTs? They prevent the aperture grill wires from vibrating, but are often faintly visible if you look hard enough.

This is an extreme close-up:

https://en.wikipedia.org/wiki/Aperture_grille#/media/File:CRT_Phosphors.jpg
https://en.wikipedia.org/wiki/Aperture_grille

Started by TheRetroCarrot - Last post by javeryh

Looks good so far!

3   Main Forum / Re: thin client pcon Today at 04:21:12 pm

Started by daywane - Last post by Lingwendil

Which M.2 drives did you order? I have piles of the things in 128GB and 256GB if its M.2 SATA, and a few bigger (512GB, 1TB, 2TB) drives in M.2 PCIE/NVME.

These are interesting for sure, I recently picked up an Intel i3 and i5 NUC for free, and so far the i3 version runs almost everything well except for Xbox(!). Sure beats struggling with a raspberry pi 3 and spotty emulation on harder to run stuff.

Instead of running windows on it I would try a Batocera install- you can easily install it on a smaller drive or USB stick to boot it, and then runn all your games on a separate drive. very easy to use and configure.

4   Main Forum / NEO-GEO MVS-2-13 dimensions?on Today at 04:15:11 pm

Started by Lingwendil - Last post by Lingwendil

Hello all, I'm having a heck of a time finding any measurements for the MVS-2-13 type NEO-GEO cabinets. For anyone experienced with them, are they simply scaled down versions of the MVS-2-25 just with a larger bezel to fit the smaller CRT?

Looking for any details on these other than approximate dimensions seems rather difficult, and Jakobuds plans are only for the larger cabs.

Started by mourix - Last post by pbj

Beautiful work.  How the hell are you getting a Master System ROM working without a mapper?  I looked into making SMS carts with a Genesis footprint and recall you were rather limited on what would run without custom chips.



Started by mourix - Last post by mourix

New job is keeping me a tad busy, but I am slowly filling the holes:



The power cord needed a refresh too:



It's always so satisfying to put in a new cord :)

Started by Toasty833 - Last post by Toasty833

So I did some more testing today. First run, all the offsets were off again, second they were as before. It seems that when my headset loses tracking it can switch to a different offset pattern. The first offset is roughly upside down and 3-4 feet higher. The second one is a 2-3 feet higher turned 90 degrees right, with the headset also being turned about 90 degrees right. These both affect the replays, but cycling the HMD tends to put it back on the first offset.

I tried updating to the latest steamVR beta, no change. I tried roomscale rather than standing room only, no change. I tried saving poses from my tracker instead by trying to save a different device number, but this always returned the same value. I tried uninstalling other VR overlays and such, didn't help.

I went back to manual adjustment, this time with the help of OVIE on the desktop. I can't save the offset over the replay without it just compounding the existing offset bug, but I can just save it as a profile in OVIE and then load up the replay and apply the profile to fine tune it. Which also lets me adjust on the fly using VR view, which is useful. As of right now I've got it in the general ballpark, just needs a lot of fine tuning, which OVIE isn't great at.

Started by yamatetsu - Last post by yamatetsu

"Hagar the Horrible'

21 x 30cm, backer board 4mm, Hagar 4mm

Started by geecab - Last post by geecab

Really good work Yolo!

I must admit I haven't made much progress on the airborne front. I've been doing some tidying of the steering changes for hard/race and street drivin'. I think I'm going to start a thread on the bannister mame forum ( https://forums.bannister.org/ubbthreads.php?ubb=postlist&Board=1 ) and ask the mame team for a bit of guidance on how to add a few options that I think we need.

Some interesting-ish things:

- I've noticed the IPT_POSITIONAL control option seems like a good compromise for both mouse and joystick. For mouse it acts like the IPT_DIAL does, and for joystick it acts like an IPT_PADDLE does...
Code: [Select]
PORT_START("mainpcb:12BADC.0")       /* 400000 - steering wheel */
PORT_BIT( 0xfff, 0x800, IPT_POSITIONAL ) PORT_POSITIONS(0xfff) PORT_WRAPS PORT_SENSITIVITY(50) PORT_KEYDELTA(1) PORT_NAME("Steering Wheel")

- Regarding editing the nvram, and the 6 bytes that seem to change when you calibrate your wheel (2 bytes for CNTSPTRN, 2 bytes for PATCEN and finally 2 weird bytes). I think I've worked out those weird bytes are a combination of the CNTSPTRN and PATCEN, added to a strange number. I've posted the latest version of the script below, I've called the weird 2 bytes the 'Edge', and the strange number the  CNTSPTRN and PATCEN are added to I've called the 'Edge base'. I don't really know what they are used for. Anyways, this is handy, because for strreet drivin we are now able to edit the nvram and change the default -98 patcen to 0. I can't seem to change street drivin' CNTSPTRN from 512 to 1024. I can change the nvram, and it gets loaded/accepted by the game ok, but I can tell when I play the game the CNTSPTRN is still fixed to 512.

- Finally, I might take another look at those strange numbers I was reading from another register a while ago (That seemed to change based on steering). I'm wondering if they have something to do with force feedback... maybe...

:)

Code: [Select]
import sys

BYTES_EXPECTED = 2048
EDGE_BASE_HARDDRIV = 0x2C1D
EDGE_BASE_STRTDRIV = 0x295D


def load_byte_array(filename):

    global BYTES_EXPECTED

    with open(filename, mode='rb') as file: # b is important -> binary
        fileContent = file.read().hex()

    data = []
    byte_count = 0
    this_byte = ""
    for c in fileContent:
        this_byte += c
        if len(this_byte) == 2:
            data.append(int(this_byte, 16))
            this_byte = ""
            byte_count += 1

    if byte_count != BYTES_EXPECTED:
        print("Error! Unexpected number of bytes in {}. Expecting={}, actual={} ".format(filename, BYTES_EXPECTED, byte_count))
        exit(1)

    #print("{}".format((fileContent)))
    return data


def save_byte_array(filename, byte_array):
    # make file
    newFile = open(filename, "wb")
    # write to file
    newFileByteArray = bytearray(byte_array)
    newFile.write(newFileByteArray)


def load_nvram(nvram_path):

    global BYTES_EXPECTED

    mainpcb_200e = load_byte_array(nvram_path + "mainpcb_200e")
    mainpcb_210e = load_byte_array(nvram_path + "mainpcb_210e")

    # Combine the data...
    nvram = []
    for i in range(0, BYTES_EXPECTED):
        nvram.append((mainpcb_200e[i] << 8) | mainpcb_210e[i])

    return nvram

def save_nvram(nvram_path, nvram):

    global BYTES_EXPECTED

    mainpcb_200e = []
    mainpcb_210e = []

    # split the data...
    for i in range(0, BYTES_EXPECTED):
        mainpcb_200e.append((nvram[i] >> 8)&0xff)
        mainpcb_210e.append(nvram[i]&0xff)

    save_byte_array(nvram_path + "mainpcb_200e", mainpcb_200e)
    save_byte_array(nvram_path + "mainpcb_210e", mainpcb_210e)


def patcen_to_int(patcen):
    if (patcen&0xf000) == 0xf000:
        return -1 * (0x1000 - patcen&0x0fff)
    else:
        return patcen


def int_to_patcen(i_patcen):

    if i_patcen < 0:
        return 0xf000 | (0x1000 + i_patcen)
    else:
        return i_patcen


def get_edge(cntsptrn, patcen, start_edge, undo=False):

    edge = start_edge
    i_patcen = patcen_to_int(patcen)

    # Leave the sign 'as is' when undoing, flip the sign when redoing...
    cntsptrn *= 1 if undo else -1
    i_patcen *= 1 if undo else -1

    edge += cntsptrn
    edge += i_patcen

    return edge


def validate_edge_base(edge_base, exit_on_error=True):

    if edge_base == EDGE_BASE_HARDDRIV:
        print("Hard/Race Drivin' style edge detected - OK".format(hex(edge_base)))
    elif edge_base == EDGE_BASE_STRTDRIV:
        print("Street Drivin' style edge detected - OK".format(hex(edge_base)))
    else:
        print("Error! Unexpected edge base {} detected. Expecting either Hard/Race Drivin' edge base {} or Street Drivin' edge base {})".format(hex(edge_base),hex(EDGE_BASE_HARDDRIV), hex(EDGE_BASE_HARDDRIV)))
        if exit_on_error:
            if input('Continue anyway?') != 'y':
                exit(0)


def do_read(nvram_path):

    nvram = load_nvram(nvram_path)
    cntsptrn = "?"
    patcen = "?"
    edge = "?"

    for i in range(0, BYTES_EXPECTED):
    #for i in range(0x210, 0x218):
        temp = "ADDR:0x{:04X} - 0x{:04X} {:<8}".format(i, nvram[i], f"({nvram[i]})")
        if i == 0x212:
            temp = temp + " CNTSPTRN"
            cntsptrn = nvram[i]
        elif i == 0x213:
            temp = temp + " PATCEN"
            patcen = nvram[i]
        elif i == 0x214:
            temp = temp + " EDGE"
            edge = nvram[i]

        print(temp)

    i_patcen = patcen_to_int(patcen)
    print(f"Read complete. CNTSPTRN:{hex(cntsptrn)} ({cntsptrn})     PATCEN:{hex(patcen)} ({i_patcen})  EDGE:{hex(edge)}")

    # Check the edge looks right...
    edge_base = get_edge(cntsptrn, patcen, edge, undo=True)
    validate_edge_base(edge_base, exit_on_error=False)


def do_diff(nvram_path_a, nvram_path_b):

    global BYTES_EXPECTED

    a = load_nvram(nvram_path_a)
    b = load_nvram(nvram_path_b)

    diff_count = 0
    for i in range(0, BYTES_EXPECTED):
        if a[i] != b[i]:
            temp = "ADDR:0x{:04X} - A:0x{:04X} {:<8} DIFF B:0x{:04X} {:<8}".format(i, a[i], f"({a[i]})", b[i], f"({b[i]})")
            if i == 0x212:
                temp = temp + " CNTSPTRN"
            elif i == 0x213:
                temp = temp + " PATCEN"
            diff_count += 1
            print(temp)

    print(f"{diff_count} differences detected.")


def do_reset(nvram_path, cntsptrn, i_patcen):

    nvram = load_nvram(nvram_path);

    # Check the edge looks right and if it doesn't, ask user if they want to continue...
    edge_base = get_edge(nvram[0x212], nvram[0x213], nvram[0x214], undo=True)
    validate_edge_base(edge_base, exit_on_error=True)

    cntsptrn = cntsptrn
    patcen = int_to_patcen(i_patcen)
    edge = get_edge(cntsptrn, patcen, edge_base, undo=False)

    nvram[0x212] = cntsptrn
    nvram[0x213] = int_to_patcen(i_patcen)
    nvram[0x214] = edge

    save_nvram(nvram_path, nvram)

    print(f"CNTSPTRN reset to {cntsptrn}, PATCEN reset to {i_patcen}. OK")

def clean_path(my_path):
    if not my_path.endswith('/'):
        my_path = my_path + '/'
    return my_path

def show_usage():
    print("Nvram Helper")
    print("------------")
    print("")
    print("Usage:")
    print("    python3 nvram_helper.py read  <nvram_directory>")
    print("    python3 nvram_helper.py diff  <nvram_directory_a> <nvram_directory_b>")
    print("    python3 nvram_helper.py reset <nvram_directory> <cntsptrn> <patcen>")

    print("Examples:")
    print("    python3 nvram_helper.py read nvram/harddrivcb")
    print("    python3 nvram_helper.py diff nvram/harddrivcb nvram/strtdriv")
    print("    python3 nvram_helper.py reset nvram/harddrivcb 1024 0")
    print("    python3 nvram_helper.py reset nvram/racedrivcb 1024 0")
    print("    python3 nvram_helper.py reset nvram/strtdriv 512 0")
    exit(0)


#print("{}".format(sys.argv))

if len(sys.argv) < 2:
    show_usage()

cmd = sys.argv[1]
if cmd == 'read':
    if len(sys.argv) < 3:
        print(f"Not enough arguments.")
        exit(1)
    do_read(clean_path(sys.argv[2]))

elif cmd == 'diff':
    if len(sys.argv) < 4:
        print(f"Not enough arguments.")
        exit(1)
    do_diff(clean_path(sys.argv[2]), clean_path(sys.argv[3]))

elif cmd == 'reset':
    if len(sys.argv) < 5:
        print(f"Not enough arguments.")
        exit(1)
    do_reset(clean_path(sys.argv[2]), int(sys.argv[3]), int(sys.argv[4]))

elif cmd.lower() in ["h", "-h", "help", "/help", "/h", "?", "--h"]:
    show_usage()

else:
    print(f"Unknown command '{cmd}'.")
    show_usage()

10   Main Forum / Re: thin client pcon Today at 02:45:31 am

Started by daywane - Last post by daywane

Wife gave in today. the 16 gig m.2 is just to small for what I want. A new 256 gig m,2 is on order.
there is 3 programs that I have been using that are very help full for a project like this.
1st is Ventoy2Disk . It will let you put multiple ISO on a single thumb drive and run them. not windows ISO's that  I put in but others Heck yea .
2ns. is snappy driver. HUGE download! 40 gig. in a windows computer it will install all your drivers!
3rd . Hasleo WinToUSB, this is a nice program that will turn a windows ISO into a install thumb drive.
windows 11 was real slow on the thin client.
windows 10 was OK for you tube and internet stuff. game's NOPE
Windows 7 after drivers I ran out of disk space. tiny windows installs was a pain in the but!
Windows 7 looked very promising but I ran out of drive installing direct x9
Prime OS and Batocera, I was not happy with.
Linux Mint looks very promising also. I did not want to install Linux  to my only M.2 drive. ( i do not know how to reformat a M.2 drive after a Linux install) Now I have a second drive coming in I might install .
I did build a junk PC from parts I have around and tossed Mint on it to learn about Linux. Mint is not that bad. every thing like icons , pointer and text  is VERY SMALL! maybe because I am on a 50" TV. I am  working on that now
Pages: [1] 2 3 ... 10