Quick Reply
Search this Thread
Instructor
Original Poster
#1 Old 31st May 2025 at 2:17 AM
Default It is Official. I am working on a native Mac port of SimPE.
I am using the 0.72.01 source code from Sourceforge, as I can't get the 0.73 or 0.75 source code I would much prefer to have. If ANYBODY knows somebody who might have the source code for the three Ambertation DLLs, that would eliminate a potential total roadblock. Or even the more recent source code except 0.77; it is too broken; I don't want to use it, and Chris Hatch has not responded to a message I sent here on MTS.

If anybody wants to help, I will cheerfully upload this to GitHub. It is a fast and dirty AI translation from C# to Swift right now. Not using ChatGPT, it sucks for coding, but Claude AI. Most errors are a result of SimPE not using any naming conventions, and C# is apparently not case sensitive while Swift is, so I spend a lot of time uncapitalizing or capitalizing method calls to match the method. There are roughly 50 separate projects within SimPE, but I am doing a flat structure to avoid the circular dependencies of SimPE's modular structure. But still organized in the same folders as SimPE, same file names, same classes, etc.

Before I started the mass translating I made sure I had code that could read both a huge Maxis package and a tiny custom content package, assign the header fields correctly, count the files, see if a file was compressed, and extract the first file. So there is hope, but I could sure use some help in the translation to Swift of hundreds of files.

Note that I am not swimming in total darkness. I DO have programming experience, it was just over 20 years ago, and on Pascal, C++ and MFC. I am catching things the AI misses, particularly as the AI simply can not retain an overview of the app, and what each file does within that overview.
Instructor
Original Poster
#2 Old 6th Jun 2025 at 2:05 AM
Progress continues. It is slow, as I try to fix all the non-dependency syntax/translation errors on each file as I add it. I think I have finished with the worst of it, the massive 1000 to 1400 line files that do the package heavy lifting. I may be wrong.
Instructor
Original Poster
#3 Old 7th Jun 2025 at 4:59 AM
Today I reached a point where I have most of the core file handling and package reading functionality translated to Swift. It builds without errors. Got a basic window for testing done. It runs. Tomorrow I start testing those core functions. It doesn’t do anything useful yet. I am just thrilled to have reached point where there were no missing dependencies, so that I could finally build a test framework. It progresses. I honestly am spending an average of 8 hours a day on this, but I do take breaks throughout, and the random day completely off.
Instructor
Original Poster
#4 Old 8th Jun 2025 at 9:14 PM
Well. I broke Xcode. More precisely, the size and complexity of SimPE overwhelmed XCode’s internal indexing system, and it was “forgetting” code that existed, resulting in spurious “not found in scope” errors. I tried breaking it up into modules, but that didn’t help. RIP, XCode. Hello, VS Code.
Instructor
Original Poster
#5 Old 11th Jun 2025 at 11:46 PM
It has been two days of trying to get back to where I was before. I am there. Next up: displaying filenames instead of hex for the individual MMAT, TXMT, and TXTR files.
Screenshots
Instructor
Original Poster
#6 Old 20th Jun 2025 at 2:16 AM
I thought displaying filenames would be easy. 35 files later, I am getting there. Translating the Windows Forms code into Mac Swift code is the hardest part, but only by translating the whole process and series of files it uses can I get the filenames in the necessary format, in a UI file ready to be plugged into my basic GUI. Anyway, I am still plugging away as if it was my full-time job. 138 files are translated, 3 of those still need syntax errors and compiler errors fixed. I am actually working on the first of the files that allow recoloring - who knew I had to get there before I could display filenames? Will update with pics if I ever get to a point where I can compile and run it again. Likely not anytime soon!
Instructor
Original Poster
#7 Old 20th Jun 2025 at 5:09 PM
Not meaning to give anybody false hope - there are still 3 DLLs that I am clueless about - but I just replaced the Nvidia DDS utilities with an open source DDS file handling library called CSOIL2. Because that library handles the compression and decompression of dxt1, dxt3, and dxt5 files, (unlike the DDS utilities) I did not need to include that in my code - dropping the ImageLoader file from over 900 lines of code to just under 300. What a win!
Instructor
Original Poster
#8 Old 3rd Jul 2025 at 5:53 AM
I have now got over 225 files translated. The GUI display is so complex SwiftUI was unable to handle it, so I am doing a bit of re-writing to use the older, stabler, and more fully-featured AppKit. That is going well. I continue to be impressed with the very well designed architecture of SimPE. Note that, while I am working on GUI files, it is because I desperately need to get to a point where the app will compile and run, so I can test if it even works. I think I am close. I also am perilously close to a new cascade of interdependent files. I need to back up and ensure I have all the core function files translated. Even in folders it is getting hard to keep track of them all. But the project progresses! This is my life now - my estimate is about a year to do it, MAYBE 6 months if I am very lucky. Even if I can only get recoloring and Sim editing to work it will be worth the effort. It would be better than the nothing Mac Simmers have for modding now.
Instructor
Original Poster
#9 Old 16th Jul 2025 at 5:43 PM
Time for another update. Over 350 files translated now. The dependency cascade hit before I reached a point where compiling was possible. It is now abundantly clear that there will be no compiling until the entire app is translated. I can see the light at the end of the tunnel, but that light is the train coming to run me down with an absolute shitstorm of failure to run and function as planned. Pretty sure making it run properly will take longer than translating it is taking. I have run into only one of the 3 DLLs so far, and it was on a hardcoded blacklist of what NOT to load. So THAT DLL is no problem. Overall, it progresses steadily.
Back to top