Dead Flesh Retro

Dead Flesh Retro I’m Chris, a vintage gaming enthusist & restorer/modder of 8 bit computers and consoles.

We're continuing our classic text adventure and interactive fiction playthroughs on a new YouTube channel called "Hit it...
16/12/2024

We're continuing our classic text adventure and interactive fiction playthroughs on a new YouTube channel called "Hit it with a Hammer!", which is dedicated to those weekly livestreams. With any luck I'll then be able to do more repair and coding content here at DFR next year! :)

In the meantime, to watch our playthroughs, (and even join in!) please go to Hit it with a Hammer! and subscribe!

Our little band of adventurers play classic text adventures most Monday evenings, and stream them here for people to enjoy, participate in, and catch up with...

We kicked off season two of our livestreamed collaborative classic text adventure play throughs a couple of weeks ago, a...
22/09/2024

We kicked off season two of our livestreamed collaborative classic text adventure play throughs a couple of weeks ago, and we're continuing the experience tomorrow evening, from 7pm UK time.
This time we're exploring Ballyhoo by Infocom & hoping it's an underrated gem! 🙏😂

Our little band of adventurers play classic text adventures most Monday evenings, and stream them here for people to enjoy, particupate and for live players ...

Hi folks!Well, after four months and 15 episodes, our experiment in playing through Magnetic Scrolls’ Fish! from scratch...
18/08/2024

Hi folks!

Well, after four months and 15 episodes, our experiment in playing through Magnetic Scrolls’ Fish! from scratch, collaboratively online via live stream, with novice players, and then converting it into a regular audio-only podcast, has come to a conclusion!

And it’s been bloody good fun!!

We’re definitely going to run another game, but probably won’t be producing a podcast as it’s really a lot of extra effort.

I think we’ve definitely shown that it’s possible though, and that it makes for an enjoyable listening experience - thanks so much to anyone who’s been listening and/or watching along over the last four months!

You can check out the whole podcast playlist at the attached here, and there’s a bonus chat between me and Lee at the end of the final episode where we discuss the whole effort and what the experience has been like for us 🙂

It’s certainly brought us closer together as friends, especially as we now live so far apart from each other, but more than that, it’s given us a deep appreciation for just how good this game was and still is! ❤️🐠

We can’t wait for the next one!!

Podcast · [object Object] · This is a little experiment in live collaborative text adventure playing - we're going to see if it's possible to play some classic and significant adventures together, starting with Magnetic Scrolls' Fish! We aim to play these sessions every Monday evening and live str...

For the last two months, we've been livestreaming a collaborative playthrough of the 1988     game "Fish!" by Magnetic S...
08/06/2024

For the last two months, we've been livestreaming a collaborative playthrough of the 1988 game "Fish!" by Magnetic Scrolls. This has been an experiment to see whether it's possible to play it in public this way, with players some of whom have ever played a text adventure before, and whether we can also produce it as a regular audio-only podcast.

After 7 episodes it's turned out to be *really* good fun, and has become something we all look forward to playing on a Monday evening.
So I thought it was time to do an update on what we're trying to achieve, how we're doing it and how other people can get involved :)

Part one if this update is now on our (extremely new and evolving) website:

This is part 1 of an update on a little experiment I am running with a few friends and family members, to see if it's possible to collaborative play a classic text adventure game online and in public, and keep it fun and inclusive while we do so.

05/06/2024

I’m almost dizzy with excitement to be participating in MendIt Mark’s workshops next week! He’s the G.O.A.T. of vintage electronics repair channels on YouTube, in my book, especially old high end audio equipment.

I love that he’s doing this!

Mend It Mark Workshop Sales Page

The 3rd episode of our collaborative playthrough of the classic    Fish! by Magnetic Scrolls is now out. A few friends &...
03/05/2024

The 3rd episode of our collaborative playthrough of the classic Fish! by Magnetic Scrolls is now out.

A few friends & family get together each week to play for an hour, which we stream live to YouTube and then edit into a 40-50 minute audio podcast.

It's a bit of an experiment to see whether this works as an audio-only experience, but I've spend a lot of time editing it so it hopefully doesn't drag and I'd really love to know what people think of it :)

Listen to DFR Plays Fish! by Magnetic Scrolls on Spotify. This is a little experiment in live collaborative text adventure playing - we're going to see if it's possible to play some classic and significant adventures together, starting with Magnetic Scrolls' Fish! We aim to play these sessions every...

Our weekly adventure game livestream is now also available as a podcast!Follow along as we play Fish! By Magnetic Scroll...
28/04/2024

Our weekly adventure game livestream is now also available as a podcast!

Follow along as we play Fish! By Magnetic Scrolls. As far as we know, no one has ever tried publishing a videogame let’s play as a podcast - there’s probably a very good reason for that… 🤷‍♂️🤣🕹️🎉

Anyway, it’s now available on all major podcast services, let us know what you think. Or join in the Monday evening livestreams on YouTube!

We're craking on with our playthrough of Fish! by Magnetic Scrolls tomorrow (Monday) evening, UK time! Episode 2: can we...
21/04/2024

We're craking on with our playthrough of Fish! by Magnetic Scrolls tomorrow (Monday) evening, UK time!

Episode 2: can we figure out how to avoid the exploding parrot??? 🦜💥🪦

https://youtube.com/live/zpbBjDY7rOs?feature=share
Click "Notify Me" in YouTube to be reminded when we start the stream.

This is a little experiment in live collaborative text adventure playing - we're going to see if it's possible to play some classic and significant adventure...

Got a slightly different live stream in the offing this evening!We're going to see if it's possible to collaboratively p...
15/04/2024

Got a slightly different live stream in the offing this evening!

We're going to see if it's possible to collaboratively play a classic text adventure via Zoom, and livestream it! Me and some friends and family are going to give it a go from 7pm UK time this evening, at the link below.

This is a little experiment in live collaborative text adventure playing - we're going to see if it's possible to play some classic and significant adventure...

Streaming again today, this time looking at the APVS / Acetronic adapter for the BackBit cartridge 👍🎉👾🕹️
07/04/2024

Streaming again today, this time looking at the APVS / Acetronic adapter for the BackBit cartridge 👍🎉👾🕹️

Powered by Restream https://restream.ioLive streaming from my workbench. Drop in to say hello and please ask me what I'm doing.This is really just a place to...

I’m about to stream live from my Workbench with more explorations of the   cartridge, this time looking at the MSX adapt...
06/04/2024

I’m about to stream live from my Workbench with more explorations of the cartridge, this time looking at the MSX adapter and maybe the Acetronic one if we get time 🙂

Powered by Restream https://restream.ioLive streaming from my workbench. Drop in to say hello and please ask me what I'm doing.This is really just a place to...

I’ve just been gifted this absolutely gorgeous (and enticingly knackered!) breadbin C64 by Mike from Extra life gaming l...
05/04/2024

I’ve just been gifted this absolutely gorgeous (and enticingly knackered!) breadbin C64 by Mike from Extra life gaming lounge. What a cracker & I love the warranty sticker! ❤️🕹️👾

Thanks so much Mike!!

Third in a series of vaguely interesting     coding tricks is this one that makes game variant selection a bit easier......
30/03/2024

Third in a series of vaguely interesting coding tricks is this one that makes game variant selection a bit easier...

If you look at cartridges, you might notice that single player and two player games often alternate. On many carts the solo games are all odd-numbered, and the two-player games all even numbered.

The reason for this is that it's very easy to determine whether a binary number is even or odd, as you just need to check the first bit - if it's a 1 the number is odd, if it isn't the number is even.

This makes determining whether to initialise a second player at game start very quick and easy:

LODA,r2 VARIANT
TMI,r2 %00000001
BCFR,eq TWOPLAYERS

The first line is obvious enough - we are loading the value of VARIANT into register 2. This value will have been set elsewhere in the code in response to the player pressing the Select button on the console.

The second line uses TMI - Test Mask Immediate - to compare the value against a mask with just bit 0 set (%00000001). Instead of comparing whole values, by using this mask test we can select which individual bit or bits we want to know about and disregard the rest. If all the selected bits in the mask are 1s in the byte we're testing, (i.e. in this case just bit 0, meaning the value is odd) then the Condition Code will be set to 0,0 otherwise it will be set to 1,0.

The Condition Code (CC) is the main mechanism the Signetics 2650 processor uses to compare two values. It is a two bit register, located in the Program Status Word, that is set every time a value is loaded into a register, and every time values are compared, either with COM instructions or using the mask test, as we are. Conditional branches use it to determine whether to branch somewhere or not, which is exactly what the final line does.

The logic of this is a little tricky to follow: BCFR is “branch conditional if false to a relative address”. The thing that's being tested is whether the condition code bits are equal (eq). So it means if the condition codes are not equal, then jump to the address with the label TWOPLAYERS.

Or put even more simply: if the number is even go to the code that sets up player two.

QED 😄

Live from the Workbench with more explorations of the   cartridge, this time looking at the granddaddy of gen 2 consoles...
10/03/2024

Live from the Workbench with more explorations of the cartridge, this time looking at the granddaddy of gen 2 consoles, the Adman Grandstand VEC / Fairchild Channel F…

Powered by Restream https://restream.ioLive streaming from my workbench. Drop in to say hello and please ask me what I'm doing.This is really just a place to...

I’m building adapters and trying out the   cartridge on live stream currently.On YouTube, here:
02/03/2024

I’m building adapters and trying out the cartridge on live stream currently.

On YouTube, here:

Live streaming from my workbench. Drop in to say hello and please ask me what I'm doing.This is really just a place to hang out and chat about retro machines...

Putting my new BackBit Chiptester Pro v2 through its paces by auditing the contents of my chip box 🙂Quite impressed how ...
25/02/2024

Putting my new BackBit Chiptester Pro v2 through its paces by auditing the contents of my chip box 🙂
Quite impressed how many of these are good, tbh! Impressed with the tester too - great piece of kit 👍👍

Continuing the series of     coding tricks - in my ongoing quest to produce content for the most niche audience on the e...
20/02/2024

Continuing the series of coding tricks - in my ongoing quest to produce content for the most niche audience on the entire Internet - the second trick I’m going to explain is this little nugget:

STRA, r0 $1EC9, r0-
STRA, r0 $1FC9

The purpose of these two lines of code is to blank the left and right Score values at the beginning of the game. To do so, they each need to be set to a number greater than 9, as explained in the Signetics 2636 Programmable Video Interface (PVI) manual (see 2nd pic).

There are a few things to know in advance:
Firstly, the locations of the Score values are 1FC8 (left) and 1FC9 (right).
Secondly, each score value is two digits, with each digit encoded in one of the two four bit 'nibbles' in those bytes.
(See the relevant bit of the PVI manual in pic 3)

Finally, r0 is known to be clear (set to zero) when these operations are executed (in fact we will have placed these operations here *because* we know r0 is 0, probably because we just used it to set some other things to zero during program initialisation).

We could, of course, just set r0 to a number greater than $AA (186 in decimal) and just store that in $1FC8 and $1FC9 - but why do something so obvious when we can take advantage of a little feature called "Absolute Indexed Addressing"?!

Absolute addressing means loading a value from, or storing a value in, a specific memory location - for instance "Store the value contained in register X in the memory address at Y".
Indexed addressing means you can declare an offset in addition to the memory address - so "Store the value contained in register X in the memory address at Y plus the value contained in register Z".

This can be very useful indeed, but it gets even better:

Not only can we offset by a fixed amount, but we can also tell the processor to increment or decrement the offset every time we execute the operation!

So we can say "Store the value contained in register X in the memory address at Y plus the value contained in register Z, but first take one away from the value in register Z".

The word "first" is very important - the processor will always do the required subtraction or incrementation *first* before evaluating the rest of the instruction.

So let's look back at that first line:

STRA, r0 $1EC9, r0-

This means "Store the value contained in register 0 in memory location $1EC9 plus the value contained in register zero, but take one away from the value in register 0 first".

So the first thing the processor does is to decrement r0, as that's specified in the index. But we know that the value of r0 is zero, so what happens when we subtract one from zero? Well, in standard 'logical' binary arithmetic there are no negative numbers and the result will be all 1s, or 255 in decimal / $FF in hexadecimal. The value effectively 'wraps' round to the end of the 8 bit number space.

(The Signetics 2650 can also handle signed binary arithmetic, and compare so called "twos complement" numbers in which bit 7 is used to indicate the sign, but that's a whole other story...)

Anyway, by evaluating the index first, r0 is now set to $FF, which is definitely greater than the $AA required to blank the scores. We just need to put it in the correct place, which will be the memory location for the left score digits *minus* the offset which is now $FF.

As we saw earlier, the left score location is $1FC8, and when we subtract $FF we get $1EC9 - and that indeed is the initial absolute address in the instruction.

Now that r0 is $FF, we can just store that in the right hand Score location, and that's what the second line of code does.

STRA,r0 $1FC9

So, hopefully you can see how this bit of code blanks the score values, but why do it this way instead of just setting r0 to $FF (or just $AA) and storing it in those two locations?

Well, once again we are saving space: two bytes, to be exact, as we don't need to load a value into r0, and Store Absolute (STRA) is a 3 byte instruction whether we use an index or not.
We also save two clock cycles, but as we blank the score during initiatization, (i.e. before we enter the main game loop), we don't really care about speed here.

For completeness' sake we could also subtract 1 from r0 (SUBI 1), but this would also cost two bytes, or we could subtract the value of another register from r0 using SUBZ,rx, (assuming we know the value of that register at the point the instruction is executed and it's between $1 and $55), which is a smaller instruction but would still cost one unnecessary byte.

So using Absolute, Indexed Addressing to blank the scores, as with just about all code optimisations, is a bit more complicated and harder to follow but also quite elegant when you understand it properly. We're basically using a 'free' memory addressing feature to turn a zero into a big number and store it in a specific place 🎉

Address

Sheffield

Website

Alerts

Be the first to know and let us send you an email when Dead Flesh Retro posts news and promotions. Your email address will not be used for any other purpose, and you can unsubscribe at any time.

Contact The Business

Send a message to Dead Flesh Retro:

Share