/Oldies

Old code written by Ricbit

Primary LanguageAssembly

Name: 1993-06-reflex
Language: Pascal
Description: Two-player game for DOS, when a beep sounds, the first one to 
press Shift on the keyboard wins. One player uses left-shift and the other
one uses right-shift.

Name: 1993-07-cryptarithm
Language: Pascal
Description: Cryptharithm for text-mode DOS.

Name: 1993-08-tictactoe4d
Language: Pascal
Description: 4D Tic-Tac-Toe for text-mode DOS. There are two versions, one
is a two-player game, the other is single-player against a minimax AI.

Name: 1994-05-pacman
Language: Pascal
Description: Pac-man clone for text-mode DOS.

Name: 1994-05-polimac115
Language: C
Description: Exercises from the course MAC155 from Poli USP (Introduction
to Computing for Tech and Sciences).

Name: 1994-09-freecell
Language: Pascal
Description: Freecell implementation for text-mode DOS. I think this was the
last program I wrote in Pascal.

Name: 1994-11-raytracer
Language: C++
Description: An object-oriented raytracer. I had just learned C++ and thought
it would be a nice language to write a raytracer.

Name: 1995-04-physics
Language: C++
Description: Rudimentary physics simulation: no integration, it just plotted a
trajectory based on parametric equations. I think this was the first expression
evaluator I wrote. In this package there's also a text-based windows manager
called RicardoVision.

Name: 1995-05-arkanoid
Language: C
Description: An arkanoid clone for text-mode DOS.

Name: 1995-05-scancode
Language: C
Description: Prints the scancode of any pressed key on keyboard. We didn't
have home internet to check scan code tables on those days, so I had to
extract them manually.

Name: 1995-07-checkers
Language: C++
Description: A checkers implementation for text-mode DOS. Two-player only, I
didn't write an AI for this.

Name: 1995-09-doom
Language: C++, Assembly x86
Description: Even though it' s called doom, this is actually a wolfenstein
clone. I got a very high frame rate on a 386, but I had only 90-degree walls,
no ceiling or floor (but I did have distance cueing and texture mapping). The
drawing is based on raycasting over a BSP tree, and most time-consuming
tasks were done directly in assembly.

Name: 1995-10-descent
Language: Assembly x86
Description: Improving on the doom clone, I started a descent clone. This
one could place walls on any orientation, but had only flat shading.

Name: 1995-10-firedemocpp
Language: C++
Description: A small demo with a realistic fire animation, written in C++.

Name: 1995-10-firedemoasm
Language: Assembly x86
Description: A small demo with a realistic fire animation, rewritten from
scratch in assembly, since the C++ version was too slow at the time.

Name: 1995-11-sbplayer
Language: C++
Description: A macrolanguage player for SoundBlasters, compatible with the
command PLAY from MSX. I made this three days after buying a SoundBlaster card.

Name: 1995-12-graphicseditor
Language: C++
Description: A small graphics editor for the VGA 256 color mode. I think I
wrote this to draw textures for the doom clone.

Name: 1995-12-rtv
Language: Assembly x86
Description: A real-time raytracer over a voxel field.

Name: 1996-01-engine
Language: Assembly x86
Description: Another 3D graphics engine, this one could place triangles in
general position, with texture mapping and gouraud shading.

Name: 1996-04-gomoku
Language: C++
Description: Text-based Gomoku for DOS, this one had an AI based on heuristics.

Name: 1996-04-videotun
Language: C++
Description: Display a static pattern to calibrate monitors.

Name: 1996-06-asciieditor
Language: C++
Description: An ASCII art editor. I used this mostly to write text-based UIs
for my programs. The debug screens from BrMSX were written with this.

Name: 1996-06-boss
Language: C++
Description: A game development library providing low-level access to PC
hardware. Since this accessed the hardware directly, I called it the
Bittencourt Operating System (BOSS). The nicest thing about this was using
operator[] to simulate linear memory arrays in DOS using the XMS driver.

Name: 1996-06-psgplayer
Language: C++
Description: My first emulator. This one emulates the PSG chip from MSX, it
could play MSX tunes on the PC by mapping the PSG registers on the FM
registers of the SoundBlaster. Of course this method had a very low sound
quality when compared to the original.

Name: 1996-06-shading
Language: C
Description: Fast shading using lookup tables.

Name: 1996-08-doom
Language: C, Lex, Yacc
Description: Another 3d engine, this time with a DSL to describe polygons.

Name: 1996-11-rbc
Language: C, Lex, Yacc
Description: A portable C compiler, it generates code for a virtual stack
machine, and this code is then converted to Assembly Z80 or Assembly x86.

Name: 1996-11-rbrt
Language: C++, Lex, Yacc
Description: An adaptative ray tracer. Much improved since the 1994-11 version,
this one has more primitives, and include a DSL to describe the scene to be
rendered.

Name: 1996-12-vesa
Language: C
Description: Lists all video modes available from a VESA videocard.

Name: 1996-12-rbvv
Language: C
Description: Voxel rendering engine based on shell extraction. This was
promising but videocard makers spoiled the fun for us software renderers.

Name: 1997-04-rbd
Language: C, Lex, Yacc, Assembly x86
Description: 3d engine capable of reading and processing models from 3D Studio,
generates fractal landscapes, compatible with dos and linux.

Name: 1997-08-penguin
Language: C++, Lex, Yacc
Description: A parallax game engine including a DSL for character description.

Name: 1997-08-brmsx
Language: Assembly x86, Binary x86
Description: This MSX emulator raised the bar for all others, being the faster
and most accurate of its time. You may like to check the self-modifying code in
psg.asm, and also some code written in binary on blit.asm (I was using tasm at
the time, and it didn't have MMX support, so I had to encode it manually).

Name: 1997-10-wave
Language: C
Description: Plays a 440Hz square wave on sound blaster using dma transfers.

Name: 1997-11-rbz
Language: C
Description: Comparison of many pre-encoding schemes to improve image
compression. The goal was to check which scheme was the best to encode a
dithered image.

Name: 1997-12-psgplayer
Language: C
Description: Update to the old psgplayer, this time emulating the PSG using
wave-based synthesis. This was a proof of concept before I implemented
sound support in BrMSX.

Name: 1998-04-dsktool
Language: C
Description: A FAT12 implementation, useful to insert and extract files
from floppy disk images.

Name: 1998-04-brsms
Language: Assembly x86, Binary x86
Description: Console emulator, supports Sega SG-1000, Sega SC-3000, 
Sega Master System, Sega Game Gear and Colecovision.

Name: 1998-05-glove
Language: C
Description: A driver for a virtual reality glove called 5th Glove.

Name: 1998-06-twoliners
Language: BASIC
Description: A collection of games and demos in two lines of MSX BASIC.

Name: 1998-07-serial
Language: C
Description: Connects two computers using a serial cable. This was a proof of
concept before I implemented multiplayer over serial in BrMSX.

Name: 1998-08-scr2grp
Language: C
Description: Converts ZX Spectrum .SCR screenshots to the MSX .GRP format.

Name: 1998-09-must
Language: Assembly Z80
Description: Plays compressed music in an MSX with a standard megaram.

Mame: 1998-09-wav2wvz
Language: C
Description: Converts a .wav file to the .wvz format used by must.

Name: 1998-12-mp2audio
Language: C
Description: Decodes the header of an mp2 audio file.

Name: 1999-02-smsfix
Language: C
Description: Fix bad dumps of SMS cartridges.

Name: 1999-02-castool
Language: C
Description: Reads a wave file containing an MSX cassete image and demodulate
the FSK to get a .cas binary stream.

Name: 1999-03-gota
Language: C
Description: Realistic physics simulator, could handle static and dynamic coils
with newton integration.

Name: 1999-05-fudebrowser
Language: Assembly Z80
Description: Web browser for MSX. Browses over pre-rendered html pages loaded
from disk.

Name: 1999-05-wise
Language: C, Lex, Yacc
Description: Converts html files into the htz format used by fudebrowser.

Name: 1999-10-fourfours
Language: C
Description: Solve the four fours puzzle using forward chaining.

Name: 1999-10-readwav
Language: Assembly Z80
Description: Plays a .wav file on an MSX without additional hardware.

Name: 1999-11-screenconv
Language: C
Description: Convert images to mant MSX formats (screens 7,8,10,12).

Name: 1999-11-fractalcomp
Language: C
Description: Encoder and decoder for a fractal compression scheme. Quality was
nice but it took a long, long time to encode an image.

Name: 1999-12-hypefm
Language: Assembly Z80, C
Description: Driver to add FM music to Hype.

Name: 1999-12-tmnt
Language: Assembly Z80
Description: RGB sprite engine for MSX2+ in screen 10.

Name: 1999-12-joywave
Language: Assembly Z80, C
Description: Streams a wave to a MSX turboR using joynet.

Name: 1999-12-joyrom
Language: Assembly Z80, C
Description: Loads a ROM in MSX using joynet.

Name: 2000-01-3dtictactoe
Language: Java
Description: 3D tic tac toe as a java applet. This game differs from classic
3d tic tac toe, since it's played on a board topologically equivalent to
a toroid.

Name: 2000-03-smsx
Language: Assembly Z80
Description: Reads a BrSMS savestate and renders the screenshot on a MSX.

Name: 2000-04-advram
Language: Assembly Z80
Description: Benchmark to evaluate three methods of video blitting on MSX2
(ADVRAM, direct V9958 access and V9958 commands).

Name: 2000-05-ameba
Language: C
Description: Artificial life simulator, to watch evolution in real time.

Name: 2000-05-tetrinet
Language: Assembly Z80
Description: Multiplayer Tetrinet implementation for MSX, using only 4kb.

Name: 2000-12-brmsxwin
Language: C++, Assembly Z80
Description: A port of BrMSX to Windows, focusing on user-friendly UI.

Name: 2001-08-mis
Language: C, Assembly Z80
Description: A variation of huffman encoding based on the MIS algorithm.

Name: 2001-11-shalom
Language: C, Assembly Z80
Description: Translation of the game Shalom from japanese to portuguese.
Includes a DSL to apply the translation patch. Don't open patch.txt unless
you like spoilers.

Name: 2002-02-bfcompiler
Language: BASIC
Description: A brainfuck compiler written in 3 lines of MSX BASIC.

Name: 2002-05-elite
Language: Assembly Z80
Description: 3D wireframe engine for MSX.

Name: 2002-06-terramex
Language: Assembly Z80
Description: A demo of what Terramex would look like in screen 8.

Name: 2002-06-terrain
Language: Matlab
Description: Terrain generation using Perlin noise.

Name: 2002-06-pigment
Language: Matlab
Description: Animal pigment skin generator using cellular automata.

Name: 2002-08-fudebium
Language: VHDL
Description: A Z80 clone in VHDL. Eventually I ditched this for T80 from
opencores.

Name: 2002-09-checkers
Language: C
Description: An engine of checkers where the computer plays against itself.

Name: 2002-10-numeric
Language: Assembly Z80
Description: Fast routines to perform square root and division by 9.

Name: 2002-12-jvm
Language: C
Description: Decodes the header of a Java .class file.

Name: 2003-01-asciiart
Language: Javascript
Description: ASCII Art written in javascript.

Name: 2003-02-canyon
Language: Assembly Z80
Description: Vertical parallax game engine for MSX.

Name: 2003-02-agi
Language: BASIC
Description: Converts graphics and sounds from AGI Sierra adventures to MSX2.

Name: 2003-04-superopt
Language: C
Description: Superoptimization, uses brute force to find the minimum assembly
code that is equivalent to a given C snippet. Generates Z80 assembly.

Name: 2003-08-pangram
Language: C
Description: Generates pangrams in portuguese.

Name: 2003-10-vis
Language: C
Description: Determines visibility on a maze.

Name: 2003-11-plasma
Language: Assembly x86
Description: Plasma demo using only 176 bytes.

Name: 2003-11-eternalflame
Language: Assembly Z80
Description: This is a remake of 1995-10-firedemo, this time running on MSX2
with a binary of only 256 bytes.

Name: 2003-11-star
Language: C
Description: Starfield demo.

Name: 2003-12-rbsocket
Language: C
Description: A web server written on the socket level.

Name: 2004-02-ramboplus
Language: Assembly Z80
Description: Patch to insert a new opening screen on the game Rambo. In order
to fit the new screen on the original 32kb of the game, I had to compress
the image using quadtrees and a mix of RLE and LZ.

Name: 2004-04-girlsgarden
Language: Assembly Z80
Description: Patch to convert the SG1000 game Girl's Garden to MSX. This is
mainly a SN76489 sound chip emulator on top of the AY-3-8912.

Name: 2004-05-nsub
Language: Assembly Z80
Description: Patch to convert the SG1000 game N-Sub to MSX. Improves on the
original game adding a new opening screen.

Name: 2004-06-sic
Language: Assembly Z80
Description: Patch to convert the Colecovision game Space Invaders Collection
to MSX.

Name: 2004-06-ttf
Language: Assembly Z80
Description: True type font renderer for MSX.

Name: 2004-07-zbasic
Language: C
Description: MSX BASIC detokenizer.

Name: 2004-08-boing
Language: Assembly Z80
Description: A remake of the Amiga demo Boing Ball to MSX1.

Name: 2004-08-modplayer
Language: Java
Description: MOD Player written in java.

Name: 2004-08-brmc1000
Language: Java
Description: An MC-1000 emulator written as a Java applet.

Name: 2004-12-particle
Language: C
Description: Particle demo, implements the same effect seen on the Star Wars
Episode 3 DVD menu.

Name: 2005-05-fpgapong
Language: VHDL
Description: A pong clone for the Digilent FPGA.

Name: 2005-06-gomoku
Language: Java
Description: Gomoku applet.

Name: 2005-09-gibi
Language: C
Description: This was supposed to grow to a .cbr reader for Nintendo DS,
but in the end I found the ds screen resolution to be too low for this.

Name: 2005-11-graphosds
Language: C
Description: An MSX graphics editor running on the Nintendo DS.

Name: 2006-03-hikago
Language: Java
Description: Translation of the GBA game Hikaru no Go from japanese to english.
I still want to get back to this project someday.

Name: 2006-08-nurikabe
Language: C++
Description: Nurikabe solver using human-based reasoning.

Name: 2006-12-bignumfac
Language: C++
Description: Bignum factorial using template metaprogramming.

Name: 2007-12-spojdashboard
Language: Python
Description: A dashboard displaying info about spoj users.

Name: 2008-03-roman
Language: C
Description: Roman numbers using preprocessor metaprogramming.

Name: 2008-04-mandelbrot
Language: Actionscript, Python, Javascript, Bytecode JVM
Description: The Mandelbrot fractal implemented under 512 bytes in many
languages.

Name: 2008-04-sudoku
Language: C++
Description: Solver for irregular sudokus using exact cover and dancing links.

Name: 2008-04-power10
Language: C++
Description: Calculates log10(x) in O(log log n) using template
metaprogramming.

Name: 2008-05-optimumpower
Language: C++
Description: Find the optimum sequence of multiplications to calculate
integer powers, using addition chains.

Name: 2008-05-montecarlo
Language: C++
Description: Password reconstruction using monte carlo and exact cover.

Name: 2008-05-turingoneliner
Language: Python
Description: Compiles brainfuck to a python one liner.

Name: 2008-06-nthprime
Language: Python
Description: Calculates the nth prime using a formula based on Wilson's
theorem.

Name: 2008-06-randomprime
Language: C++
Description: Monte carlo simulation for the expected value of a trial and error
random prime number algorithm.

Name: 2008-06-randompi
Language: Python
Description: Calculates pi using a monte carlo approximation.

Name: 2008-06-miles
Language: Python
Description: Convert miles to kilometers using fibonacci shifts.

Name: 2008-10-bookperspective
Language: Python
Description: Applies perspective correction on photos of book covers.

Name: 2009-01-capullo
Language: Python
Description: Perspective drawing using pyOpenGL.

Name: 2009-03-rakell
Language: Haskell
Description: Ray-tracer in Haskell.

Name: 2009-03-spectrum
Language: Java, GWT
Description: Wavelength spectrum editor using GWT.

Name: 2009-06-cylon
Language: VHDL
Description: Cylon visor for the Digilent FPGA board.

Name: 2010-01-orbits
Language: Python
Description: Draw planetary orbits when Newton's gravitation law is not
inversely quadratic.

Name: 2010-02-pairprogramming
Language: C
Description: Single-person pair programming.

Name: 2010-03-cyclic
Language: Python
Description: Find cyclic numbers.

Name: 2010-04-zenoreduce
Language: Python
Description: Zeno machine emulator.

Name: 2010-07-bozofactoring
Language: Python
Description: Find prime factors of a number using the worst known method.

Name: 2010-10-archytas
Language: Povray
Description: Draw Archytas' solution to the Delian problem using povray.

Name: 2010-11-birthday
Language: Python
Description: Compare approximation to the birthday paradox.

Name: 2011-01-geom
Language: C++
Description: Generate constructible numbers using forward chaining.

Name: 2011-03-randompi
Language: BASIC
Description: Calculates pi using a monte carlo approximation, in ZX-81 BASIC.

Name: 2011-05-torto
Language: Prolog
Description: Solution of the Torto Reverso puzzle using prolog.

Name: 2011-05-bdd
Language: C++
Description: An implementation of BDD (binary decision diagram).

Name: 2011-07-constexpr
Language: C++0x, Python
Description: An analysis of metaprogramming techniques using C++0x.

Name: 2011-08-doppelstern
Language: C++
Description: Solves the Doppelstern puzzle using exact cover and dancing links.

Name: 2011-10-gotour
Language: Go
Description: Solutions for the exercises on go-tour.appspot.com.

Name: 2011-10-exactcover
Language: Go
Description: A parallel implementation of the exact cover written in Go.

Name: 2011-11-aiclass
Language: C++, Python
Description: Exercises from the 2011 ai-class.com course.

Name: 2011-12-mlclass
Language: Matlab
Description: Exercises from the 2011 ml-class.com course.

Name: 2012-02-spojlib
Language: C++
Description: Generic C++ libraries to help solving spoj problems.

Name: 2012-03-html5game
Language: Javascript
Description: Small game in javascript to demonstrate HTML5 features.

Name: 2012-04-spojsamples
Language: C++
Description: SPOJ tutorials solved using spojlib.

Name: 2012-06-noise
Language: Matlab
Description: Scripts to compare the noise generated by a real MSX and an emulator.

Name: 2012-07-tdcjump
Language: Javascript
Description: HTML5 showcase demo for a tech talk on TDC 2012 in Sao Paulo.

Name: 2012-12-spojtools
Language: Python
Description: Scripts to automate SPOJ using the command line.

Name: 2013-01-facegif
Language: Python
Description: Face recognition using opencv and python.

Name: 2013-01-pigame
Language: Python
Description: Try to find a period on the sequence of integer multiples of pi.

Name: 2013-01-govelha
Language: Go
Description: Opens the entire game tree of a tic-tac-toe game.

Name: 2013-01-facebook
Language: C++, Python
Description: Solutions for problems on the Facebook Hacker Cup 2013.

Name: 2013-04-codejam
Language: Python
Description: Solutions for problems on the Google Code Jam 2013.

Name: 2013-04-analytic
Language: Python
Description: Exercises and experiments from Sedgewick's Combinatoric
Analytics course.

Name: 2013-07-multirm
Language: Python
Description: Traverses a directory tree eliminating repeated files.

Name: 2013-07-voronoi
Language: C++
Description: Generates a Pointillism using iterated Voronoi diagrams.

Name: 2013-08-nurikabe
Language: C++
Description: Nurikabe solver using MIP.

Name: 2014-01-webserver
Language: C++, Go
Description: Simple web server in idiomatic C++11 and Go.

Name: 2014-02-partition
Language: C++
Description: Graph partition using MIP.

Name: 2014-02-randomwalk
Language: Python
Description: Simulation of a one-dimensional random walk.

Name: 2014-03-akari
Language: C++
Description: Akari solver using MIP.

Name: 2014-03-germantank
Language: Python
Description: Simulation of the german tank problem.

Name: 2014-11-grabfm
Language: TCL
Description: Openmsx script to convert fm basic files to the vgm format.

name: 2014-11-0hh1
language: C++
description: Solver for the 0hh1 puzzle using mip.

name: 2015-01-getram
language: python
description: Extract the ram contents from an openMSX save state.

name: 2015-04-nephew
language: python
description: Estimate how much of my genes are present in my nephews. 

name: 2016-04-codejam
language: C++, python
description: Solution for google code jam 2016.

name: 2016-05-msxpi
language: Assembly Z80
description: Calculates 1000 digits of pi using the spigot algorithm.

name: 2016-07-spojsubmit
language: Python
description: Script to submit solutions to spoj through the new interface.

name: 2016-07-bozosearch
language: Python
description: Monte Carlo simulation of the Binary Bozo Search.

name: 2016-07-totorial
language: Python
description: Monte Carlo simulation for the Analytic Combinatorics totorial.

name: 2016-09-pokemongo
language: Python
description: Monte Carlo simulation to estimate time required to collect all
pokemons in Pokemon GO.

name: 2017-05-magicsquare
language: C++
description: Solves the magic square with EasySCIP.

name: 2017-07-calculator
language: Python
description: Builds a two-digit calculation using only HTML.

name: 2018-03-countpaths
language: Mathematica
description: Count the number of paths in a graph, using three different algorithms.

name: 2018-10-serialize
language: C++
description: Ideas for automatic serialization in C++.

name: 2019-02-gplus
language: Python
description: Download missing photos from Google+ Takeout.

name: 2019-02-ocr
language: Bash
description: Convert a .ps file to .txt by using gs and tesseract.

name: 2019-04-googledocs
language: Javascript
description: Add a menu option on Google Docs to highlight text with a code style.

name: 2019-09-blogmigration
language: Python
description: Parse a wordpress xml to extract individual blog posts and download images.

name: 2020-03-birthpalin
language: Python
description: Check how many birthdays are palindrome in a given base.

name: 2020-09-timeturner
language: OpenSCAD
description: Add random stars to a 3D model of Hermione's Time Turner, suited to 3D printing.

name: 2022-04-getloot
language: Python
description: Download all purchased 3D models from the Loot Studios website.

name: 2023-04-hdrecover
language: C++
description: Recover all jpeg images from an hdd image.