Skip to content

Releases: bmbelo87/ddr-1st-recomp

0.4.0 — Autoplay

Choose a tag to compare

@bmbelo87 bmbelo87 released this 15 Sep 18:57

One feature this time, but it changes who the project is for. Until now every
mod here made the game more readable or more faithful — better for someone
already playing it. This one lets the game play itself.

As always, no game data ships here. The zip is the setup wizard plus this
project's sources; it recompiles against your own legal disc on your machine.


Autoplay

Turn it on and a song plays itself to a full PERFECT combo. Every step is hit
exactly on time, from the first to the last, and the score, the combo and the
dance all behave as though someone very good were standing on the pad.

It is useful for more than showing off. You can watch a chart you cannot
clear, see how a song is actually meant to be danced, record footage without
depending on your own execution, or just leave the game running.

Your pad still works while it is on. Autoplay only acts on a step you did
not hit yourself — step on something and you are judged first, normally,
including the miss if you are late. So you can play over the top of it and let
it cover whatever you cannot reach, which turns out to be a decent way to
learn a hard section.

How it works, because the answer is a nice one

The game does not check your steps against the pad at all. It keeps two
numbers for each arrow — the instant the step is due, and the instant it was
stepped on — and subtracts one from the other. If the difference is within two
frames you get PERFECT; within five or six, GREAT; and so on outward.

So Autoplay synthesises no input, reads no chart and simulates nothing. It
waits for a step to come due and writes the step's own instant into the other
field. The difference is zero, and the game hands out its own PERFECT, scores
it and builds the combo through code that is not patched anywhere. It is a few
lines.

Finding that took a long detour through the attract-mode demo, on the
assumption that whatever drives the dancing during the GAME OVER screen was
the thing worth copying. It was not: that demo judges badly, two GREATs and
four GOODs and never a PERFECT, and its counters move once every seven
seconds. The real answer was sitting inside a function this project had
already been patching for the Judgement Window mod since 0.3.0.

Also in this release

  • Another probe for the toolkit: a lane dump that prints the four arrow slots
    — both timestamps, the note's arrow mask and its flags — every time any of
    them changes. It is what proved the mask byte describes the note rather than
    the player, and it is in the sources for anyone carrying on.

Carried over from 0.3.0: the six translated screens in English and Brazilian
Portuguese, widescreen 16:9, the music-offset and judgement-window dials, pad
and controller together on Player 1, and the corrected menu backdrop. And from
0.2.0: BGA Dark, 60 FPS, the extended mode select with EDIT, INFORMATION and
EXIT GAME, the unlocks, No Dancer and the background dimmer.

Installing

Download the zip, run the wizard, point it at your own Dance Dance
Revolution (Japan), SLPM-86222
disc. It generates and compiles on your
machine, so no game code ever leaves yours. Expect ~3 GB of disk and a long
first build.

Every mod is off by default except the mode-select ones — Autoplay included.
Turn on what you want in the mod menu; Autoplay is under Gameplay.



0.4.0 — Autoplay

Uma novidade só desta vez, mas ela muda para quem o projeto serve. Até agora
todo mod aqui deixava o jogo mais legível ou mais fiel — melhor para quem já
joga. Este deixa o jogo jogar sozinho.

Como sempre, nenhum dado do jogo é distribuído aqui. O zip é o assistente
de instalação mais os fontes do projeto; ele recompila contra o seu próprio
disco legal, na sua máquina.


Autoplay

Ligue e a música se joga sozinha até o full combo de PERFECT. Todo passo cai
exatamente no tempo, do primeiro ao último, e a pontuação, o combo e a dança
se comportam como se alguém muito bom estivesse em cima do tapete.

Serve para mais do que exibição. Dá para assistir a uma coreografia que você
não passa, ver como a música deveria ser dançada de verdade, gravar vídeo sem
depender da sua execução, ou simplesmente deixar rodando.

Seu tapete continua funcionando com ele ligado. O Autoplay só age no passo
que você não pisou — se você pisar, quem é julgado é você, normalmente,
inclusive o miss se estiver atrasado. Dá para jogar por cima e deixar que ele
cubra o que você não alcança, o que acaba sendo um jeito decente de aprender
um trecho difícil.

Como funciona, porque a resposta é bonita

O jogo não confere seus passos contra o tapete. Ele guarda dois números para
cada seta — o instante em que o passo vence e o instante em que foi pisado — e
subtrai um do outro. Se a diferença couber em dois quadros, é PERFECT; em
cinco ou seis, GREAT; e assim por diante para fora.

Então o Autoplay não sintetiza entrada, não lê coreografia e não simula nada.
Ele espera o passo vencer e escreve o instante do próprio passo no outro
campo. A diferença dá zero, e o jogo entrega o PERFECT dele mesmo, pontua e
monta o combo por um caminho que não é modificado em lugar nenhum. São umas
poucas linhas.

Chegar nisso custou um desvio longo pelo demo do attract, na suposição de que
o que move a dança durante a tela de GAME OVER fosse o que valia copiar. Não
era: aquele demo julga mal, dois GREAT e quatro GOOD e nenhum PERFECT, e os
contadores dele se mexem uma vez a cada sete segundos. A resposta estava
dentro de uma função que este projeto já modificava para o mod Judgement
Window desde o 0.3.0.

Também nesta versão

  • Mais uma sonda para a caixa de ferramentas: um despejo que imprime os quatro
    slots de seta — os dois instantes, a máscara de setas da nota e as flags —
    toda vez que qualquer um deles muda. Foi ela que provou que o byte da
    máscara descreve a nota e não o jogador, e está nos fontes para quem quiser
    continuar.

Vindo do 0.3.0: as seis telas traduzidas em inglês e português do Brasil, o
widescreen 16:9, os ajustes de atraso da música e de janela de acerto, tapete
e controle juntos no Jogador 1, e o fundo do menu corrigido. E do 0.2.0: BGA
Dark, 60 FPS, o mode select estendido com EDIT, INFORMATION e EXIT GAME, os
desbloqueios, o No Dancer e o escurecedor de fundo.

Instalação

Baixe o zip, rode o assistente e aponte para o seu próprio disco de Dance
Dance Revolution (Japan), SLPM-86222
. Ele gera e compila na sua máquina, de
modo que nenhum código do jogo sai dela. Reserve uns 3 GB de disco e paciência
para a primeira compilação.

Todos os mods vêm desligados por padrão, com exceção dos de mode select — o
Autoplay inclusive. Ligue o que quiser no menu de mods; o Autoplay fica em
Gameplay.

0.3.0 — Widescreen, translated screens, and timing you can tune

Choose a tag to compare

@bmbelo87 bmbelo87 released this 15 Sep 13:35

This release is about two things: the game speaking a language you read, and fitting the screen you actually own.

As always, no game data ships here. The zip is the setup wizard plus this project's sources; it recompiles against your own legal disc on your machine.

Translated screens — English and Brazilian Portuguese

None of the Japanese on screen is text. It is artwork uploaded into video memory, which is why no amount of searching the executable for strings ever found it. Each line had to be located in VRAM, redrawn, and put back through the same CPU-to-video-memory transfer the game itself uses — nothing is patched, and no image file travels with the game.

Six screens are covered:

The health-and-safety CAUTION screen the game opens with
All eight memory-card messages — checking, loading, saving, overwrite prompts and the warning not to remove the card
The green safety band at the foot of the main menu
The pad hints at the foot of PLAY MODE SELECT and MUSIC SELECT
The mode descriptions for EASY, NORMAL and HARD

Pick the language in the mod's options. A picture the mod does not know stays Japanese rather than being replaced by the wrong line: what triggers a replacement is the picture's own pixels, not which screen is showing — the same video memory is reused between screens, so a page is only repainted when it really is holding the line we mean.

Widescreen 16:9

The 3D stage opens to 16:9 instead of being cropped or stretched. This goes through the framework's widescreen path rather than scaling the picture: the projection is squashed horizontally and the frame presented wide, so what you get is more field of view, not a zoomed image. The arrows, the life bar and the text are corrected back to their own proportions.

The aspect is chosen before the window is created, so it takes effect from the boot screen and cannot be switched mid-session.

Timing you can tune

Two separate problems, two dials.

Music offset. The chart starts counting when the CD reports that playback began. A real drive needs a moment to settle before the first audio frame is audible, and the game was written around that pause. An emulated drive starts instantly, so the music runs slightly ahead of the chart and your steps land early. The Timing Calibration mod puts that settle back. The right value is personal — every screen, keyboard and pad adds its own delay.

Judgement window. The game measures timing error in frames, not in milliseconds. That means running gameplay at 60 FPS halves every window in real time, and PERFECT becomes twice as hard as Konami made it.

The 60 FPS mod now rescales all three windows by itself, so this is fixed whether or not you touch anything. The Judgement Window mod is there for choosing the number by hand, and it overrides the automatic value. It also offers a shift rather than a widening — if your steps are graded the same way consistently early or late, that is a bias to correct, not a window to open.

A dance pad and a controller, together

A dance pad has four buttons and no way to confirm anything, so it cannot navigate a menu on its own. A pad and a controller now drive Player 1 together: press what you like on either one.

Also in this release
The main menu's dark backdrop now actually darkens. The full-screen rectangle the game lays over the scene blends in add mode, so painting it black changed nothing — it now uses the hardware's subtract mode, and the percentage means what it says.
A set of probes for finding artwork in video memory: primitive, TIM and texture dumps, a whole-VRAM snapshot, a region extractor that decodes with a real palette, plus a value hunt, a pointer finder and a memory peek. These are how everything above was found, and they are in the sources for anyone who wants to carry on.

Carried over from 0.2.0: BGA Dark, 60 FPS, the extended mode select with EDIT, INFORMATION and EXIT GAME, the unlocks, No Dancer and the background dimmer.

Installing

Download the zip, run the wizard, point it at your own Dance Dance Revolution (Japan), SLPM-86222 disc. It generates and compiles on your machine, so no game code ever leaves yours. Expect ~3 GB of disk and a long first build.

Every mod above is off by default except the mode-select ones. Turn on what you want in the mod menu.

0.3.0 — Widescreen, telas traduzidas e tempo ajustável

Esta versão trata de duas coisas: o jogo falar uma língua que você lê, e caber na tela que você de fato tem.

Como sempre, nenhum dado do jogo é distribuído aqui. O zip é o assistente de instalação mais os fontes do projeto; ele recompila contra o seu próprio disco legal, na sua máquina.

Telas traduzidas — inglês e português do Brasil

Nada do japonês que aparece na tela é texto. É arte carregada na memória de vídeo, e é por isso que procurar cadeias de caracteres no executável nunca achou nada. Cada linha teve de ser localizada na VRAM, redesenhada e devolvida pela mesma transferência de CPU para memória de vídeo que o próprio jogo usa — nada é modificado no disco, e nenhum arquivo de imagem viaja junto com o jogo.

São seis telas:

A tela de advertência CAUTION, com que o jogo abre
As oito mensagens do memory card — verificando, carregando, salvando, os pedidos de confirmação e o aviso para não remover o cartão
A faixa verde de segurança no pé do menu principal
As dicas do tapete no pé do PLAY MODE SELECT e do MUSIC SELECT
As descrições dos modos EASY, NORMAL e HARD

A língua se escolhe nas opções do mod. Uma figura que o mod não conhece continua em japonês em vez de virar a linha errada: o que dispara a substituição são os pixels da própria figura, não qual tela está aberta — a mesma memória de vídeo é reaproveitada entre telas, então uma página só é repintada quando realmente está com a linha que interessa.

Widescreen 16:9

O palco 3D se abre em 16:9 em vez de ser cortado ou esticado. Isso passa pelo caminho de widescreen do próprio framework, e não por uma escala da imagem: a projeção é comprimida na horizontal e o quadro é apresentado largo, de modo que o que você ganha é campo de visão, não uma imagem ampliada. As setas, a barra de vida e os textos são corrigidos de volta às suas proporções.

A proporção é escolhida antes de a janela ser criada, então vale desde a tela de abertura e não pode ser trocada no meio da sessão.

Tempo ajustável

Dois problemas distintos, dois botões.

Atraso da música. A coreografia começa a contar quando o CD avisa que a reprodução começou. Um leitor de verdade precisa de um instante para se estabilizar antes que o primeiro quadro de áudio seja audível, e o jogo foi escrito em torno dessa pausa. Um leitor emulado começa na hora, então a música corre um pouco à frente da coreografia e seus passos caem adiantados. O mod Timing Calibration devolve essa pausa. O valor certo é pessoal — cada tela, teclado e tapete acrescenta o seu próprio atraso.

Janela de acerto. O jogo mede o erro de tempo em quadros, não em milissegundos. Isso quer dizer que jogar a 60 FPS corta pela metade todas as janelas em tempo real, e o PERFECT fica duas vezes mais difícil do que a Konami fez.

O mod de 60 FPS agora reescala as três janelas sozinho, então isso está resolvido mesmo que você não mexa em nada. O mod Judgement Window existe para escolher o número na mão, e ele tem prioridade sobre o valor automático. Ele também oferece um deslocamento em vez de um alargamento — se seus passos são julgados sempre do mesmo lado, adiantados ou atrasados, isso é um viés a corrigir, não uma janela a abrir.

Um tapete e um controle, juntos

Um tapete de dança tem quatro botões e nenhuma forma de confirmar nada, então não navega um menu sozinho. Agora tapete e controle comandam o Jogador 1 juntos: aperte o que quiser em qualquer um dos dois.

Também nesta versão
O fundo escuro do menu principal finalmente escurece. O retângulo de tela cheia que o jogo deita sobre a cena mistura em modo aditivo, então pintá-lo de preto não mudava nada — agora ele usa o modo de subtração do hardware, e a porcentagem quer dizer o que diz.
Um conjunto de sondas para achar arte na memória de vídeo: despejo de primitivas, de TIMs e de texturas, um mapa da VRAM inteira, um extrator de região que decodifica com a paleta de verdade, além de um caçador de valores, um localizador de ponteiros e um leitor de memória. Foi assim que tudo acima foi encontrado, e estão nos fontes para quem quiser continuar.

Vindo do 0.2.0: BGA Dark, 60 FPS, o mode select estendido com EDIT, INFORMATION e EXIT GAME, os desbloqueios, o No Dancer e o escurecedor de fundo.

Instalação

Baixe o zip, rode o assistente e aponte para o seu próprio disco de Dance Dance Revolution (Japan), SLPM-86222. Ele gera e compila na sua máquina, de modo que nenhum código do jogo sai dela. Reserve uns 3 GB de disco e paciência para a primeira compilação.

Todos os mods acima vêm desligados por padrão, com exceção dos de mode select. Ligue o que quiser no menu de mods.

v0.2.0 — 60 FPS gameplay, BGA Dark

Choose a tag to compare

@bmbelo87 bmbelo87 released this 11 Sep 02:05

English

The song screen in DDR 1st Mix has always run at 30 frames per second, while
the rest of the game runs at 60. That was never a hardware limit: the frame
loop asks VSync for two fields instead of one, and the value comes from a
single byte the song screens write. This release can hold that byte at the
60 Hz value, and the whole scene — arrows, dancer, stage — runs at double the
rate. Timing is unaffected: the chart follows the music, not the frame count.

What's new

  • 60 FPS Gameplay — gameplay at 60 frames per second, with the full 3D
    scene drawn.
  • BGA Dark — darkens the 3D objects of the song, from 100% down to solid
    black, leaving the LifeBar, Combo, Judge, arrows, Sequence Zone and Score
    untouched. A BGA-off look without opening a hole in the scene.

Alongside what was already here: the full-text main menu with EXIT GAME, All
Unlock, No Dancer, and the fixed-background dimmer. Every feature is off by
default — turn nothing on and you get the stock game.

None of these mods patch the game's code. Each one acts on memory in the frame
it runs, so enabling and disabling is reversible and nothing reaches the memory
card.

How to use it

This is not a playable download, and cannot be: the compiled executable
carries ~150 MB of C translated from Konami's boot executable. What ships here
is the wizard plus this project's own source.

  1. Download and extract the zip.
  2. Run psxrecomp-game.exe.
  3. Point it at your own legal dump of Dance Dance Revolution (SLPM-86222).
  4. The wizard recompiles and builds on your machine — a few minutes the first
    time.
  5. Enable whichever mods you want on the mods screen, and play.

No game code leaves your machine, and none arrives with this download.

If you want to add improvements or understand how each mod works, the
repository is the place — the commits explain the reasoning behind every
address.


Português

A tela de música do DDR 1st Mix sempre rodou a 30 quadros por segundo — o resto
do jogo roda a 60. Não era limitação de hardware: o loop de quadro pede dois
campos ao VSync em vez de um, e o valor vem de um único byte que as telas de
jogo escrevem. Esta versão pode segurar esse byte no valor de 60 Hz, e a cena
inteira — setas, dançarino, palco — roda dobrada. O ritmo da música não muda:
o chart segue o áudio, não a contagem de quadros.

Novidades

  • 60 FPS Gameplay — a gameplay a 60 quadros por segundo, com a cena 3D
    completa.
  • BGA Dark — escurece os objetos 3D da música, de 100% até preto total, sem
    tocar na LifeBar, no Combo, no Judge, nas setas, na Sequence Zone nem no
    Score. Dá o visual de BGA off sem abrir buraco na cena.

Junto com o que já vinha: menu principal completo em texto com EXIT GAME, All
Unlock, No Dancer e o dimmer do fundo fixo. Todos desligados por padrão — sem
ligar nada, o jogo é o original.

Nenhum desses mods altera o código do jogo. Cada um age sobre a memória no
quadro em que roda, então ligar e desligar é reversível e nada vai parar no
memory card.

Como usar

Isto não é um download jogável, e não pode ser: o executável compilado
carrega ~150 MB de C traduzido do executável da Konami. O que vem aqui é o
assistente mais o código deste projeto.

  1. Baixe e extraia o zip.
  2. Abra o psxrecomp-game.exe.
  3. Aponte para o seu dump legal de Dance Dance Revolution (SLPM-86222).
  4. O assistente recompila e compila na sua máquina — leva alguns minutos na
    primeira vez.
  5. Ligue os mods que quiser na tela de mods e jogue.

Nenhum código do jogo sai da sua máquina, e nenhum vem na sua.

Quem quiser mexer, adicionar melhorias ou entender como cada mod funciona: o
repositório é o lugar, e os commits explicam o porquê de cada

v0.1.0 — Dance Dance Revolution 1st Mix Recompiled

Choose a tag to compare

@bmbelo87 bmbelo87 released this 10 Sep 22:02

First release. Not an emulator: the PlayStation code is translated to C and
compiled into a native executable that your CPU runs directly.

This download contains no game code and no game data. Not the executable,
not the audio, not the artwork. You supply your own legal disc dump, and
everything is built on your machine from it.

How to use

  1. Download and extract ddr1st-0.1.0-windows-x64.zip anywhere.
  2. Run Dance_Dance_Revolution_1st_Mix_Recompiled.exe. Nothing needs
    installing first — the setup brings its own compiler, or downloads one.
  3. Point it at your own Dance Dance Revolution (Japan), SLPM-86222 dump —
    the .cue plus all 40 .bin tracks.
    3.1. You need the OpenBios.bin, you can find it in psxrecomp repo.
  4. Follow the wizard.

The first run takes several minutes. It translates the game to C and
compiles it. A console window will sit there working — let it finish. Every
launch after that starts immediately.

Your dump is verified before anything else: a different revision is refused
rather than silently building something broken.

What works

Full gameplay, all 40 tracks, arrows in sync with the music, and the 3D dancer.

The mode-select menu also carries EDIT and INFORMATION — two entries
that shipped on the disc complete but were left out of the navigation — plus an
EXIT GAME item.

Known issues

A hard freeze during songs and the credits is contained, not cured: the
game hits an invalid animation pointer, which used to end in an ordering-table
cycle that hung the renderer forever. The cause is understood end to end and
documented in BACKLOG.md; what ships enforces the invariant that was being
violated, and a full session runs clean.

Windows x64 only for now. Two players supported.

Requirements

A legally owned copy. Nothing here works without your own dump.

Dance Dance Revolution is a trademark of Konami; this project is unaffiliated
with and unendorsed by them. Built on PSXRecomp.