what happened? How goes the development process?
what happened? How goes the development process?
Disclaimer: Everything I post or share information about.
Is considered, "AS IS" and for Educational Purposes under the Fair Use Act.
I've been busy with work over the past week so not been able to spend too much time. Still working on the packet structures. I'm pretty much done with the packets I have logged. There are still packets that handle initiating racing (seems to be packet 0x0700 which also has the movement/position commands). I'm focusing on the garage packet structure so that I will be able to login with an existing account (im assuming that when logging into an existing account the player was taken to their garage instead of straight to the highway like when a new account is created). Then I can work on having players join the server. Initiating the race and so on may come easy once I have clients able to interact with one another.
Well when you are ready to open development to additional developers send me a pm. Im always available to help.
Disclaimer: Everything I post or share information about.
Is considered, "AS IS" and for Educational Purposes under the Fair Use Act.
I lost motivation back in 2016. But have picked this up again recently I've worked out packets for logging in and loading up your saved car data. Also a few more menus worked out so creating a team is possible, entering car shop and part shop.
Now that I have the server at a stage where I can log in I'll be rewriting the server and currently coding a management server which handles the database and global management of the game servers.
I also couldn't stand the awful 640x480. So adjusted the client exe to load my dll and the dll dynamically updates the exe including translations.
Some shots of the widescreen changes
I uploaded the old code I had to github but its not worth using it as I'm yet to upload the latest. I did also create a wiki for preservation purposes
Sorry for my inexperienced English.
I played this game in the past
Your project is wonderful
Thank you for your reply. Your knowledge of the game would be invaluable to me. Could we discuss on discord?
ご返信ありがとうございます。 ゲームのあなたの知識は私にとって非常に貴重です。 私たちは不和について話し合うことができますか
It is through a translation website.If it is not a difficult problem, I will cooperate
Just an update about the project.
The Management server is coded. This handles all DB access. Currently supports SQLite and MySQL. can be installed as a service or run as a console application. I plan to add a management HTTP interface so the servers can be centrally managed by it.
The Game server now loads a players data via the management server. The garage packets were holding up most progress but have those figured out now so can now store upto 4 cars in the garage.
I started working on the shop packets which I have mostly worked out and lead me to working with the H.DAT, P.DAT and S.DAT files as these are used to populate the shop data and retrieve the car details. Which are indeed (as someone already mentioned) protected with Blowfish. So using the ASM code from the client I've been able to get the unprotected versions although I'll probably write code to load the protected files directly (although I may be lazy and just leave the function wrapped in __asm{}). The client gets the car details and shop prices from S.DAT and P.DAT. I'll load these on the server so that values sent from the client are ignored and the server will know if a user alters the packets. (I may even scrap these files from the client data and have the server send a custom packet with this data instead).
I'm working out the structure of the P/S.DAT files. S contains the car spec, model file name, P contains the parts available and price.
The H.DAT is simple. It's essentially the smut filter for when creating handles. Why this is local I don't know. As the server can also send a packet that informs the client the handle can't be used. This is a plain text file (once deciphered) with the strings seperated either by nulls or \r\n (no idea why they don't just stick with 1 terminator). Again I may just scrap this file and have the server handle this.
There was a bug with the client where if you didn't end the client by the GUI the main thread wouldn't end and would fill up the log files (my development client had over 30GB of logs). This was caused by the thread only checking for WM_QUIT and not WM_CLOSE as well. Although this still didn't end the thread in all cases. If you close the window some times the message would hang on WM_NCMBUTTONDOWN and fill up the logs. So fixed that also.
I'm hoping to have a test server up in a few weeks. It's taking a little longer than expected.
I still need to make the menus widescreen but focusing on the game itself at the moment.
Last edited by tofuman; 20-07-18 at 03:38 PM.
I purchased a cable to connect my old hard disk
For the hard disk that I used 10 years ago
SBOL software close to the final version may be installed
I took the game data out of the old hard disk.
SBClient version is 2.1.0.0
Is it necessary data?
Yes please
Thanks for the client. I'm sad to see they never added anymore cars. They've added 2 new packet types 0x1500 and 0x1600 and some have additional sub types. And they changed some structures so currently can't login with it. So will be starting again with this client. At least there isn't an even later one.
Okay so made a start on patching the client (looks like they added more bugs that cause crashing for instance attempting to login with when a server is unavailable causes the client to instantly close so I'll fix that). I still think there may be the client version 2.08.00 out there some where.
So the client has some slight changes to logging in. It now has time attack data with 2.3.0 (which is the client I'm using now) and some other data which I need to look into. Any who as you can see most of the code I've made appears to work just fine with this client.
The game looks a little better also (I haven't bothered to add my repositioning code just yet)
I wasn't going to bother trying to write in code from ASM their variation of Blowfish. I had written code to replace their functions to load an unprotected file (which I would protect later on) but spent time on it today and managed to have working code that decrypts and encrypts the H/S/P.Dat files. The Menu files appear to use similar encryption just a different preparation for the key and like the H file the key is probably in the file itself. I probably wont disclose too much on how it works and reserve the info for anyone that wants to run a SBOL server. (although I suck with encryption and I managed to reverse the code just fine so wouldn't be hard for anyone experienced)
I'll be creating editors for the H/S/P.dat files I've made a start on the structures so luckily the later client hasn't delayed the project too much.
I took another look at the MIA texture files and their structure is pretty simple:
So I made a quick program to load the data and the image loaded as expected:Code:0x0000: Short - Texture Count 0x0002: Short - ???? always appears to be 1 0x0004: Pointer Table for Textures. One for every texture Texture Structure: 0x0000: Int - ???? maybe id or MIPMAP detail 0x0004: String (32bytes) Texture name 0x0028: Int - Format (always appears to be 0x04000000) 0x002C: Short - Texture Width 0x002E: Short - Texture Height Pixel Entries: Structure is 5 Bytes for each entry (number of entries calculated from Pointer table values / 5 Pixel Structure: 0x00: Number of Pixels + 1 0x01: Blue 0x02: Green 0x03: Red 0x04: Alpha
I'll probably get around to making a proper utility while supports importing textures at some point.
I've added the mia manager to github should these types of textures be used in other games
https://github.com/tofuman0/MIA-Manager