Register - Login
Views: 99395954
Main - Memberlist - Active users - Calendar - Wiki - IRC Chat - Online users
Ranks - Rules/FAQ - Stats - Latest Posts - Color Chart - Smilies
04-24-22 12:55:44 PM
Jul - Projects and Creations - Maraiah New poll - New thread - New reply
Next newer thread | Next older thread
marrub

Level: 19


Posts: 68/84
EXP: 30326
For next: 5451

Since: 01-23-18

Pronouns: they/them - others are welcome
From: colorado (previously hell (aka. ohio))

Since last post: 1.5 years
Last activity: 299 days

Posted on 03-17-19 02:16:59 PM Link | Quote
cr% cat 68
~/jul
So, I guess it's kind of weird to post this on a forum that has nothing to do with what it's actually for, but I have a few reasons for this:

* All of the Marathon forums suck.
* The Marathon community is dead.
* This place is cozy and I wanted to post here.

So, uh, here it is: A Marathon tools project! Except I haven't really made much yet, because I'm really bad at managing my time. For those of you who don't know what Marathon is, it's Bungie's precursor to Halo for Classic Mac OS. Of course, being from 1994, it's a Doom clone. There's something a little off about the game though, lots of things which make it unique. Terminals spout exposition at you and alien creatures attack you non-stop, the dimensions of space start to make less sense as the portal-based renderer drags you down into the pits of rampancy and madness. That kinda stuff.

It is one of my favorite game series of all time, regardless of its (mostly spiritual, although also somewhat direct) successor. But there's a problem: I can't mod it. Well, I can, there are definitely tools that exist. But all of them are, to say the least, far less than adequate. The easiest workflow is to use Bungie's original map editor, Forge. From 1996. By emulating it, or by using an actual classic Macintosh, saving the maps and transferring them to your PC, polishing in Weland, going through the entire map in-game with a texture editor mod, and so on until your sanity depletes and you eventually give up. Being a programmer, I like to bring the most overkill solution to any problem, therefore, I started this project about a year ago in hopes to bring, uh, hope, to me ever finishing a mod for Marathon.



(Yes, I cloned two logos in one, sue me. Wait, don't sue me, please. I swear that's not trademark infringement. I'M NOT SELLING ANYTH* `Alison was banned from irc.bungie.org)

Everything's written in Rust. Original code was C++, then D, and some experiments with Go, but ultimately Rust won. The code and documentation is licensed as public domain and available here. When things are actually usable, I'll start making Win64 builds to play with.

Stuff that's done, from lowest level to highest:
  • Data readers for:
    • All of the parts of a map file, except the iidx and PLAT chunks. The map structure is interpreted as a non-precalculated map regardless of if it is one or not, so these are not an issue.
    • All of the parts of a Marathon 1 map file, except the NAME chunk, which even Aleph One doesn't know how to load. I will probably try to figure this one out some time.
    • All the parts of a binary terminal definition.
    • Any QuickDraw PICT image (used primarily by mods.)
    • Physics files (and embedded Physics.)
    • M2 Sound files; all of the data within them.
    • M2 Shapes files; ditto.
  • DEFLATE loading. I need this for PNG (yes I know I could use libpng shut up) so that I can make importing images easier.
  • A command-line program that can output the structured data loaded from a Map file as YAML or debugging data, output images from anything as TGA, output sounds as WAV, et cetera.
  • A GUI prototype. Does not function yet, but there are some parts laid out which have screenshots below.

Stuff that needs doing:
  • PNG reading. I'm currently working on this.
  • Reading for Marathon 1 format Sound and Shapes files.
  • GUI functionality.
  • Map geometry functionality, especially CSG tools.
  • Writing functionality for everything not listed above.


I've also written annotated documentation of the format of all of the data in Marathon I've gone through so far in Markdown. The code has many, many unit tests to ensure validity. I still need to write more.

Here are some screenshots of GUI prototypes:



The design of the UI is to be similar to DoomEd, though hopefully quite a bit more pleasing to the eye. Here's a screenshot of DoomEd for reference, it's what id Software used to make Doom:


This is mostly a project I'm making for myself, but I would really love some feedback on what's finished and ideas for the future. I'd also appreciate help on the project if anyone here is really inclined, but I don't really expect anyone to be interested in the project in the first place. (Also please tell me if I forgot to put something in the OP, I'm writing this when I should really be asleep.)

____________________
EOF
[1] 0:zsh*
"cr" 14:31 25-Jul-49
Q
風のノータム
Level: 105


Posts: 2922/2986
EXP: 11966403
For next: 295857

Since: 08-03-07

Pronouns: she/her
From: Nowhere

Since last post: 41 days
Last activity: 2 min.

Posted on 03-17-19 04:44:42 PM Link | Quote
Marathon is cool & good, and I appreciate this very much.

Thank you for your hard work, and I'm looking forward to future updates!

____________________
layout by Sofi.
2Tie

Rumours of my death have been greatly exaggerated.
Level: 70


Posts: 1126/1229
EXP: 2872048
For next: 143763

Since: 02-22-10

Pronouns: anything works
From: here

Since last post: 49 days
Last activity: 1 day

Posted on 03-17-19 04:47:51 PM Link | Quote
UESCTerm 802.11 (remote override)
044 05.10.2337

as someone who has only succesfully gotten obed (another windows marathon editor) working twice and weland working zero times, i'm definitely looking forward to this

also i noticed you're in the marathon speedrunning discord but not the general marathon discord, nor the pathways discord

____________________
Press B to Cancel
Press A to Acknowledge
marrub

Level: 19


Posts: 69/84
EXP: 30326
For next: 5451

Since: 01-23-18

Pronouns: they/them - others are welcome
From: colorado (previously hell (aka. ohio))

Since last post: 1.5 years
Last activity: 299 days

Posted on 03-18-19 12:27:45 AM Link | Quote
cr% cat 69
~/jul
Originally posted by 2Tie
also i noticed you're in the marathon speedrunning discord but not the general marathon discord, nor the pathways discord

A friend of mine had someone invite me to that server because they were talking about making an alternate source port to Aleph One which I was interested in, but then I kind of completely forgot about it.

____________________
EOF
[1] 0:zsh*
"cr" 14:31 25-Jul-49
SC
Member
Level: 26


Posts: 93/182
EXP: 96686
For next: 5589

Since: 01-24-18

Pronouns: he/they
From: Park City

Since last post: 50 days
Last activity: 5 days

Posted on 03-23-19 07:03:22 PM Link | Quote
i have almost no experience with marathon ever, i never grew up with it, and hell, we never could afford a classic Mac, let alone a new one, but i'm still really excited to see people make modern tools for old-as-heck games. i always love seeing people trying to get old games modernized by making modding tools for them, it's so dang neat.

thanks for posting this!

____________________
I don't know what to put here.
marrub

Level: 19


Posts: 70/84
EXP: 30326
For next: 5451

Since: 01-23-18

Pronouns: they/them - others are welcome
From: colorado (previously hell (aka. ohio))

Since last post: 1.5 years
Last activity: 299 days

Posted on 07-11-19 05:22:54 AM (last edited by marrub at 07-11-19 05:25:58 AM) Link | Quote
cr% cat 70
~/jul
Hi it's been way too long since I last posted!!! I've been really busy IRL and Not Dying Under Capitalism™ but also working on this. A few major updates:

  • I refactored a lot of internal stuff! Some stuff is more efficient while others are easier to use.

  • Parts of the UI are now written in C++, using some pretty complex magic code I'm able to write Qt objects in Rust and use them as a part of my C++ code. Everything is linked by Cargo still, despite the C++ being compiled with CMake.

  • There's full compatibility with macOS!

  • More and more of the UI elements are actually working. Yesterday I wrote code to paint on Qt surfaces using Rust, so today I'm going to make the map view work.


Generally speaking I'm getting pretty close to having a working editor. Here's some screen shots of stuff working:





____________________
EOF
[1] 0:zsh*
"cr" 14:31 25-Jul-49
Next newer thread | Next older thread
Jul - Projects and Creations - Maraiah New poll - New thread - New reply


Rusted Logic

Acmlmboard - commit 47be4dc [2021-08-23]
©2000-2022 Acmlm, Xkeeper, Kaito Sinclaire, et al.

29 database queries.
Query execution time:  0.082236 seconds
Script execution time:  0.015201 seconds
Total render time:  0.097437 seconds


TidyHTML vomit below
line 1 column 1 - Warning: missing <!DOCTYPE> declaration
line 2 column 301 - Warning: unescaped & or unknown entity "&page"
line 119 column 11 - Warning: <form> isn't allowed in <table> elements
line 118 column 10 - Info: <table> previously mentioned
line 120 column 11 - Warning: missing <tr>
line 120 column 119 - Warning: missing </font> before </td>
line 124 column 16 - Warning: plain text isn't allowed in <tr> elements
line 120 column 11 - Info: <tr> previously mentioned
line 125 column 68 - Warning: missing </nobr> before </td>
line 141 column 68 - Warning: missing </nobr> before <tr>
line 147 column 35 - Warning: missing <tr>
line 147 column 50 - Warning: missing </font> before </td>
line 148 column 37 - Warning: unescaped & or unknown entity "&id"
line 147 column 178 - Warning: missing </font> before </table>
line 149 column 35 - Warning: missing <tr>
line 149 column 50 - Warning: missing </font> before </td>
line 149 column 91 - Warning: missing </font> before </table>
line 156 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 158 column 9 - Warning: missing <tr>
line 176 column 13 - Warning: missing <tr>
line 177 column 102 - Warning: unescaped & or unknown entity "&postid"
line 179 column 74 - Warning: <style> isn't allowed in <td> elements
line 179 column 9 - Info: <td> previously mentioned
line 179 column 140 - Warning: missing </div>
line 212 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 214 column 9 - Warning: missing <tr>
line 232 column 13 - Warning: missing <tr>
line 233 column 102 - Warning: unescaped & or unknown entity "&postid"
line 235 column 74 - Warning: <style> isn't allowed in <td> elements
line 235 column 9 - Info: <td> previously mentioned
line 240 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 242 column 9 - Warning: missing <tr>
line 260 column 13 - Warning: missing <tr>
line 261 column 102 - Warning: unescaped & or unknown entity "&postid"
line 263 column 74 - Warning: <style> isn't allowed in <td> elements
line 263 column 9 - Info: <td> previously mentioned
line 268 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 270 column 9 - Warning: missing <tr>
line 288 column 13 - Warning: missing <tr>
line 289 column 102 - Warning: unescaped & or unknown entity "&postid"
line 291 column 74 - Warning: <style> isn't allowed in <td> elements
line 291 column 9 - Info: <td> previously mentioned
line 291 column 140 - Warning: missing </div>
line 295 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 297 column 9 - Warning: missing <tr>
line 315 column 13 - Warning: missing <tr>
line 316 column 102 - Warning: unescaped & or unknown entity "&postid"
line 318 column 74 - Warning: <style> isn't allowed in <td> elements
line 318 column 9 - Info: <td> previously mentioned
line 318 column 695 - Warning: missing </div>
line 324 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 326 column 9 - Warning: missing <tr>
line 344 column 13 - Warning: missing <tr>
line 345 column 102 - Warning: unescaped & or unknown entity "&postid"
line 347 column 74 - Warning: <style> isn't allowed in <td> elements
line 347 column 9 - Info: <td> previously mentioned
line 349 column 1 - Warning: missing <li>
line 350 column 1 - Warning: missing <li>
line 351 column 1 - Warning: missing <li>
line 352 column 1 - Warning: missing <li>
line 353 column 1 - Warning: missing <li>
line 347 column 140 - Warning: missing </div>
line 361 column 17 - Warning: missing <tr>
line 361 column 17 - Warning: discarding unexpected <table>
line 364 column 35 - Warning: missing <tr>
line 364 column 50 - Warning: missing </font> before </td>
line 364 column 91 - Warning: missing </font> before </table>
line 366 column 35 - Warning: missing <tr>
line 366 column 50 - Warning: missing </font> before </td>
line 367 column 37 - Warning: unescaped & or unknown entity "&id"
line 366 column 178 - Warning: missing </font> before </table>
line 368 column 17 - Warning: discarding unexpected </textarea>
line 368 column 28 - Warning: discarding unexpected </form>
line 368 column 35 - Warning: discarding unexpected </embed>
line 368 column 43 - Warning: discarding unexpected </noembed>
line 368 column 53 - Warning: discarding unexpected </noscript>
line 368 column 64 - Warning: discarding unexpected </noembed>
line 368 column 74 - Warning: discarding unexpected </embed>
line 368 column 82 - Warning: discarding unexpected </table>
line 368 column 90 - Warning: discarding unexpected </table>
line 370 column 9 - Warning: missing </font> before <table>
line 382 column 25 - Warning: discarding unexpected </font>
line 391 column 37 - Warning: discarding unexpected </font>
line 369 column 1 - Warning: missing </center>
line 120 column 63 - Warning: <img> lacks "alt" attribute
line 125 column 19 - Warning: <td> attribute "width" has invalid value "120px"
line 125 column 93 - Warning: <img> lacks "alt" attribute
line 141 column 19 - Warning: <td> attribute "width" has invalid value "120px"
line 141 column 98 - Warning: <img> lacks "alt" attribute
line 148 column 44 - Warning: <img> proprietary attribute value "absmiddle"
line 148 column 142 - Warning: <img> proprietary attribute value "absmiddle"
line 148 column 246 - Warning: <img> proprietary attribute value "absmiddle"
line 161 column 22 - Warning: <img> lacks "alt" attribute
line 161 column 63 - Warning: <img> lacks "alt" attribute
line 161 column 111 - Warning: <img> lacks "alt" attribute
line 161 column 161 - Warning: <img> lacks "alt" attribute
line 162 column 11 - Warning: <img> lacks "alt" attribute
line 172 column 15 - Warning: <img> lacks "alt" attribute
line 189 column 2027 - Warning: <img> lacks "alt" attribute
line 203 column 4362 - Warning: <img> lacks "alt" attribute
line 204 column 4434 - Warning: <img> lacks "alt" attribute
line 207 column 4703 - Warning: <img> lacks "alt" attribute
line 217 column 23 - Warning: <img> lacks "alt" attribute
line 217 column 64 - Warning: <img> lacks "alt" attribute
line 217 column 113 - Warning: <img> lacks "alt" attribute
line 217 column 163 - Warning: <img> lacks "alt" attribute
line 218 column 11 - Warning: <img> lacks "alt" attribute
line 228 column 15 - Warning: <img> lacks "alt" attribute
line 244 column 11 - Warning: <img> lacks "alt" attribute
line 245 column 22 - Warning: <img> lacks "alt" attribute
line 245 column 63 - Warning: <img> lacks "alt" attribute
line 245 column 111 - Warning: <img> lacks "alt" attribute
line 245 column 161 - Warning: <img> lacks "alt" attribute
line 246 column 11 - Warning: <img> lacks "alt" attribute
line 256 column 15 - Warning: <img> lacks "alt" attribute
line 263 column 566 - Warning: <img> lacks "alt" attribute
line 265 column 987 - Warning: <div> anchor "joyeuse" already defined
line 273 column 22 - Warning: <img> lacks "alt" attribute
line 273 column 63 - Warning: <img> lacks "alt" attribute
line 273 column 111 - Warning: <img> lacks "alt" attribute
line 273 column 161 - Warning: <img> lacks "alt" attribute
line 274 column 11 - Warning: <img> lacks "alt" attribute
line 284 column 15 - Warning: <img> lacks "alt" attribute
line 300 column 22 - Warning: <img> lacks "alt" attribute
line 300 column 63 - Warning: <img> lacks "alt" attribute
line 300 column 112 - Warning: <img> lacks "alt" attribute
line 300 column 162 - Warning: <img> lacks "alt" attribute
line 301 column 11 - Warning: <img> lacks "alt" attribute
line 311 column 15 - Warning: <img> lacks "alt" attribute
line 320 column 1118 - Warning: <img> proprietary attribute value "absmiddle"
line 320 column 1118 - Warning: <img> lacks "alt" attribute
line 329 column 22 - Warning: <img> lacks "alt" attribute
line 329 column 63 - Warning: <img> lacks "alt" attribute
line 329 column 111 - Warning: <img> lacks "alt" attribute
line 329 column 161 - Warning: <img> lacks "alt" attribute
line 330 column 11 - Warning: <img> lacks "alt" attribute
line 340 column 15 - Warning: <img> lacks "alt" attribute
line 355 column 1177 - Warning: <img> lacks "alt" attribute
line 356 column 1321 - Warning: <img> lacks "alt" attribute
line 357 column 1465 - Warning: <img> lacks "alt" attribute
line 358 column 1537 - Warning: <img> lacks "alt" attribute
line 367 column 44 - Warning: <img> proprietary attribute value "absmiddle"
line 367 column 142 - Warning: <img> proprietary attribute value "absmiddle"
line 367 column 246 - Warning: <img> proprietary attribute value "absmiddle"
line 376 column 25 - Warning: <img> lacks "alt" attribute
line 381 column 267 - Warning: <img> lacks "alt" attribute
line 149 column 50 - Warning: trimming empty <font>
line 361 column 17 - Warning: trimming empty <tr>
line 364 column 50 - Warning: trimming empty <font>
line 125 column 68 - Warning: <nobr> is not approved by W3C
line 141 column 68 - Warning: <nobr> is not approved by W3C
line 177 column 27 - Warning: <nobr> is not approved by W3C
line 233 column 27 - Warning: <nobr> is not approved by W3C
line 261 column 27 - Warning: <nobr> is not approved by W3C
line 289 column 27 - Warning: <nobr> is not approved by W3C
line 316 column 27 - Warning: <nobr> is not approved by W3C
line 345 column 27 - Warning: <nobr> is not approved by W3C
Info: Document content looks like HTML5
Info: No system identifier in emitted doctype
Tidy found 149 warnings and 0 errors!


The alt attribute should be used to give a short description
of an image; longer descriptions should be given with the
longdesc attribute which takes a URL linked to the description.
These measures are needed for people using non-graphical browsers.

For further advice on how to make your pages accessible
see http://www.w3.org/WAI/GL.
You are recommended to use CSS to specify the font and
properties such as its size and color. This will reduce
the size of HTML files and make them easier to maintain
compared with using <FONT> elements.

You are recommended to use CSS to control line wrapping.
Use "white-space: nowrap" to inhibit wrapping in place
of inserting <NOBR>...</NOBR> into the markup.

About HTML Tidy: https://github.com/htacg/tidy-html5
Bug reports and comments: https://github.com/htacg/tidy-html5/issues
Official mailing list: https://lists.w3.org/Archives/Public/public-htacg/
Latest HTML specification: http://dev.w3.org/html5/spec-author-view/
Validate your HTML documents: http://validator.w3.org/nu/
Lobby your company to join the W3C: http://www.w3.org/Consortium

Do you speak a language other than English, or a different variant of
English? Consider helping us to localize HTML Tidy. For details please see
https://github.com/htacg/tidy-html5/blob/master/README/LOCALIZE.md