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

  

Author Topic: HiToText (Version 2010.11.4).  (Read 154526 times)

0 Members and 2 Guests are viewing this topic.

Fyrecrypts

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 237
  • Last login:August 19, 2015, 10:50:47 am
  • .hi guy
Re: HiToText (Version 2009.8.5.0) and GHOST in closed alpha.
« Reply #400 on: August 07, 2009, 02:40:49 pm »
Aha, I think I figured it out. HiToText does make calls to MAME, to determine what version your score files would be in (currently only for Track and Field). It will run anything in your mame.exe folder that is an exe and has the word mame in it. I'll bet you have a self-extracting file in the same folder as mame.exe named mame0133.exe or something like that.

This is a bug, and I'll need to fix it in HiToText, in the meantime, take that file out of your folder.
Help us crack more .hi files here:
http://forum.arcadecontrols.com/index.php?topic=83614.0
Generate the newest hiscore.dat here:
http://www.hitotext.com/HiScoreDat/index.php
Sourceforge project page:
https://sourceforge.net/projects/hitotext

Invincer

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 53
  • Last login:August 06, 2010, 06:02:22 pm
Re: HiToText (Version 2009.8.5.0) and GHOST in closed alpha.
« Reply #401 on: August 07, 2009, 03:02:41 pm »
Thanks Firecrypt. Having it happen on both computers when no one else posted about it got me to thinking, it had to be something unique about my situation... Found it (finally)! There was no mame.exe in the folder at all... When I compiled mine I did it for a dual core and it named it vmame.exe, not mame.exe. So I have been using vmame.exe and mapping eveything to that in the settings. I just named vmame to mame, remapped settings in HS, and voila... it works! You are probably right as to why it did what it did. I have a few other exe files in the mamefolder, and I bet it was latching onto one of them since it did not see mame.exe :)

Now that I have it running in HS... it looks pretty cool, and blends in with the themes (unlike other FEs); great job...

Two quick questions? 1, can I edit how big the font text is? It bleeds over off the side of the screen on some scores. and 2, does it work with hyperlaunch yet? I have other things running which need Hyperlaunch like the script for the betabrite display and the script in Hyperlaunch which shows control panel and cabinet pictures on 2nd screen when in MAME games.

Thanks again!!

Fyrecrypts

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 237
  • Last login:August 19, 2015, 10:50:47 am
  • .hi guy
Re: HiToText (Version 2009.8.5.0) and GHOST in closed alpha.
« Reply #402 on: August 07, 2009, 03:08:50 pm »
Thanks Firecrypt. Having it happen on both computers when no one else posted about it got me to thinking, it had to be something unique about my situation... Found it (finally)! There was no mame.exe in the folder at all... When I compiled mine I did it for a dual core and it named it vmame.exe, not mame.exe. So I have been using vmame.exe and mapping eveything to that in the settings. I just named vmame to mame, remapped settings in HS, and voila... it works! You are probably right as to why it did what it did. I have a few other exe files in the mamefolder, and I bet it was latching onto one of them since it did not see mame.exe :)

Now that I have it running in HS... it looks pretty cool, and blends in with the themes (unlike other FEs); great job...

Two quick questions? 1, can I edit how big the font text is? It bleeds over off the side of the screen on some scores. and 2, does it work with hyperlaunch yet? I have other things running which need Hyperlaunch like the script for the betabrite display and the script in Hyperlaunch which shows control panel and cabinet pictures on 2nd screen when in MAME games.

Thanks again!!

It actually will work as vmame.exe however it's looking for anything with mame in alphabetical order, so it's probably finding mame.exe before it finds anything else, glad you got it working!

I don't believe you can edit the text size in HyperSpin. I'm not sure if this is something Bill has in the works, but you can always ask on the Hyperspin forums.

As far as I know it still doesn't work with Hyperlaunch, there's nothing I can do about that though. Hyperlaunch does not close MAME correctly apparently, and so no .hi files are ever saved. I may be wrong though, and this may have been fixed. If it has, I need to update my instructions on the HyperSpin boards. You can technically run HiToText with Hyperlaunch on, but none of your scores will ever update.
Help us crack more .hi files here:
http://forum.arcadecontrols.com/index.php?topic=83614.0
Generate the newest hiscore.dat here:
http://www.hitotext.com/HiScoreDat/index.php
Sourceforge project page:
https://sourceforge.net/projects/hitotext

Cananas

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 299
  • Last login:August 27, 2017, 07:39:03 am
  • and the seventh day... PacMan was created
Re: HiToText (Version 2009.8.5.0) and GHOST in closed alpha.
« Reply #403 on: August 07, 2009, 05:12:33 pm »
Next to come, completely new in hiscore.dat:
Code: [Select]
nmouse:
nmouseb:
0:4e88:03:00:00
0:43ed:06:40:40
0:43d4:01:48:48 ; "H" letter from "HIGH SCORE" used as checkbyte

woodpeck:
woodpeca:
0:4e88:03:00:00
0:43ed:06:40:40
0:43d4:01:48:48 ; "H" letter from "HIGH SCORE" used as checkbyte


Fyrecrypts

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 237
  • Last login:August 19, 2015, 10:50:47 am
  • .hi guy
Re: .hi file conversion.
« Reply #404 on: August 10, 2009, 12:02:29 pm »
Next to come, completely new in hiscore.dat:
Code: [Select]
nmouse:
nmouseb:
0:4e88:03:00:00
0:43ed:06:40:40
0:43d4:01:48:48 ; "H" letter from "HIGH SCORE" used as checkbyte

woodpeck:
woodpeca:
0:4e88:03:00:00
0:43ed:06:40:40
0:43d4:01:48:48 ; "H" letter from "HIGH SCORE" used as checkbyte


Nice! Thanks Cananas!
Help us crack more .hi files here:
http://forum.arcadecontrols.com/index.php?topic=83614.0
Generate the newest hiscore.dat here:
http://www.hitotext.com/HiScoreDat/index.php
Sourceforge project page:
https://sourceforge.net/projects/hitotext

Fyrecrypts

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 237
  • Last login:August 19, 2015, 10:50:47 am
  • .hi guy
Re: HiToText (Version 2009.8.5.0) and GHOST in closed alpha.
« Reply #405 on: August 25, 2009, 06:00:48 pm »
Next version may take a while, as I've decided to try and reduce the size of the project by combining a lot of similar code. Each driver is to be changed to use the new functionality whenever possible. I've probably spent about 3 hours converting 6 drivers so far. I may just release a version that has some drivers using the old style, and some using the new as HiToText will still work using the old method.

This will make writing new drivers take much less time. So hopefully by spending a lot of time on it now, we can save a lot of time on it later.

I've posted what the new 10yard driver looks like so you can all get a good comparison of how different it really is.
Code: [Select]
using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
using System.Runtime.InteropServices;
using HiToText;

namespace HiGames
{
    // Only the Top 10 are shown during the game
    class _10yard : Hiscore
    {
        [StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Ansi)]
        public struct HiscoreData
        {
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Score1;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Name1;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Score2;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Name2;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Score3;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Name3;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Score4;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Name4;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Score5;       
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Name5;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Score6;       
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Name6;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Score7;       
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Name7;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Score8;       
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Name8;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Score9;       
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Name9;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Score10;       
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Name10;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Score11;       
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Name11;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Score12;       
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Name12;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Score13;       
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Name13;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Score14;       
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Name14;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Score15;       
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Name15;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Score16;     
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Name16;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Score17;       
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Name17;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Score18;       
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Name18;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Score19;       
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Name19;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Score20;       
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Name20;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Score21;       
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Name21;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Score22;       
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Name22;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Score23;       
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] Name23;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public byte[] TopScore;
        }

        public Formatting.Mapping mapping = new Formatting.Mapping();
        public Formatting.StringFormatFlag format =
            Formatting.StringFormatFlag.NeedsSpecialMapping |
            Formatting.StringFormatFlag.ASCIIStandard;

        public _10yard()
        {
            m_numEntries = 23;
            m_format = "RANK|SCORE|NAME";
            m_gamesSupported = "10yard,10yardj,vs10yard,vs10yarj";
            m_extensionsRequired = ".hi";

            mapping.AddMapping('.', 0x5b);
            mapping.AddMapping(' ', 0x5c);
        }

        public string ConvertName(byte[] name)
        {
            return Formatting.ByteArrayToString(name, mapping, format);
        }

        public byte[] ConvertName(string name)
        {
            return Formatting.StringToByteArray(name, mapping, format);
        }

        public byte[] ConvertScore(string score)
        {
            return HiConvert.ReverseByteArray(HiConvert.IntToByteArrayHex(Convert.ToInt32(score), 3));
        }

        public override void SetHiScore(string[] args)
        {
            //int rankGiven = Convert.ToInt32(args[0]);
            int score = System.Convert.ToInt32(args[1]);
            string name = args[2];

            HiscoreData hiscoreData = (HiscoreData)HiConvert.RawDeserialize(m_data, 0, typeof(HiscoreData));
            Regex rxScore = new Regex("^Score.*$");
            Regex rxName = new Regex("^Name.*$");

            //Determining rank.
            int rank = Formatting.DetermineRank(
                score, rxScore, hiscoreData, Formatting.DetermineScores.DetermineScoreReversed);

            //Adjusting lower scores.
            List<Regex> adjusters = new List<Regex>(new Regex[] { rxScore, rxName });
            hiscoreData = (HiscoreData)Formatting.AdjustScores(rank, hiscoreData, adjusters);

            //Replacing new scores.
            List<Formatting.Placement> placements = new List<Formatting.Placement>();
            placements.Add(new Formatting.Placement(name, rxName, ConvertName));
            placements.Add(new Formatting.Placement(score.ToString(), rxScore, ConvertScore));
            placements.Add(new Formatting.Placement(score.ToString(), new Regex("^TopScore$"), true, ConvertScore));

            hiscoreData = (HiscoreData)Formatting.ReplaceNew(rank, hiscoreData, placements);

            byte[] byteArray = HiConvert.RawSerialize(hiscoreData);

            HiConvert.ByteArrayCopy(m_data, byteArray);
        }

        //public override void ModifyName(int rank, string name)
        public void ModifyName(int rank, string name)
        {
            HiscoreData hiscoreData = (HiscoreData)HiConvert.RawDeserialize(m_data, 0, typeof(HiscoreData));

            List<Formatting.Placement> placements = new List<Formatting.Placement>();
            placements.Add(new Formatting.Placement(name, new Regex("^Name.*$"), ConvertName));

            hiscoreData = (HiscoreData)Formatting.ReplaceNew(rank - 1, hiscoreData, placements);

            byte[] byteArray = HiConvert.RawSerialize(hiscoreData);

            HiConvert.ByteArrayCopy(m_data, byteArray);
        }

        public override void EmptyScores()
        {
            HiscoreData hiscoreData = (HiscoreData)HiConvert.RawDeserialize(m_data, 0, typeof(HiscoreData));

            //We also want to get the top score and empty that.
            hiscoreData = (HiscoreData)Formatting.EmptyScores(hiscoreData, new Regex("^.*Score.*$"), ConvertScore);

            byte[] byteArray = HiConvert.RawSerialize(hiscoreData);

            HiConvert.ByteArrayCopy(m_data, byteArray);

            SaveData();
        }

        public override string HiToString()
        {
            string retString = m_format + Environment.NewLine;

            HiscoreData hiscoreData = new HiscoreData();
            hiscoreData = (HiscoreData)HiConvert.RawDeserialize(m_data, 0, typeof(HiscoreData));

            List<Formatting.DisplayData> formatting = new List<Formatting.DisplayData>();
            formatting.Add(new Formatting.DisplayData(null, Formatting.DisplayData.CannedConvert.AscendingFrom1));

            //We only want the top 10 scores, since that's all that's shown in-game.
            formatting.Add(new Formatting.DisplayData(
                new Regex("^Score[1-9]$|^Score10$"), Formatting.ConvertValuesToString.ConvertScoreReversed));

            //Only want the top 10 names too.
            formatting.Add(new Formatting.DisplayData(new Regex("^Name[1-9]$|^Name10$"), ConvertName));

            retString += Formatting.HiToString(hiscoreData, formatting);

            return retString;
        }
    }
}
Help us crack more .hi files here:
http://forum.arcadecontrols.com/index.php?topic=83614.0
Generate the newest hiscore.dat here:
http://www.hitotext.com/HiScoreDat/index.php
Sourceforge project page:
https://sourceforge.net/projects/hitotext

Fyrecrypts

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 237
  • Last login:August 19, 2015, 10:50:47 am
  • .hi guy
Re: HiToText (Version 2009.8.5.0) and GHOST in closed alpha.
« Reply #406 on: September 01, 2009, 03:20:23 pm »
-------------------
Version 2009.9.1
-------------------
New Games:
Woodpecker, Naughty Mouse, Journey, Tapper, Timber, Domino, Mortal Kombat 2, Berzerk (Coded by Cananas)
19xx (Coded by Fyrecrypts)

Bug Fixes:
1943 was fixed to display all name characters correctly. (Fyrecrypts)
Altered Beast sets the alternate ranks correctly now. (Fyrecrypts)
10 Yard Fight only displays the top 10 scores now, as it is done in-game like this as well. (Fyrecrypts)
1941 only displays the top 5 scores now, as it is done in-game like this as well. (Fyrecrypts)

New features:
Drivers starting with # or A have been modified to use a more generic set of methods that reduces the amount of code used. This will also reduce the time it takes to add new drivers. (Fyrecrypts)
Certain drivers now inherit parent drivers that are similiar, but cannot be contained in that driver because the file is setup differently, or it is a separate game (i.e. Tapper and Timber have Journey as their parent.) (Cananas)
Drivers starting with # or A have new functionality to allow the modification of current score's names. If you mess up an initial, you can now just modify it! Use -m <romname> <rank> <name> to replace the name. NOTE: This is not implemented fully yet, only #-A will work. (Cananas, Fyrecrypts)
Help us crack more .hi files here:
http://forum.arcadecontrols.com/index.php?topic=83614.0
Generate the newest hiscore.dat here:
http://www.hitotext.com/HiScoreDat/index.php
Sourceforge project page:
https://sourceforge.net/projects/hitotext

Cananas

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 299
  • Last login:August 27, 2017, 07:39:03 am
  • and the seventh day... PacMan was created
Re: HiToText (Version 2009.9.1.0) and GHOST in closed alpha.
« Reply #407 on: September 01, 2009, 05:17:31 pm »
Well, more to learn... ;)

ryantheleach

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 94
  • Last login:October 17, 2013, 01:44:17 pm
  • I'm a llama!
    • My Personal Blog
Re: HiToText (Version 2009.9.1.0) and GHOST in closed alpha.
« Reply #408 on: September 02, 2009, 12:47:39 pm »
Hey I'm interested in helping out, what games are left to do?
do I need to be any good at the games to beat the default high scores?

Fyrecrypts

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 237
  • Last login:August 19, 2015, 10:50:47 am
  • .hi guy
Re: HiToText (Version 2009.9.1.0) and GHOST in closed alpha.
« Reply #409 on: September 04, 2009, 07:17:59 pm »
Hey I'm interested in helping out, what games are left to do?
do I need to be any good at the games to beat the default high scores?

Check this post out:

http://forum.arcadecontrols.com/index.php?topic=83614.msg963047#msg963047

Hopefully this will help you help us! Glad to see you're interested. =)
Help us crack more .hi files here:
http://forum.arcadecontrols.com/index.php?topic=83614.0
Generate the newest hiscore.dat here:
http://www.hitotext.com/HiScoreDat/index.php
Sourceforge project page:
https://sourceforge.net/projects/hitotext

Fyrecrypts

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 237
  • Last login:August 19, 2015, 10:50:47 am
  • .hi guy
Re: HiToText (Version 2009.9.16.0) and GHOST in closed alpha.
« Reply #410 on: September 16, 2009, 10:52:26 am »
-------------------
Version 2009.9.16
-------------------
New Games:
Block Out, Break Thru, Cleopatra Fortune, Dazzler, Dead Eye (Meadows), Dyna Gear, Lunar Rescue, Mad Alien, Megadon (Cananas)
Mighty Monkey, Missile Command, Metal Slug - Super Vehicle-001, Metal Slug 2 - Super Vehicle-001/II, Metal Slug 3, Metal Slug 4 (Cananas)
Metal Slug 5, Metal Slug X - Super Vehicle-001, Martial Champion, Michael Jackson's Moonwalker, Naughty Boy, Nemesis (Cananas)
Nova 2001, Oli-Boo-Chu, Omega Fighter, Q*Bert's Qubes, Star Wars, Streaking, Subroc-3D, Boomer Rang'r, Evil Stone (Cananas)
Pirates, Red Baron, Sprint 1 (Cananas)

Bug Fixes:
Fix to Asteroids Deluxe that was introduced when the new coding techniques were used. (Cananas)
Clones added to 8-Ball Action (Cananas)
Many changes to hiscore.dat, view the hiscore.dat-astic to see them. (Cananas & Fyrecrypts)
Beginning transition to MAME 0.134 naming convention for hiscore.dat. Older clones are commented with "; old" (Cananas)

As you can see another huge contribution from Cananas. I am going to (once again) be short on time, my wife and I are expecting our daughter any time now, and that means no time for projects. However, I think the updates will still continue as Cananas has been tearing it up producing more and more deciphered games.

As always, enjoy!
Help us crack more .hi files here:
http://forum.arcadecontrols.com/index.php?topic=83614.0
Generate the newest hiscore.dat here:
http://www.hitotext.com/HiScoreDat/index.php
Sourceforge project page:
https://sourceforge.net/projects/hitotext

wwwombat

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 64
  • Last login:February 24, 2011, 08:13:59 pm
Re: HiToText (Version 2009.9.16.0) and GHOST in closed alpha.
« Reply #411 on: October 07, 2009, 08:26:27 pm »
Many changes to hiscore.dat, view the hiscore.dat-astic to see them. (Cananas & Fyrecrypts)
Beginning transition to MAME 0.134 naming convention for hiscore.dat. Older clones are commented with "; old" (Cananas)

Been away for a couple of months... combination of real life and because I'm rejigging my cabinet yet again... anyhoo, it's coming back to life so I thought I'd catchup to MAME 0.134 level and at the same time update the auxiliary files like HiToText.

I see you now generate the version of hiscore.dat through a link... however when I do so and peek inside I fail to see any hook for Track & Field (which is the game that caused me the pain due to a shift in how what MAME stored)... some recent additions also don't seem to be there (i.e. the Metal Slugs apart from two of them)

Is this still a "work in progress" (due to 0.134?) and I should check back later or is there a bug in the extraction process?

Fyrecrypts

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 237
  • Last login:August 19, 2015, 10:50:47 am
  • .hi guy
Re: HiToText (Version 2009.9.16.0) and GHOST in closed alpha.
« Reply #412 on: October 07, 2009, 10:47:12 pm »
Many changes to hiscore.dat, view the hiscore.dat-astic to see them. (Cananas & Fyrecrypts)
Beginning transition to MAME 0.134 naming convention for hiscore.dat. Older clones are commented with "; old" (Cananas)

Been away for a couple of months... combination of real life and because I'm rejigging my cabinet yet again... anyhoo, it's coming back to life so I thought I'd catchup to MAME 0.134 level and at the same time update the auxiliary files like HiToText.

I see you now generate the version of hiscore.dat through a link... however when I do so and peek inside I fail to see any hook for Track & Field (which is the game that caused me the pain due to a shift in how what MAME stored)... some recent additions also don't seem to be there (i.e. the Metal Slugs apart from two of them)

Is this still a "work in progress" (due to 0.134?) and I should check back later or is there a bug in the extraction process?

Those games are all nvram-only, so they grab scores from the nvram all MAME builds generate, so there's no need for a .hi file to be generated. The hiscore.dat-astic is as up to date as can possibly be, so feel free to use it. There's a date at the top of the file that is the last updated date as well.
Help us crack more .hi files here:
http://forum.arcadecontrols.com/index.php?topic=83614.0
Generate the newest hiscore.dat here:
http://www.hitotext.com/HiScoreDat/index.php
Sourceforge project page:
https://sourceforge.net/projects/hitotext

wwwombat

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 64
  • Last login:February 24, 2011, 08:13:59 pm
Re: HiToText (Version 2009.9.16.0) and GHOST in closed alpha.
« Reply #413 on: October 08, 2009, 02:12:05 am »
nv-ram only... ah, that explains it. Thanks! Will have to get my cabinet back to operating status so I can check it out then.

Cananas

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 299
  • Last login:August 27, 2017, 07:39:03 am
  • and the seventh day... PacMan was created
Re: HiToText (Version 2009.9.16.0) and GHOST in closed alpha.
« Reply #414 on: October 08, 2009, 10:23:37 am »
Been busy with the AimTrak, so I'm updating the hiscore.dat to 0.134 slowly...

Fyrecrypts

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 237
  • Last login:August 19, 2015, 10:50:47 am
  • .hi guy
Re: HiToText (Version 2009.9.16.0) and GHOST in closed alpha.
« Reply #415 on: October 08, 2009, 12:50:16 pm »
Been busy with the AimTrak, so I'm updating the hiscore.dat to 0.134 slowly...

I've been busy with my new daughter, so I'm not going to be working on it very much either for a while. GHOST as well hasn't been worked on because of it.
Help us crack more .hi files here:
http://forum.arcadecontrols.com/index.php?topic=83614.0
Generate the newest hiscore.dat here:
http://www.hitotext.com/HiScoreDat/index.php
Sourceforge project page:
https://sourceforge.net/projects/hitotext

axewater

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 23
  • Last login:February 07, 2013, 04:09:58 pm
Re: HiToText (Version 2009.9.16.0) and GHOST in closed alpha.
« Reply #416 on: October 30, 2009, 09:20:16 am »
Hi .. great project

I work in IT security and you will probably agree there will not ever be a way to completely eliminate cheating if there is some form of online sharing of scores. However there are a lot of things that can be done to make it hard on cheaters, and I would be happy to help you think of a good solution...
Let me know if there is something I can do to help, best not to discuss the workings of all the security features in an open forum :)

headkaze

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 2943
  • Last login:August 14, 2023, 02:00:48 am
  • 0x2b|~0x2b?
Re: HiToText (Version 2009.9.16.0) and GHOST in closed alpha.
« Reply #417 on: October 30, 2009, 11:33:18 pm »
I think Fyrecrypts is more interested in how to "secure" nappies to his newly born daughter  ;D

But I'm sure when things settle down a bit he will come back to the project and have a bit more time. So perhaps it would be best to PM him? I know him and a friend were working on security features and it's a definate concern of the project.

Fyrecrypts

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 237
  • Last login:August 19, 2015, 10:50:47 am
  • .hi guy
Re: HiToText (Version 2009.9.16.0) and GHOST in closed alpha.
« Reply #418 on: January 15, 2010, 02:50:01 pm »
Coming soon...

Code: [Select]
<?xml version="1.0" encoding="utf-8"?>
<HiToText>
  <Entry>
    <Header>
      <Games>
        <Name>baddudes</Name>
        <Name>drgninja</Name>
      </Games>
      <Fields>
        <Name>RANK</Name>
        <Name>SCORE</Name>
        <Name>NAME</Name>
        <Name>STAGE</Name>
      </Fields>
      <Extensions>
        <Name>.hi</Name>
      </Extensions>
      <TextParameters>
        <Formats>
          <Name>ASCIIStandard</Name>
        </Formats>
      </TextParameters>
    </Header>
    <FileStructure>
      <Mapping NumberOfBlocks="20" Ordering="Ascending">
        <Entry Name="Name" Length="3"/>
        <Entry Name="Score" Length="4"/>
        <Entry Name="Stage" Length="1"/>
      </Mapping>
      <Mapping NumberOfBlocks="1" Ordering="None">
        <Entry Name="HiScore" Length="4"/>
      </Mapping>
    </FileStructure>
    <DisplayStructure>
      <FieldName Name="RANK" ConversionType="CannedDisplay.AscendingFrom1"/>
      <FieldName Name="SCORE" ConversionType="Standard"/>
      <FieldName Name="NAME" ConversionType="Name"/>
      <FieldName Name="STAGE" ConversionType="Standard"/>
    </DisplayStructure>
  </Entry>
</HiToText>
Help us crack more .hi files here:
http://forum.arcadecontrols.com/index.php?topic=83614.0
Generate the newest hiscore.dat here:
http://www.hitotext.com/HiScoreDat/index.php
Sourceforge project page:
https://sourceforge.net/projects/hitotext

headkaze

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 2943
  • Last login:August 14, 2023, 02:00:48 am
  • 0x2b|~0x2b?
Re: HiToText (Version 2009.9.16.0) and GHOST in closed alpha.
« Reply #419 on: January 15, 2010, 06:21:41 pm »
LOL Coming full circle are we? The data file was something we talked about very early on in this project. I take it this is only an update for HiToText and not something that will be implemented in the software that utilise HiToText?

Oh and welcome back hope everything is well with your new addition to the family :)

Fyrecrypts

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 237
  • Last login:August 19, 2015, 10:50:47 am
  • .hi guy
Re: HiToText (Version 2009.9.16.0) and GHOST in closed alpha.
« Reply #420 on: January 15, 2010, 06:59:29 pm »
LOL Coming full circle are we? The data file was something we talked about very early on in this project. I take it this is only an update for HiToText and not something that will be implemented in the software that utilise HiToText?

Oh and welcome back hope everything is well with your new addition to the family :)

Yeah, I started to condense everything in the drivers to utilize broader functions through the use of delegates, and realized the need for individual drivers was really only a glorified map, so I just moved it out to an XML document. The sample above is very simplified of course, and as more games get implemented in this way, more mappings will need to be created, some custom code added, etc...

But, for those simpler games that I may not have gotten around to, there's now a very easy way for the non-coders to contribute a complete "driver"! Fun stuff. =)
Help us crack more .hi files here:
http://forum.arcadecontrols.com/index.php?topic=83614.0
Generate the newest hiscore.dat here:
http://www.hitotext.com/HiScoreDat/index.php
Sourceforge project page:
https://sourceforge.net/projects/hitotext

Fyrecrypts

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 237
  • Last login:August 19, 2015, 10:50:47 am
  • .hi guy
Re: HiToText (Version 2009.9.16.0) and GHOST in closed alpha.
« Reply #421 on: January 20, 2010, 10:25:06 pm »
Got a couple of drivers moved over to the new format, but it's still in a preliminary format. I'm allowing for both the individual drivers, and the XML because of this. The XML driver will take precedence however. I'll probably release a version in the next couple of weeks so that people can get started on decoding drivers using the new format. In addition, a bit down the road, I'd like to create a GUI that will help generate the XML when you give it a .hi file and allow for decoding. This would make decoding a .hi/.nvram file much easier.
Help us crack more .hi files here:
http://forum.arcadecontrols.com/index.php?topic=83614.0
Generate the newest hiscore.dat here:
http://www.hitotext.com/HiScoreDat/index.php
Sourceforge project page:
https://sourceforge.net/projects/hitotext

Fyrecrypts

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 237
  • Last login:August 19, 2015, 10:50:47 am
  • .hi guy
Re: HiToText (Version 2009.9.16.0) and GHOST in closed alpha.
« Reply #422 on: January 26, 2010, 05:24:02 pm »
Let me preface this whole thing by saying, I have no idea how to format this information well, so it may be a little tough on the eyes, and possibly a little confusing. I'll do my best to ask questions if you've read multiple times and still have no answer. =)

First, this is a link to the XML file: http://www.the-elitists.com/HiToText/HiToText.xml
Put this in the same folder as HiToText.exe

So, here's a small tutorial on the XML format. I've added about a dozen drivers to this thing so far, and it works very well. Bagman for example took about 3 minutes to add. In the near future I do plan on making some sort of application that will generate the XML for you, but for now you can manually do it.

The first thing to know is what's currently in it's own class now is separated as entries in the XML. So you can see there are 15 entries in the file I've included here. Each entry element always has 4 elements: Header, FileStructure, SetStructure, and DisplayStructure. Order does not matter.

The header element contains 3 required elements: Games, Fields, and Extensions and one optional element: TextParameters. Order does not matter.

Games is a list of Name elements where each element is the rom name which corresponds to the mapping. Order does not matter.

Fields is a list of Name elements where each element is a field displayed. The order matters here, so put them in the order in which you'd like to see it displayed.

Extensions is a list of Name elements where each element is a file type associated with the data you're receiving. Of the 15 entries I have here, all of them just contain .hi, however later some will contain .nv, and possibly others. Order does not matter.

TextParameters is used to describe getting text information, mostly for name fields (so far), and contains 1 required entry: Formats (if TextParameters exists), 2 potentially required entries: SpecialMapping, and Offsets, which depends on which Format elements exist, and 1 optional entry: SwitchMaps. Order does not matter.

Formats contains a list of Name elements that correspond to one of (currently) 5 possible formats: NeedsSpecialMapping, ASCIIUpper, ASCIILower, ASCIINumbers, ASCIIStandard. For anyone who looked at the older code and saw some of the changes I was making will recognize these 5 formats. NeedsSpecialMapping will require the SpecialMapping element. ASCIIUpper, ASCIILower, and ASCIINumbers will require the Offsets element. ASCIIStandard requires nothing. These 5 formats will be explained below. Order does not matter.

SpecialMapping is a list of mappings with characters to bytes, these are Map elements with two required attributes Char, and Byte where char is a character (only one key allowed here), byte is the byte that it would map too. You can have multiple bytes assigned to a char, but not the other way around, and HiToText will always use the first value assigned to a character when there are multiple options.

Offsets is a list of Offset elements with two required attribtes: Type, and StartByte. Type corresponds to the format element earlier, and can only be one of 3 values: Upper, Lower, and Numbers. StartByte is the byte for which a, A, or 0 will start at when being encoded/decoded in any function involving names. You need an Offset element for each of the 3 ASCII formats mentioned earlier. Order does not matter.

SwitchMaps is a list of SwitchMap elements that are used for special "switch" functions such as mapping the characters in Asterix. I would take a look at that entry for an example as what I'm about to say may be a bit confusing... here goes. Each SwitchMap has 3 required attributes: Name, DefaultOne, and DefaultMany. The switchmaps use a one to many relationship so you can have many strings mapped to one byte array. The Default attributes are if nothing can be found matching your Mapping elements within the current SwitchMap element. If multiple bytes are required for the byte array they can be separated by pipes. (i.e. 0x01|0x02). The name element must match the Name attribute (case insensitive) of the FieldName element in DisplayStructure that is using the Switch ConversionType attribute. (Asterix is an example of this)

Each SwitchMap has multiple Mapping elements, that have 2 attributes: One, and Many. One is a byte array, and many is a string. They work just like the default elements except these are checked first, so if a switch function (explained a bit later) is looking for the byte that corresponds to the string "ASTERIX" it will search the mappings first and find 0x01 before it goes to the DefaultOne. The Many fields are NOT case sensitive, so if you wish for them to be displayed differently, or as was requested a web address to an image or something for a FE to use, then go for it. I prefer all caps, so that's how the file will look. =)

Okay, now that we're done with the Header element, I'd like to note that a lot of what's in the header will relate to what's in the other three elements as well.

The FileStructure element is where the byte mapping actually is stored, it contains only mapping elements, and may contain as many as required to fully define each of the bytes in the source file.

The Mapping element contains 2 required attributes: NumberOfBlocks, and Ordering, and 1 optional attribute: Start. NumberOfBlocks is the number of times to go through the Entry elements of that particular Mapping element. I'll provide an example shortly that should explain that better. The Ordering attribute determines the numerical increment/decrement that will occur as you go through each block. Start is the number to start with when going through ordering.

Each entry has 2 required elements: Name, and Length. Name is the name that will be used for many other portions of the XML from setting scores, to reading scores, and will need to be the same as names for those other elements which will be explained a little later. Length is the number of bytes that make up that entry. These names ARE case sensitive, so be careful!

If none of that made sense, hopefully this example from arkretrn helps:
Code: [Select]
<FileStructure>
  <Mapping NumberOfBlocks="5" Ordering="Ascending">
    <Entry Name="Score" Length="4"/>
  </Mapping>
  <Mapping NumberOfBlocks="4" Ordering="Ascending">
    <Entry Name="Name" Length="3"/>
    <Entry Name="Space" Length="1"/>
  </Mapping>
  <Mapping NumberOfBlocks="1" Ordering="Ascending" Start="5">
    <Entry Name="Name" Length="3"/>
  </Mapping>
</FileStructure>

So when HiToText goes to read the .hi file (in this case) it will start with the first map, and it sees an ascending mapping of 5 blocks that are called Score of 4 bytes each. So the first 20 bytes make up the first 5 scores(Score1, Score2, Score3, Score4, Score5). Then it will move to the next mapping, which is 4 blocks of ascending order containing two entries: Name, and Space. So it will read the next 16 bytes as (Name1, Space1, Name2, Space2, Name3, Space3, Name4, Space4). Then it will move to the last mapping, which is 1 block of ascending order that starts at 5 containing one entry: Name. So it will read the last 3 bytes as (Name5).

This is what HiToText will see for the mapping:
Score1 - Bytes 1-4
Score2 - Bytes 5-8
Score3 - Bytes 9-12
Score4 - Bytes 13-16
Score5 - Bytes 17-20
Name1  - Bytes 21-23
Space1 - Byte 24
Name2  - Bytes 25-27
Space2 - Byte 28
Name3  - Bytes 29-31
Space3 - Byte 32
Name4  - Bytes 33-35
Space4 - Byte 36
Name5  - Bytes 37-39

arkretrn.hi is 39 bytes so we have a complete map.

The DisplayStructure element is how HiToText determines how to display the scores when trying to display them. It has one optional element: NumOfDisplayedEntries which is a way to limit the amount of entries to display for scores. Currently only 10yard is using this as there are 23 scores/Names in the .hi file, however you only ever see 10. This number can be safely changed to anything from 1-23 (for 10yard) if you wish to see more or less than the 10 the game shows. The DisplayStructure element contains as many FieldName elements as required for display. Order matters, and the first FieldName will be the first value per line. The first FieldName is almost always going to be Rank.

The FieldName element has 2 required attributes: Name, and ConversionType, and 1 optional attribute: Operator.

Name is linked to the Name in the Entry elements in the FileStructure/Mapping element. So if you want to display Name, you better have Entry Name="Name", and FieldName Name="Name" in the appropriate place. Name also matches to the SwitchMap Name attribute if it exists.

ConversionType is the function used to convert the byte array data into a string, there are some constant values such as CanndedDisplay.AscendingFrom1 which just counts from 1 for that field (perfect for Rank). There are other conversion types such as Standard which converts the byte array as an integer, so 0x10 0x00 0x00 will come back as 100000. There are others: Reversed, Hex, HexReversed, BCD, BCDReversed which you can research in the code. There are also some custom one-off functions, in particular 8ballact has some custom functions for decoding/encoding scores. They should be named as the parent rom name, and if the rom starts with a number, put an underscore before the name. As you can see for 8ballact, it's _8ballact. Pretty easy. Name functions (if setup) should just use a conversion type of "Name".

Operator is a mathematical function used to modify the data for display. Usually it's something like "+1" or "*10" so the displayed data more correctly matches what the game would display instead of what the game stores. Often games will not store data with known values and display it with the assumed values. That's basically what this will do. For example, a game like 005 stores it's scores divided by 10, so when we read something like 0x02|0x50 it would normally display as 250, however the game would display that as 2500. So we have a "*10" operator to get it to display how the game would display it. This is used in conjunction with a similar field in SetStructure which will be explained later.

All right, now onto the most complicated... SetStructure. It contains as many FieldName elements as required to set a new score.

The FieldName element contains 4 required attributes: Name, FieldType, ConversionType, and Position, and 2 optional attributes: Constant, and ExternalWrapper. It can also contain as many SpecialUtilization elements as needed. These aren't required, but almost certainly will be needed to set something correctly.

Let's start with the attributes. Name is pretty self-explainatory at this point, but this is what links up with the header names, filestructure names, and display names, so be consistent here. FieldType is the type of the field, such as string, int, or long, etc... ConversionType is the method used to convert the data of type FieldType into a byte array to be placed in the file. These are usually constant functions such as IntToByteArrayHex which converts an integer 100000 into a byte array that corresponds with the length of the FileStructure/Mapping/Entry attribute's name. So for example our 100000 above would convert to a byte array of length 3 for 4dwarrio as 0x10|0x00|0x00. There are other methods such as IntToByteArrayHexAsHex, Name, or Switch. Custom names like those described for 8ballact can also be used here. Position is the position in the arguments array this field will be linked to. So for 4dwarrio, the score is in the 1 position (0 is the first position). So when you type HiToText -w 4dwarrio.hi 1 40000 NLA, the 1 is in the 0 position the 40000 is in the 1 position...

The two option attributes are used for other special situations, Constant is just a byte value that will be the value set for that particular fieldname. It's currently only used for ajax for the "Unknown" field that is always 0x11 for player created entries. The other attribute, ExternalWrapper, is mostly used for when a byte array needs to be reversed, or if some other functionality needs to occur, like ByteSwapping (not currently implemented, but will be soon). In all the examples, only ReverseByteArray is currently used or accepted.

The SpecialUtilization element can contain one of (currently) 6 values: EmptyScores, ModifyName, IsHiScore, DetermineRank, IsAdjusted, and IncomingModified. There can be more than one type special utilization per FieldName. Some of these types of elements also require that the SpecialUtilization have an attribute, which I'll get into shortly.

EmptyScores will flag a field for usage in the EmptyScores function which will 0 out the field. It's used mostly for Score, and HiScore fields, but can be used for stages, or coins, or whatever else.

ModifyName will flag a field for usage in the ModifyName function which will allow that field to have a name changed based on the rank given.

IsHiScore will flag a field as the HiScore entry for the SetScore function. Anything that you wish to only be changed when it's the top score should have this SpecialUtilization.

DetermineRank will flag a field as being the data used for determining how that value ranks against existing values. It requires an attribute of Function, which can be Standard, Reversed, Hex, etc... or a custom function named as described the other custom functions (i.e. _8ballact). Currently, only one field may have this SpecialUtilization, but it will be implemented to allow multiples soon.

IsAdjusted will flag a field as being adjustable when a new score comes in. Use this for anything where you want the data to move down a rank if a new score coming in is higher. Things like HiScores and Unuseds, or separators should NOT have this SpecialUtilization whereas things like Name, Round, and Score should.

IncomingModified will flag a field as needing to be modified before being used for anything else. It requires a function that is similar to the operator attribute. The function attribute should be "/10" or "*45" or something mathematical. Certain games save scores without a trailing 0, so 25,000 will be stored as 0x25|0x00 to save space. Using IncomingModified will abstract this from the user so they can type "HiToText -w 005.hi 25000" which is what the game will show, instead of 2500 which is what's actually stored.

I know this is a LOT of writing, so I don't expect everyone to read it, but if you really wish to dig into the XML format, you probably should look at some of it, or just play around with the existing entries so you can see how it all works. Enjoy! I will be putting out a new version (source too!) shortly after I post this message.
Help us crack more .hi files here:
http://forum.arcadecontrols.com/index.php?topic=83614.0
Generate the newest hiscore.dat here:
http://www.hitotext.com/HiScoreDat/index.php
Sourceforge project page:
https://sourceforge.net/projects/hitotext

Fyrecrypts

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 237
  • Last login:August 19, 2015, 10:50:47 am
  • .hi guy
Re: HiToText (Version 2010.1.28.0) and GHOST in limbo.
« Reply #423 on: January 28, 2010, 01:28:55 pm »
The latest release includes a quick bug fix that enables HiToText to actually work. =)
Help us crack more .hi files here:
http://forum.arcadecontrols.com/index.php?topic=83614.0
Generate the newest hiscore.dat here:
http://www.hitotext.com/HiScoreDat/index.php
Sourceforge project page:
https://sourceforge.net/projects/hitotext

Fyrecrypts

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 237
  • Last login:August 19, 2015, 10:50:47 am
  • .hi guy
Re: HiToText (Version 2010.1.28.0) and GHOST in limbo.
« Reply #424 on: February 07, 2010, 04:34:57 pm »
I'm porting over a LOT of existing games to the new XML format, once the existing easy ones get moved I'll start work on some of the more difficult concepts, like alternate scores, and multiple sources of input. If anyone wants to start decoding new games again, it should be MUCH easier to get them implemented now.
« Last Edit: February 14, 2010, 12:31:53 pm by Fyrecrypts »
Help us crack more .hi files here:
http://forum.arcadecontrols.com/index.php?topic=83614.0
Generate the newest hiscore.dat here:
http://www.hitotext.com/HiScoreDat/index.php
Sourceforge project page:
https://sourceforge.net/projects/hitotext

Fyrecrypts

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 237
  • Last login:August 19, 2015, 10:50:47 am
  • .hi guy
Re: HiToText (Version 2010.2.10.0) and GHOST in limbo.
« Reply #425 on: February 10, 2010, 05:59:41 pm »
-------------------
Version 2010.2.10
-------------------
Bug Fixes:
While moving bloodbro to the XML format, fixed the fact that the highest score field wasn't being updated. If writing a score required updating the highest score as well.
While moving boomrang to the XML format, fixed an issue with the byte mapping, which had an 11th score in the driver, but only 10 scores were saved in the hiscore.dat.
While moving bzone to the XML format, fixed an issue with the name functions, they did not capture Y or Z correctly.

New features:
Some additional XML schema information TextParameters has 3 new optional attributes.
ByteSkipAmount, which will have the text functions use the byte for every ByteSkipAmount. For example, if there are 6 bytes in the name field, however only 3 are used, a ByteSkipAmount value of 2 would use the 1st, 3rd, and 5th, or 2nd, 4th, and 6th bytes for the name function. The default value is 1.
ByteStart, which will allow the text function to start at a specific byte in the name array. For example, if there are 6 bytes in the name field, however only 3 are used and you wish to start at the 2nd byte, a ByteStart value of 1 would use the name functions on the 2nd, 4th, and 6th bytes. The default value is 0.
ByteSkipData, which will fill in the bytes that aren't used by the name function. This is only useful if you also use ByteSkipAmount > 1. Some games (batsugun) have specific values that need to be placed in the name bytes to show up correctly in-game. The default value is 0x00.
Some reorganization to the code structure, added a few new nested namespaces, moved some things around, etc... Just general cleanup.
New XML loader using autogenerated classes from an xsd schema. The schema is also included in the source zip. NOTE: This WILL change in the near future, so don't build code around it just yet.

New Games:
Exerion (Fyrecrypts and Cananas)
Help us crack more .hi files here:
http://forum.arcadecontrols.com/index.php?topic=83614.0
Generate the newest hiscore.dat here:
http://www.hitotext.com/HiScoreDat/index.php
Sourceforge project page:
https://sourceforge.net/projects/hitotext

Fyrecrypts

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 237
  • Last login:August 19, 2015, 10:50:47 am
  • .hi guy
Re: HiToText (Version 2010.2.24.0) and GHOST in limbo.
« Reply #426 on: February 24, 2010, 01:16:45 pm »
-------------------
Version 2010.2.24
-------------------
Bug Fixes:
While moving carnival to the XML format, fixed the problem with the score and name being reversed when setting high scores.
Fixed an issue with games with no rank not being able to be ported to the XML system.
While moving crush to the XML format, fixed the problem with the score and name being reversed in the data mapping. This should work now.
While moving ddribble to the XML format, modified the month/day fields to one date field.

New features:
Added a new DisplayStructure/FieldName optional attribute called CustomName that hooks into the normal Name function, but some games (Nichibutsu games as an example) have some special features that don't completely with the standard Name functions.
Added a new Header/Extensions/Name semi-optional attribute called NumberOfBytes that allows you to specify the number of bytes you'll be reading for that file. This is a required attribute if you have more than one extension per entry (i.e. Centipede or Asteroids Deluxe).
Added some new functionality for SetStructure/FieldName attribute Position where if the fields are separated by pipes it will return data from both of those fields separated by pipes for use in setting this value. This is used mostly for things like checksums, and an example can be found in Asteroids Deluxe.
Added some new functionality for SetStructure/FieldName attribute ConverstionType where if the field is named CustomName it will utilize a special function for setting data that uses the name function in addition to data. The function called is a custom function that is named as the parent rom name (the top rom in the XML). An example can be found in Asteroids Deluxe.
Added a new SetStructure/FieldName/ConversionType element built in function called PadData. It takes two parameters in parenthesis, the first is the value the byte should be if the data is the padded value, the second is the first digit of the byte when it's not. A good example of this can be seen in cclimber for setting the high score.
Games that use the XML format are now labeled as such in the supported games list located here: http://spreadsheets.google.com/pub?key=r1aOWGSATauwVHbhlucsGWQ&output=html

NOTE: Be sure to not just grab the HiToText.xml file, it will not work correctly with older versions of HiToText. I'm looking into having the custom functions be built into the XML as well, so that future versions will only require an updated XML.
Help us crack more .hi files here:
http://forum.arcadecontrols.com/index.php?topic=83614.0
Generate the newest hiscore.dat here:
http://www.hitotext.com/HiScoreDat/index.php
Sourceforge project page:
https://sourceforge.net/projects/hitotext

Fyrecrypts

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 237
  • Last login:August 19, 2015, 10:50:47 am
  • .hi guy
Re: HiToText (Version 2010.2.24.0) and GHOST in limbo.
« Reply #427 on: March 05, 2010, 10:36:00 am »
Cananas has created some great documents that better show the new XML format for game entries. If you wish to write entries for games using this format, I highly recommend taking a look at them. They are much easier to follow than my forum posts. =)

Schematics: http://the-elitists.com/HiToText/Schematics.pdf
Documentation: http://the-elitists.com/HiToText/HiToText%20XML%20Document.pdf

I've also put these links in the main post. Thanks Cananas!
Help us crack more .hi files here:
http://forum.arcadecontrols.com/index.php?topic=83614.0
Generate the newest hiscore.dat here:
http://www.hitotext.com/HiScoreDat/index.php
Sourceforge project page:
https://sourceforge.net/projects/hitotext

Fyrecrypts

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 237
  • Last login:August 19, 2015, 10:50:47 am
  • .hi guy
Re: HiToText (Version 2010.2.24.0) and GHOST in limbo.
« Reply #428 on: April 22, 2010, 10:59:20 am »
Quick note, I've moved everything onto hitotext.com, as opposed to the-elitists. If you find some things still pointing to the-elitists, please let me know.

New version coming soon (I actually have time to work on it! Hooray!)
Help us crack more .hi files here:
http://forum.arcadecontrols.com/index.php?topic=83614.0
Generate the newest hiscore.dat here:
http://www.hitotext.com/HiScoreDat/index.php
Sourceforge project page:
https://sourceforge.net/projects/hitotext

Fyrecrypts

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 237
  • Last login:August 19, 2015, 10:50:47 am
  • .hi guy
Re: HiToText (Version 2010.4.28.0) and GHOST (may go open beta).
« Reply #429 on: April 28, 2010, 01:32:42 pm »
-------------------
Version 2010.4.28
-------------------
New Games:
APB - All Points Bulletin, Arabian Fight, Anteater, Animalandia Jr., Argus, Ark Area, Armed Formation, Armored Car, Assault (Fyrecrypts)

Bug Fixes:
Fixed an issue with dkong3 where setting scores wouldn't set the name field properly.
Fixed the problem with HiToText crashing if it couldn't find the HiToText.xml file.
Fixed the missing byte for score 5 in Arabian Fight. (hiscore.dat fix)
Fixed issue with the SpecialUtilization: IncomingModified affecting all data for every piece of data for that position. Argus is a good example of where this came up, the score is not needing to be adjusted before being updated, however the hi score needs to be divided by 10. Having IncomingModified on the hi score was also affecting the standard score.

New features:
Added some new functionality for SetStructure/FieldName/ConversionType for CustomName values. It now utilizes the FieldName/Name value which can be used to plug data in the right spot. This is useful for games like APB where the name data is split up among multiple field names.
Added some new functionality for DisplayStructure/FieldName for Name values. If separated by pipes they will be merged into a single field name before display based on the ConversionType. This is only useful for name fields right now. An example of how to use it can be seen in APB.
Modified the existing SetStructure/FieldName/ConversionType element built in function called PadData to now be called PadDataReverse. A new PadData has been created that is the reverse of what the old pad data was, but makes more sense to not be called reverse.
Help us crack more .hi files here:
http://forum.arcadecontrols.com/index.php?topic=83614.0
Generate the newest hiscore.dat here:
http://www.hitotext.com/HiScoreDat/index.php
Sourceforge project page:
https://sourceforge.net/projects/hitotext

headkaze

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 2943
  • Last login:August 14, 2023, 02:00:48 am
  • 0x2b|~0x2b?
Re: HiToText (Version 2010.2.24.0) and GHOST in limbo.
« Reply #430 on: April 28, 2010, 08:38:41 pm »
If you find some things still pointing to the-elitists, please let me know.

How about your sig?  ;D

Fyrecrypts

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 237
  • Last login:August 19, 2015, 10:50:47 am
  • .hi guy
Re: HiToText (Version 2010.2.24.0) and GHOST in limbo.
« Reply #431 on: April 28, 2010, 09:20:39 pm »
If you find some things still pointing to the-elitists, please let me know.

How about your sig?  ;D

Ha! Good find. =)
Help us crack more .hi files here:
http://forum.arcadecontrols.com/index.php?topic=83614.0
Generate the newest hiscore.dat here:
http://www.hitotext.com/HiScoreDat/index.php
Sourceforge project page:
https://sourceforge.net/projects/hitotext

Fyrecrypts

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 237
  • Last login:August 19, 2015, 10:50:47 am
  • .hi guy
Re: HiToText (Version 2010.5.7.0) and GHOST (may go open beta).
« Reply #432 on: May 07, 2010, 05:38:26 pm »
Version 2010.5.7
-------------------
New Games:
Athena, Battle of Atlantis, Atomic Point, Aurail, Action Hollywood, A.D. 2083, Action Fighter, Agress, Air Attack, Air Buster: Trouble Specialty Raid Unit (Fyrecrypts)

Bug Fixes:
The -l flag now also lists games supported in the XML.
Fixed the hiscore.dat entry for Action Fighter.

New features:
Added a new DisplayStructure/FieldName/ConversionType element built in function called TwoToThreeEncoding. It takes one parameter in parenthesis, the number of characters it needs to loop through before it increments the next character. Think of it like binary encoding, there are two values: 0, and 1. If you see a number 2 in decimal, it would be converted to 10 in binary. The same is essentially true for this function, a value of 32 means seeing 0x3981, converts to: 0x14, 0x12, 0x01 (Adding 64 to each byte gets us standard ASCII of: N-L-A). A good example of this can be seen in ad2083 for displaying the high score.
Added a new SetStructure/FieldName/ConversionType element built in function called TwoToThreeEncoding.  Similarly to above it takes the same parameter as above, but basically reverses the logic to create a 2 byte name from 3 characters.
Added a new flag "-lp" that lists only the supported parent games. This requires another argument after the flag that is the full path to your mame.exe file (e.g. HiToText -lp "C:\Emulators\mame.exe". This may take a few minutes.
Help us crack more .hi files here:
http://forum.arcadecontrols.com/index.php?topic=83614.0
Generate the newest hiscore.dat here:
http://www.hitotext.com/HiScoreDat/index.php
Sourceforge project page:
https://sourceforge.net/projects/hitotext

Fyrecrypts

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 237
  • Last login:August 19, 2015, 10:50:47 am
  • .hi guy
Re: HiToText (Version 2010.5.7.0) and GHOST (may go open beta).
« Reply #433 on: May 10, 2010, 11:25:36 pm »
The next version will change things slightly, it will not be a one-shot run like it currently is, and instead will stay open allowing commands to be continuously called. This should speed up how frontends utilize HiToText, but will require they change how they interact with it now to get the new functionality. The commands will be the same (minus shelling HiToText every time, and -q to quit), but I thought I'd throw out this warning now so headkaze, Tom, and BadBoyBill could get a heads up (and any other devs that utilize HiToText that I don't know about).
Help us crack more .hi files here:
http://forum.arcadecontrols.com/index.php?topic=83614.0
Generate the newest hiscore.dat here:
http://www.hitotext.com/HiScoreDat/index.php
Sourceforge project page:
https://sourceforge.net/projects/hitotext

Fyrecrypts

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 237
  • Last login:August 19, 2015, 10:50:47 am
  • .hi guy
Re: HiToText (Version 2010.5.12.0) and GHOST (may go open beta).
« Reply #434 on: May 12, 2010, 11:57:27 am »
-------------------
Version 2010.5.12
-------------------
New Games:
Air Duel, Airwolf, Alex Kidd: The Lost Stars (Fyrecrypts)

Bug Fixes:
Some fixes to the -lp flag, that should have it work for more (if not all) versions of MAME.
The -v flag should work correctly now, the standalone version will need a full path to the mame folder.
Added elevatorb clone to elevator in hiscore.dat
Moved spcinv95 to the parent rom in hiscore.dat

New features:
Determine rank functions can now be custom functions that utilize the ConvertByteArrayToString methods and convert to int if no named ConvertByteArrayToInt exists. Essentially, lots of custom ConvertByteArrayToInt functions were being created that just called the ConvertByteArrayToString method, so I went ahead and put in a small routine to automatically do that for me.
HiToText can now be run in continuous mode. All you do is shell the app, and it will ask for commands. The older functionality still exists so you can pass it command line arguments and it will behave the same.
Two new flags have been created -h, and -q. -q will exit the application in continuous mode. -h will provide the help menu.
For those of you compiling HiToText yourself, you will notice there are new environments for testing with debug flags associated with them. This makes testing much easier for me, as well as ensuring releases are already setup correctly. This has no effect on people who don't compile.
Help us crack more .hi files here:
http://forum.arcadecontrols.com/index.php?topic=83614.0
Generate the newest hiscore.dat here:
http://www.hitotext.com/HiScoreDat/index.php
Sourceforge project page:
https://sourceforge.net/projects/hitotext

Fyrecrypts

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 237
  • Last login:August 19, 2015, 10:50:47 am
  • .hi guy
Re: HiToText (Version 2010.8.9.0) and GHOST (may go open beta).
« Reply #435 on: August 09, 2010, 04:27:38 pm »
Some minor bug fixes, and some games added, mostly by bLAZER from the HyperSpin boards. He's been creating XML entries at a pretty fast pace. I'd expect more pretty quickly (and in fact he probably already has more). Hooray!

I'm looking into streamlining things even more, and most of that should be behind the scenes, but you should (hopefully) see speed increases within the next few releases.

-------------------
Version 2010.8.9
-------------------
New Games:
Alien3: The Gun, Aliens, Alien Sector, The Alphax Z, Alpine Ski, Soldier Girl Amazon (Fyrecrypts)
Bio Attack, Dommy, M-79 Ambush, Monte Carlo, Qwak, King & Balloon, Mermaid, The End, Snow Bros. 2 - With New Elves / Otenki Paradise (bLAZER)

Bug Fixes:
Fixed duplication of special mapping in Argus.
hiscore.dat modified to have m660 clones of alphaxz
hiscore.dat modified to fix amazon.
Issue with relative path to file not working correctly. It is now.

New features:
Clone added to alphaxz (m660j).
Long name clones added to altbeast.
Clone changes and additions to invaders.
Help us crack more .hi files here:
http://forum.arcadecontrols.com/index.php?topic=83614.0
Generate the newest hiscore.dat here:
http://www.hitotext.com/HiScoreDat/index.php
Sourceforge project page:
https://sourceforge.net/projects/hitotext

Fyrecrypts

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 237
  • Last login:August 19, 2015, 10:50:47 am
  • .hi guy
Re: HiToText (Version 2010.8.16.0).
« Reply #436 on: August 16, 2010, 01:15:36 pm »
Put in some major speedups (about 400% faster) for legacy read calls. This was desperately needed for any FEs which didn't change how they call HiToText to use the static implementation which front loads a lot of information in the first call. Each call beyond the first is much faster. Now the difference between these legacy read calls, the static second and beyond calls, and the old non-XML calls is only about 10-50ms tops.

Additionally, bLAZER has been on a roll incorporating 21 new games (and moving Galaxian to the XML format). Pretty big update for only one week's wait since the last one.

-------------------
Version 2010.8.16
-------------------
New Games: Crash, Orbitron, Sheriff, Water Ski, Logic Pro, The Tin Star, Enigma II, Hexa, Gee Bee, Paradise, Indian Battle, Red Clash, Super Bug, Targ, Spectar, Sasuke vs. Commander, Pisces, Killer Comet, Tank Battalion, Levers, Navarone (bLAZER)

Bug Fixes:
Fixed issue with alien3, rank display was incorrectly read as int instead of a hex int.
tinstar2 added to hiscore.dat (clone of tinstar).
enigma2a, and enigma2b added to hiscore.dat (clones of enigma2).
geebeeb added to hiscore.dat (clone of geebee).
targ and spectar split into separate parents.
targc added to hiscore.dat (clone of targ).
panzer, phantom, phantoma, and rallys added to hiscore.dat (clones of spectar).
piscesb added to hiscore.dat (clone of pisces).

New features:
Massive speed increases for legacy calls using the command line. It's not quite as fast as legacy drivers were, but the difference is only about 10-50 ms. at most which is usually negligible.
Help us crack more .hi files here:
http://forum.arcadecontrols.com/index.php?topic=83614.0
Generate the newest hiscore.dat here:
http://www.hitotext.com/HiScoreDat/index.php
Sourceforge project page:
https://sourceforge.net/projects/hitotext

tspeirs

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 129
  • Last login:July 23, 2020, 07:44:52 am
  • I want to build my own arcade controls!
Re: HiToText (Version 2010.8.16.0).
« Reply #437 on: August 18, 2010, 07:10:14 pm »
Good work Fyrecrypts. Glad to see your project is still moving forwards. Ill include the latest version with the next GameEx release if that's ok with you?

tspeirs

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 129
  • Last login:July 23, 2020, 07:44:52 am
  • I want to build my own arcade controls!
Re: HiToText (Version 2010.8.16.0).
« Reply #438 on: August 18, 2010, 07:32:18 pm »
Something strange with the latest version when testing with GamEx, unless Im going crazy. Im getting a message box as if somethings trying to launch advmame. Does that make any sense to you, unless it something weird going on with GameEx on my machine? Ive only got an old copy of advmame on my machine and I tried renaming the executable, still seems to do it. Otherwise it appears to work well and a load more games supported now since I last played with this which is cool.

EDIT: I removed all the legacy executables from my MAME folder, and its ok now. It was obviously trying to launch something there, not quite sure why?
« Last Edit: August 18, 2010, 08:02:01 pm by tspeirs »

Fyrecrypts

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 237
  • Last login:August 19, 2015, 10:50:47 am
  • .hi guy
Re: HiToText (Version 2010.8.16.0).
« Reply #439 on: August 18, 2010, 07:59:05 pm »
It does try to shell mame for some tasks, such as determining the version of mame you use to generate nvram files (to determine how to parse certain files, in particular track and field), or generating a list of parent games supported by HiToText. Renaming advancemame to not have the name "mame" in it will cause HiToText to ignore it. Even if it's just advmaame.exe.

Bringing it up like this makes me realize how much waste is done for games that don't have alternate versions. I think I'll look into modifying this so it only comes up when necessary.

As for including the executable that's always okay with me, I appreciate you asking though. Don't forget to include the HiToText.xml file as well. HiToText will work, but many games are supported only via the XML file and not individual drivers anymore.

Glad you're enjoying it, and thanks again for including support in GameEx. =)
Help us crack more .hi files here:
http://forum.arcadecontrols.com/index.php?topic=83614.0
Generate the newest hiscore.dat here:
http://www.hitotext.com/HiScoreDat/index.php
Sourceforge project page:
https://sourceforge.net/projects/hitotext