


Infosec consultant at REVƎЯSEC https://reversec.com/ - Coding, Research + various other interests
Game copy protection was an art form, as well as #cracking these protections. This cat and mouse game evolved over time, with protections including more and more complicated and well-hidden checks
Game copy protection was an art form, as well as #cracking these protections. This cat and mouse game evolved over time, with protections including more and more complicated and well-hidden checks trying to identify poor or quickly made cracks. The best protections hindered the release of a crack long enough for the game to hit enough initial sales. After the initial sales the eventual release of a crack would no longer hurt (much).
Rewind to 2025 and legal purchase of early 90s PC games from palaces such as COG: Apparently, there are plenty of releases that have the poor crack built-in, and where the anti-crack checks kick in, making the game unplayable. The irony is that the only way to play is to get a proper "real crack".
Cool write-up of the protection in "The Games: Winter Challenge" and the associated problems of "legal releases":
https://mrwint.github.io/winter/writeup/writeup.html
#retrogaming #hacking
The feeling when you notice a bug in your binutils port that has been generating semi-randomly broken branch relaxation trampolines for decades.


The feeling when you notice a bug in your binutils port that has been generating semi-randomly broken branch relaxation trampolines for decades.
#programming #coding #oops

I still occasionally write some m68k code and apps. These are from 2024:
Execute code in #amiga color registers: https://sintonen.fi/src/colexec/colexec.asm
RXS-M-XS 32bit-32bit Permuted Congruential Generator: https://sintonen.fi/src/misc/pcg/_rand.asm
Minimal modplayer (protracker music player): https://sintonen.fi/src/minimod/ (the replayer routine is mostly from Frank Wille however)

I also participated in very useless size/speedcoding competitions - some of them are still accessible from this old web page: https://amycoders.org/compo/
Note that some of the HTML is a bit broken, for example https://amycoders.org/compo/circlecompo.html - you can view source to see the full routine
#m68k #assembly #sizecoding #speedcoding
In my youth I wrote m68k assembly programs with tens of thousands of lines and speed optimized every section of the code, even initialization/cleanup executed exactly once. It was very very silly. It
In my youth I wrote m68k assembly programs with tens of thousands of lines and speed optimized every section of the code, even initialization/cleanup executed exactly once. It was very very silly. It was a lot of fun.
#development #assembly #coding #programming
The white whale CRT, 43" #Sony KX-45ED1 / PVM-4300 found, rescued and restored. The adventure is lovingly documented in this great #shankmods video: https://www.youtube.com/watch?v=JfZxOuc9Qwk
The white whale CRT, 43" #Sony KX-45ED1 / PVM-4300 found, rescued and restored. The adventure is lovingly documented in this great #shankmods video: https://www.youtube.com/watch?v=JfZxOuc9Qwk
#technology #crt #retrogaming
Great talk by Andreas Fredriksson about applying constraints in order to create better software (and also about creating #Amiga demo Eon) - https://www.youtube.com/watch?v=WDfrA7PE-G0
Great talk by Andreas Fredriksson about applying constraints in order to create better software (and also about creating #Amiga demo Eon) - https://www.youtube.com/watch?v=WDfrA7PE-G0
#demoscene #hacking #programming

@jgrg Oops, it's u-z. Corrected the post now, thanks for pointing that out.

Some random notes after glancing over the G15D programmer’s reference manual:
Bendix G-15 doesn't use hex, but sex: The notation is 0-9 u-z (sexadecimal).
Section 3.2.3 goes into details on how to optimize performance: You need to carefully plan the order of instructions and data on the drums for optimal speed. The most optimal code will overlay computation and memory accesses. This reminds me of "the story of Mel". The optimization tricks done don't differ much from handcrafting optimal assembly code on more modern systems where external memory accesses are very expensive vs computation within registers.
The addressing notation directly addresses line on the drum and offset of the word on that line. There are 20 lines with 108 29-bit words on each. Arithmetic operations operate on a separate short "register" lines that circulate much faster than the actual memory (27x speed vs memory drum).
Considering how slow it's to process individual memory loads / stores, it makes perfect sense that the system has block copy instructions.
Each instruction has offset within the line to the next instructions to execute. That is, there's always an explicit jump encoded in each instruction. Conditional code execution occurs by suppressing the jump when condition is met, in which case the jump is not taken and next instruction is executed instead. In modern architectures you generally execute next instructions address and there are dedicated branch instructions.
Code execution can happen from 7 long lines (0, 1, 2, 3, 4, 5, 19) and one short line (23). Some lines have reserved roles and offsets, at least when using the libraries provided by Bendix.
As there is no built-in stack register or stack a return address for subroutine calls must be handled manually. This is reminiscent to link register on some later platforms (such as PowerPC). It of course is entirely possible to manually maintain a stack on some line, dedicating some fixed address as stack pointer. All code must then agree on this decided calling convention.
Punched (paper) tape and magnetic tape is available for input, as well as typewriter (console). Output can be (IBM) punch cards, magnetic tape or typewriter (console). The typewriter also has some switches for control.
I love the introductory chapter in the Bendix G15 Programmers's Reference Manual - when computers were still fresh enough that you had to start from the very basic concepts.


I love the introductory chapter in the Bendix G15 Programmers's Reference Manual - when computers were still fresh enough that you had to start from the very basic concepts.
http://www.bitsavers.org/pdf/bendix/g-15/G15D_Programmers_Ref_Man.pdf
#retrocomputing #programming #bendixg15
Cross-compiling anything depending on gnulib on a more exotic platform can be exercise of patience: gnulib will replace some perfectly working libc functions with its own replacement functions - which


Cross-compiling anything depending on gnulib on a more exotic platform can be exercise of patience: gnulib will replace some perfectly working libc functions with its own replacement functions - which themselves can than trip over in some unexpected ways. #development #hacking

New Finnish #windpower production record (>7 GW) today due to a winter storm. https://www.fingrid.fi/en/electricity-market/power-system/ #greenenergy #energy #FloatingIsFun


New Finnish #windpower production record (>7 GW) today due to a winter storm. https://www.fingrid.fi/en/electricity-market/power-system/ #greenenergy #energy #FloatingIsFun
#lftkryo creating #SIDmusic from scratch at the #Commodore64 BASIC prompt:
#lftkryo creating #SIDmusic from scratch at the #Commodore64 BASIC prompt:
https://youtu.be/ly5BhGOt2vE
#oldschool #c64 #retrocomputing #hacking
Sometimes you write a quick, dirty & fugly thing and immediately feel disgusted by it. But it works, so does it matter in the end?


Sometimes you write a quick, dirty & fugly thing and immediately feel disgusted by it. But it works, so does it matter in the end?
#hacking #exploitdevelopment #python