Screwtape |
Posted on 19-01-13, 01:17 in bSNES beta
|
Full mod
Post: #81 of 443 Since: 10-30-18 Last post: 1101 days Last view: 172 days |
Yeah, byuu's already had some choice words about it. The ending of the words is ALMSIVI. |
Screwtape |
Posted on 19-01-16, 00:34 in Sales and giveaways
|
Full mod
Post: #82 of 443 Since: 10-30-18 Last post: 1101 days Last view: 172 days |
The Humble Double-Fine-Presents Bundle is here, with a bunch of games published by (not developed by) the Double Fine game studio. Unlike most publisher bundles, all the games in this bundle are available DRM-free, and all but one is available on Win/Mac/Linux (and even that one is Win/Mac). I've got musical platformer 140 from a previous Indie Bundle and enjoyed it a lot; I'm also pretty interested in puzzle-box GNOG. Mountain and Everything look like pretty chill, contemplative experiences, while I guess THOTH, Escape Goat 2, and Gang Beasts are more... traditional games. The ending of the words is ALMSIVI. |
Screwtape |
Posted on 19-01-16, 12:24 in I have yet to have never seen it all.
|
Full mod
Post: #83 of 443 Since: 10-30-18 Last post: 1101 days Last view: 172 days |
In 1567, Hans Staininger, the Mayor of Braunau broke his neck by tripping over his own beard while trying to escape a fire. The beard was preserved for posterity. The ending of the words is ALMSIVI. |
Screwtape |
Posted on 19-01-18, 12:18 in Games You Played Today REVENGEANCE
|
Full mod
Post: #84 of 443 Since: 10-30-18 Last post: 1101 days Last view: 172 days |
So what you're saying is, it's the Bizarro World version of Psychonauts? The ending of the words is ALMSIVI. |
Screwtape |
Posted on 19-01-21, 09:48 in Ideas for coding a collection cataloging application
|
Full mod
Post: #85 of 443 Since: 10-30-18 Last post: 1101 days Last view: 172 days |
Honestly, if I just wanted to keep records for myself, not stick them up online or make them available to non-technical people, I'd probably just use my database's standard command-line front-end and write the SQL manually, Maybe pgcli or a GUI admin tool. Making a nice UI is a *lot* of hard work. The ending of the words is ALMSIVI. |
Screwtape |
Posted on 19-01-21, 11:56 in Mozilla, *sigh*
|
Full mod
Post: #86 of 443 Since: 10-30-18 Last post: 1101 days Last view: 172 days |
Posted by tomman Actually, it *is* optional, The button with a down arrow (just like the Downloads button on the toolbar) will save the image directly to your downloads folder, with no extra network traffic. The button with an up arrow pointing to a cloud will upload the image to the Internet. The problem is, the button with an up arrow pointing to a cloud is highlighted, and labelled "Save", so it's really easy to click it if you're not thinking too hard. It's kind of a cool feature to have, since if you take a screenshot you *probably* want to show it to somebody else, and it's a lot easier to paste a URL into an email or chat than pretty much anything else. On the other hand, making that function the default and calling it "save" does feel deceptive. Selling out user's privacy in the name of short-term convenience is more Chrome's style. The ending of the words is ALMSIVI. |
Screwtape |
Posted on 19-01-22, 11:24 in Speed Runs
|
Full mod
Post: #87 of 443 Since: 10-30-18 Last post: 1101 days Last view: 172 days |
Speedrunning Is Awesome, And Here's Why, a 45-minute video talking about why speedrun and the speedrunning community are fun to watch and get involved with, using examples from Dark Souls, Mirror's Edge, Donkey Kong 64, and Ocarina of Time. The ending of the words is ALMSIVI. |
Screwtape |
Posted on 19-01-23, 07:24 in The Oodle LZNIB Algorithm
|
Full mod
Post: #88 of 443 Since: 10-30-18 Last post: 1101 days Last view: 172 days |
The other day I came across a writeup of the Oodle LZNIB algorithm, "an LZ77-family compressor which has very good decode speed (about 5X faster than Zip/deflate, about 1/2 the speed of LZ4) while getting better compression than Zip/deflate". The bit that particularly caught my eye was near the beginning: LZNIB can send three actions : literal run ("lrl") , match with offset ("normal match"), match with repeat offset ("rep match"). It immediately made me think of byuu's beat patching/compression format, which has four possible actions because three were needed and the last one was thrown in because it might be useful, and to fill out the 2n bit pattern. beat definitely allows consecutive literal runs; I wonder if it's possible to use the same trick as LZNIB to use a single bit to determine the next action instead of two bits. The ending of the words is ALMSIVI. |
Screwtape |
Posted on 19-01-24, 01:32 in Sales and giveaways
|
Full mod
Post: #89 of 443 Since: 10-30-18 Last post: 1101 days Last view: 172 days |
GOG is giving away Distraint: Deluxe Edition, "a 2D psychological horror adventure game". The ending of the words is ALMSIVI. |
Screwtape |
Posted on 19-01-24, 03:22 in Games You Played Today REVENGEANCE
|
Full mod
Post: #90 of 443 Since: 10-30-18 Last post: 1101 days Last view: 172 days |
Posted by Nicholas Steel Two thirds of the way down the left-hand column there's a "Goodies" heading, which lists "PDF Manual" and "SEGA Mega Drive/Genesis ROM", so I'm guessing yes. Also, under "System requirements" at the bottom of the page, the Windows section says "Storage: 50MB Available Space", while the Linux and Mac sections say nothing about storage. The game details on the right say "Size: 280MB"... that must be some crazy complex emulator they're shipping with it. The ending of the words is ALMSIVI. |
Screwtape |
Posted on 19-01-25, 09:18 in Ideas for coding a collection cataloging application
|
Full mod
Post: #91 of 443 Since: 10-30-18 Last post: 1101 days Last view: 172 days |
Gamemaker has a database API? Is that for high-score tables? The ending of the words is ALMSIVI. |
Screwtape |
Posted on 19-01-26, 04:16 in Ideas for coding a collection cataloging application
|
Full mod
Post: #92 of 443 Since: 10-30-18 Last post: 1101 days Last view: 172 days |
Posted by tomman I confess, I am not a fan of Django because it includes and promotes an ORM, where I'd be much more comfortable with raw SQL strings. However, you've said you're more comfortable with ORMs, and as far as these things go, Django's is pretty convenient. Make some classes that inherit from Table, add the fields you want, then invoke the function to write out an SQL schema. If you later change your classes, invoke the function again, and it will spit out a new schema, and a migration script you can edit, and there's another tool that you can point at a database, and have it automatically apply all the migration scripts required in the right order. I guess my biggest issue with Django is that there's a Django Way for doing everything, from how to write your HTML templates, to how to set up forms, to how to talk to the database, to how to store and read configuration, to how to deploy. If you're trying to do the Simplest Thing That Could Possibly Work, all that extra stuff to learn and understand can be frustrating. On the other hand, if you already know it from a previous project, or you know for sure you're going to want more than about 80% of it, Django is a pretty slick, well-thought-out framework for making a database-backed website. It also has a huge community and excellent documentation (at least in English). Any other beginner-friendly options I could consider? Really, my experience with Python is pretty much nil, and that's something I really have to address... The thing about Python is that runtime-reflection (which you may be familiar with from java.lang.reflect) is super easy, very powerful, and very tempting when you have a task with a lot of boilerplate like setting up URL routing or something like that. A bit of reflection magic, especially in a library, makes for very attractive "webserver in five lines" examples, but because such things break the rules of "regular" Python, it can be very difficult to understand what's really going on, and therefore very difficult to debug. Django used to have a bunch of reflection magic in the pre-1.0 days, but eventually they ripped it out in favour of being a little bit more tedious and a lot more predictable. The other big Python web framework is probably Flask, which is pretty much the opposite of Django. Where Django tries to give you one of everything, Flask is a "microframework" and pretty much only gives you URL routing and templating out of the box. Where Django has an extensive, magic-free API, Flask has a small, magic-intensive API. It still has a decent-sized community, and decent documentation, and makes it easy to get something up and running quickly, so maybe it'd work for you. The ending of the words is ALMSIVI. |
Screwtape |
Posted on 19-01-27, 04:38 in Higan: how to configure different emulator settings?
|
Full mod
Post: #93 of 443 Since: 10-30-18 Last post: 1101 days Last view: 172 days |
higan will read settings from a the standard location for settings (%LOCALAPPDATA% on Windows), or beside the higan.exe binary itself. I think if you create a "settings.bml" beside higan.exe, higan will use that file for its settings. Then you can have mulitple installations, each with its own settings. The ending of the words is ALMSIVI. |
Screwtape |
Posted on 19-01-27, 04:40 in Board feature requests/suggestions
|
Full mod
Post: #94 of 443 Since: 10-30-18 Last post: 1101 days Last view: 172 days |
Is there some kind of example page + CSS file we can use for creating new themes? If there was, would you take submissions? The ending of the words is ALMSIVI. |
Screwtape |
Posted on 19-01-27, 05:38 in higan: interface redesign
|
Full mod
Post: #95 of 443 Since: 10-30-18 Last post: 1101 days Last view: 172 days |
If I had a magic wand: - a Component has zero-or-more Slots, and each slot has a Type. For example, the Super Famicom component has a slot of type Super Famicom Cartridge, a slot of type Super Famicom Expansion, a slot of type Super Famicom Controller Port 1, and a slot of type Super Famicom Controller Port 2 (since some kinds of controller only work in one port or the other). It might even have a slot for the IPL ROM, CPU and PPU revisions, just for completeness. - For some slot types, there's a specific, fixed number of possible components (like PPU revisions, or kinds of game controller); other slot types are unlimited (like game carts) - a Configuration is one or more Components wired together. - in a Configuration, each available slot must be in one of these states: forced empty, forced to contain a particular other component, required at runtime, or over-ridable at runtime with a default. For example, a Super Game Boy configuration would force the Super Famicom Expansion slot to be empty, force the Super Famicom Cartridge slot to contain the Super Game Boy cart, require a component to fill the Game Boy Cartridge slot at runtime, and have the controller ports default to controllers but over-ridable at runtime. - There should be a tree-based editor for creating configurations of whatever complexity - It should be possible to save configurations to a menu or something, like the v107 WIPs. - When choosing a configuration from the menu, if there are zero required-at-runtime slots, the system can just boot. - If there's exactly one required-at-runtime slot, and it's an unlimited type, open a file-picker and once the user picks an appropriate file, the system can boot. - If there's more than one required-at-runtime slot, or there's a required-at-runtime slot with a fixed number of options, construct a dialog box with drop-down lists (for fixed-number slots) or file-picker buttons (for unlimited slots) and an OK button. Once the user has filled all the boxes, they may proceed (higan may remember the values picked and use them as defaults next time) - If there are any over-ridable-at-runtime-with-default slots, higan should have a menu for them. Fixed-number slots have a submenu, unlimited slots open a file-picker. However, once you have configuration of this complexity, you're going to really, really need a way to separate "configuration that comes with higan" from "user configuration", so user configuration can override defaults without replacing the whole thing. The ending of the words is ALMSIVI. |
Screwtape |
Posted on 19-01-27, 10:58 in sr.ht, a new software forge
|
Full mod
Post: #96 of 443 Since: 10-30-18 Last post: 1101 days Last view: 172 days |
Posted by sureanem To be fair, the tools available for writing anything in C are rudimentary, or poorly documented. It's not really a language designed for computers with more than four megabytes of memory. I did however find girocco, which is somewhat similar to what I want and more lightweight than the other options. Isn't that basically just the git-web service that comes with git? Anyone here know of any projects like I describe? That is, modifying forum software to use as a source code host, or small self-contained source code hosting software? The smallest and most self-contained Git service I've heard of is probably Gogs, although I haven't actually tried it myself. If you don't strictly-speaking need to use Git, Fossil is a DVCS from the people who make SQLite, that incorporates a bug-tracker, a wiki, and a forum (all of which, I believe, are distributed, not just the version control). The repository format is, of course, a single SQLite database. The ending of the words is ALMSIVI. |
Screwtape |
Posted on 19-01-29, 09:07 in What are you listening to right now?
|
Full mod
Post: #97 of 443 Since: 10-30-18 Last post: 1101 days Last view: 172 days |
On Twitter, byuu recommended the album Stations by Russian Circles. It's somewhat chill post-rock, but clearly heavy-metal influenced. It reminds me a lot of Young Team by Mogwai, and particularly the track Mogwai Fear Satan, but less Scottish and more Scandinavian... which is to say, less melody and more gnashing guitars. The ending of the words is ALMSIVI. |
Screwtape |
Posted on 19-01-29, 11:56 in higan: interface redesign
|
Full mod
Post: #98 of 443 Since: 10-30-18 Last post: 1101 days Last view: 172 days |
Posted by byuu ...okay, that's pretty cool. I could get behind that. The ending of the words is ALMSIVI. |
Screwtape |
Posted on 19-01-30, 04:38 in Gammakit and Magmakit - an insane language and a game engine
|
Full mod
Post: #99 of 443 Since: 10-30-18 Last post: 1101 days Last view: 172 days |
> It has support for GameMaker-like objects and wrapping the current scope with that of a given instance (i.e. with()) ...so, dynamic scope? That's normally considered a downside for predictability reasons (changing the name of a variable in a function that calls another function that eventually calls a callback can break your program), but I guess it's got significant upsides for your specific domain? > There are "subroutine"-like functions which execute as though they were code written inline where they were called Can "break" in a subroutine break out of a loop in the caller? > The language doesn't have a concept of references, except for the manually-managed IDs of instances. So... automatic reference counting, or actual "I forgot to decref, therefore memory leak" and "I forgot to incref, therefore use-after-free"? > The parser is a PEG-like recursive descent parser with support for backtracking. Are you using a parser-combinator library like pest or nom, or doing the whole thing from scratch? If it's from scratch, do you use the packrat optimization? Do you have the cut operator to clean up the packrat cache? BTW, your readme is a bit broken, and is using double-bullets for nested lists. > var myf = compile_text("print(\"test\");"); You should totally adopt Rust's raw-string-literal syntax, it's simple to write and easy to parse. > for(var i = 0; i < max; i += 1) A language with first-class generators, but C-style for loops? :/ > myotherast = rewrite(myotherast, [](ast) { A language with first-class lambdas, but awkward C++ style syntax instead of nice Rust syntax? :/ > TODO: > - ternary operators You're probably sensing a theme here, but I've really enjoyed Rust's "everything is an expression" consistency over the traditional C "expressions and atatements are totally different, but this expression does basically the same thing as that statement". > - inheritance? how would it work? I've heard a lot of people talking about how entity-component-system libraries are much better for game development than traditional inheritance; it'd be neat to explore a gamedev-optimized language that natively used ECS for its data structures rather than inheritance. The ending of the words is ALMSIVI. |
Screwtape |
Posted on 19-01-30, 11:29 in Free project idea: The File Decoder
|
Full mod
Post: #100 of 443 Since: 10-30-18 Last post: 1101 days Last view: 172 days |
Sometimes I get a file that's in a weird format that I don't understand, and for whatever reason nobody's published file-format docs, or I can't find them for some reason. If I really want to understand the format, step one is to open it up in a hex editor and poke around. Of course, a hex editor isn't enough on it own. Binary file formats have all kinds of tropes, like fields that are the offset to the start of some array of values, or the count of values in the array, fields that change meaning depending on flags in other fields, that kind of thing. So as well as a hex-editor, I need to open up a text-editor, or even a real physical notebook, to jot down hypotheses about which bytes are themselves data, and which bytes are just descriptions of where to find data. Once I have notes, it doesn't stop there. Usually if there's one file in a given format, there's several, and it's a good test of understanding to check whether the same rules that apply to one file apply to others. Manually checking each file is a ton of work, though, so I really need to write an extraction tool based on my understanding, and try it on each input. Writing a tool takes time too, though, especially since so few languages come with convenient ways to describe packed and padded binary data, and even those that do require me to come up with sensible data structures with sensible field names. Of course the *ultimate* goal is to decode the original file format, and get whatever data it contains out into a more usable format. Once I've got a bespoke extraction tool, it's not too hard to make it write everything out into a sensible file format... but it's still a bunch of work that needs to be done nearly from scratch every time. To make my life easier, somebody needs to build a tool that's like a hex editor, but lets you interactively describe the file format of the file you're looking at, and save that file-format description. Once you have a file-format description, you can apply it to other files to see how well it fits, browse the decoded data, and export it to JSON. I imagine it working something like this: - when it first starts up, it looks just like a regular hex editor, with an undifferentiated stream of hex bytes on the left and ASCII on the right. - you can select some bytes in the stream and format them as, say, "unsigned 16-bit little-endian integer" - Now the regular hex-dump goes up to the bytes you selected, and stops. On the next line is the integer you marked, in decimal, followed by "(unnamed 1)". The line after that, the hex-dump resumes from the left-hand column. - further down, you see some bytes that look like they might be a repeating pattern of some kind. You select the pattern, and it turns out the starting offset of the pattern is equal to the integer you selected earlier, so the integer is highlighted. You format the selection as "Block of 125 bytes at offset [(unnamed 1)]" (or however many bytes it is). It still looks like a hex-dump, but it's on its own lines, instead of sharing with the bytes before and after. - the block has a repeating pattern, but it's hard to see exactly what it is, since the hex-dump always wraps at 32 bytes, and the pattern's length is not an even multiple of 32. Inside the block, you format the contents as "Array of 27-byte records". - now the hex dump starts a new line every 27 bytes, regardless of the width of the screen. That's not the right width either, though, so you try a few different record widths until you discover that 36 makes the patterns in each record line up. - It turns out there's exactly 52 records in the array, so you select the first chunk of the file and search for byte patterns that could be interpreted as 52. It turns out there's one right next to the array offset integer you discovered earlier, so you mark that as an integer, name it "record count", and amend the block to be "Block of [record count] * 36 bytes at offset [(unnamed 1)]" It would be a lot of work to make something general enough to handle *every* binary file format; something like beat with variable-length integers would be a nightmare. But in my experience there's a *lot* of file-formats that just use fixed-size and length-prefixed blocks, and a tool that could help mark them up in a machine-readable fashion would make this stuff a *lot* easier. I've got enough weird and goofy projects on my todo list as it is, but maybe somebody else here is looking for something to work on, or has an even better idea to improve it. Go nuts. The ending of the words is ALMSIVI. |