Browsed by
Category: Technical

Emulating audio IC’s – from scanning the chip with a microscope

Emulating audio IC’s – from scanning the chip with a microscope

Giulioz gives a sequel to last year’s talk “Proprietary silicon ICs and dubious marketing claims? Let’s fight those with a microscope!“, where he showed how he reverse engineered a pretty old device by looking at microscope silicon pics alone, with manual tracing and some custom tools.

Fast forward, he shows how he reverse engineered a much modern chip: the custom Roland/Toshiba TC170C140 ESP chip (1995). Completing this task required a different approach, as doing it manually would have required too much time. He used a guided, automated approach that combines clever microscopy with computer vision to automatically classify standard cells in the chip, saving us most of the manual work.

They then sped things up even further by directly probing the chip: by exploiting test routines and sending random data to the chip he figured out how the internal registers worked to create a bit-accurate emulator. He even gives the source code out on github so you can emulate the devices yourself.

Listen to the result at 32:19 where they play Darude Sandstorm.

Links:

Can’t install Windows Sandbox on Windows 10

Can’t install Windows Sandbox on Windows 10

Windows Sandbox is a great little completely isolated environment in which to test out software you’re not sure is safe or for experiments that might corrupt your environment/installations. It pops up a virtual machine running Windows 10/11, is completely isolated, and then deletes everything when shut down.

However, it’s not always easy to get started. Even after installing the latest Windows 10 updates and turning all on virtualization features in bios, I still could not see the Windows Sandbox feature in the Turn Windows Features On and Off program.

It turns out you may need to do some extra setup, and the entire process is here in tenforums. They have a script (below) that helps, but there may even be other steps to follow and they’re all outlined on the post.

@echo off

echo Checking for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

echo Permission check result: %errorlevel%

REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
echo Requesting administrative privileges...
goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"

echo Running created temporary "%temp%\getadmin.vbs"
timeout /T 2
"%temp%\getadmin.vbs"
exit /B

:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
pushd "%CD%"
CD /D "%~dp0" 

echo Batch was successfully started with admin privileges
echo .
cls
Title Sandbox Installer

pushd "%~dp0"

dir /b %SystemRoot%\servicing\Packages\*Containers*.mum >sandbox.txt

for /f %%i in ('findstr /i . sandbox.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"

del sandbox.txt

Dism /online /enable-feature /featurename:Containers-DisposableClientVM /LimitAccess /ALL

pause

adf

Bare Metal Gaming!

Bare Metal Gaming!

Inkbox decides everything in computing since sending man to the moon was a bad idea. Even operating systems and programming languages!

He sets out to write a complete clone of Zaxxon in assembly language with no operating system. He handles display, keyboard, mouse input, booting the system himself – and walks us through it all.

This kind of coding is exactly what got me into computer science as a kid. Watching demo scene videos and learning to program right to the display buffer with assembly was an era we don’t see much anymore. Still, I did get to make a graphics app that directly booted the display controller on recent hardware for an embedded platform (but that’s a story for another time).

How does it go? Awesome! Open Source Project on GitHub: https://github.com/InkboxSoftware/spacegamex64/

4AM Apple floppy archiving effort

4AM Apple floppy archiving effort

Apple II copy protection was a really interesting thing. While floppy controllers were partly hardware/firmware devices, Apple II floppy disk controller was incredibly simple and most of the work of reading/writing was done in software. This meant that copy protection schemes for the Apple II could utilize a LOT more clever and difficult tricks such as custom data encoding, half tracks, empty tracks, bad crcs, bad addressing headers, etc.

As time has gone on, original Apple II disks are becoming more and more scarce. Even worse early cracking efforts often hacked the games in ways that got around disk protection, but also removed or broke things. Unfortunately, that meant removing opening cut scenes or other game-altering changes.

The 4am Archive on the Internet Archive is an attempt to back up those original copy protected games as they were. So far there are 1673 Apple II titles safely imaged.

4am has even been interviewed by Paeleotronic on how and why he went about this. He even provides some of his tools like Passport.

Definitely give the interview a read and also check out some of the games on the archive. Many of his images (like Maniac Mansion for Apple II) come with a text file that gives all the details about what protection was found and how he worked around it.

Being Design/Engineering led vs Marketing led

Being Design/Engineering led vs Marketing led

I think it’s very important for creative people and developers to try and make something on their own, and then see if it’s fun or not. The game development process in Taito eventually changed, and we, the game creators, were increasingly expected to listen to the sales team, which came up with new title concepts they thought it would sell.

Personally, I don’t think that is the correct approach. Creators should try to make a game on their own first, and then it should expand into a larger project. This is what I’ve felt throughout my whole career.

The point is that it needs to be creatively led first, before the management gets involved. If you don’t try to make something first, you will never know if it’s fun or not. Younger people who want to make games should play really old games. They may not have good graphics, but there is something shining within them in a playable sense. There’s definitely something to be learned from those games and also to inspire people to make something new. Forget about the graphics, focus on the core design. What makes it fun.

Tomohiro Nishikado – creator of Space Invaders (and countless other games)
A cluster of displays

A cluster of displays

NTT describes newer advances of using scattered monitors to create an image. Robert Kooima previously wrote about using a clutter of monitors to create a image in his 2008 paper “Generalized Perspective Projection”

Interestingly, he found using just a random arrangement of monitors apparently doesn’t won’t work. The array is carefully calibrated to display a two-dimensional code on each monitor, then photographed in order to understand “the positional relationship between monitors.”

Self testing a Roland MT-32

Self testing a Roland MT-32

To self-test a Roland MT-32, turn the unit on while holding down the 3 button, Volume and turn on the unit to enter test mode. You can check all the keys and play some test tones. To test the midi, you need to have the midi cables plugged in. To play a demo song, just hold just Master Volume. The “MIDI Message” light should flicker if it receives data.

Here’s a great guide for setting up an MT-32

Programming without an OS

Programming without an OS

Inkbox decides to program without an OS. Back in the day, we used to do this by programming directly to the system or to BIOS with interrupts for things like disk, device, and display access.

Fast forward, and if you want to do this today, one doesn’t talk to BIOS – they need to program via UEFI services. Inkbox walks us through doing multi-core bare metal programming of the old game Zaxxon. It’s excellent work and fun walkthrough.