Powered by SGDK
Build instructions: docs/BUILD.md.
Os smoke tests mostram o BlastEm no monitor secundário sem retirar o foco.
Use python scripts/smoke_test.py --hidden para mantê-lo oculto; sem monitor secundário,
a execução fica oculta automaticamente.
Pipeline de extração e importação de sprites: docs/SPRITES.md.
Histórico de correções, melhorias e adições: CHANGELOG.md.
O Landing Site usa a arte nova de Crateria: paredes e vegetação restauradas,
céu baseado no original, quatro portas azuis fechadas, base de blocos e a nave.
O scroll do fundo foi corrigido para evitar redraw completo e travadas nas emendas.
As portas azuis abrem com um tiro e só deixam passar depois de terminar a abertura; a porta
do outro lado já fica aberta quando Samus chega. A tampa usa os cinco quadros originais da
abertura. Blocos não quebram e a nave ainda
não tem colisão, save ou recarga. O ponto inicial da Samus foi mantido; caminhe
para a direita até o centro da sala para ver a nave. Há adaptação de cores às
quatro paletas do Mega Drive. Regeneração e capturas da ROM em docs/BUILD.md.
A porta leste superior do Landing Site leva à Crateria 2. A leste inferior ainda
não tem sala de destino: depois de abri-la e chegar à borda, o jogo mostra
ROOM NOT BUILT YET; afastar-se da porta remove o aviso.
A barra de status fica no alto da tela, como no Super Metroid: tanques de energia,
ENERGY 99, o ícone do míssil com o contador e, quando houver supers, o ícone deles. O ícone
da arma escolhida fica verde. A barra cobre os 24 px do topo e fica na frente dos sprites; a
terceira linha mostra os avisos das portas. Energia e dano entram na 5.3, e o mini-mapa ainda
não existe.
A Samus usa animações originais de movimento, pulo, agachar, bola, mira e virada. A virada tem três quadros, tanto no chão quanto no ar, preservando a física do movimento. O pulo de parede mantém a sequência de chute e giro até pousar ou interromper o giro, com tempos visuais baseados na referência original arquivada.
Small project with the intention of porting Super Metroid for Mega Drive / Sega Genesis.
Update: simple tile collision system implemented.
Controles da build atual (Mega Drive): direcional para andar, B segurado
para correr, C para pular (soltar C na subida para a subida na hora, como no Super Metroid; não dá para pular depois de sair de uma borda), C durante o pulo
giratório, encostado numa parede e com o direcional apontando para longe dela, faz pulo de parede, e A para o Power Beam básico. START troca a arma: Power Beam,
míssil e super míssil (os compartimentos vazios são pulados). No teclado
do Fusion configurado nesta máquina: A = tecla A, B = tecla S, C = tecla D.
No controle de 6 botões, a mira de L/R do SNES fica em Z (baixo) e Y (cima); X fica livre para
cancelar item. Nas portas conectadas, aproxime-se e use A para atirar na porta; atravesse
quando a animação terminar. O jogo mostra esse comando ao chegar perto. Segure Y para mirar na diagonal acima ou Z para a diagonal abaixo, inclusive
parado e agachado; soltar retorna à mira do direcional. Y+Z juntos deixam a mira no direcional. Para jogar com um controle Xbox no layout do SNES, veja o
remap do RetroArch descrito em docs/BUILD.md.
Segure cima para mirar acima; cima + esquerda/direita mira na diagonal, parado ou andando, e a pose
de mira aparece mesmo sem atirar. Baixo + esquerda/direita anda mirando na diagonal abaixo. No ar,
baixo mira para baixo. Tocar A dispara; segurar repete, como o Power Beam sem Charge medido no original. O tiro sai da boca do canhão da pose,
usa o sprite original nas oito direções e mostra um impacto animado ao atingir paredes.
Moonwalk frontal está ligado: no chão, segure A e aperte para trás para andar de costas
a 0,5 px por tick, mantendo o canhão para a frente. Solte A para virar. Variantes
diagonais e a transição própria de salto do moonwalk ainda estão pendentes.
↓ no chão agacha, com hitbox e pose menores; a Samus continua agachada ao soltar,
independentemente do tempo segurado. Para levantar, dê um novo toque de ↑, ande ou pule,
desde que haja espaço.
Dois toques de ↓ em até 1/3 de segundo, sem atirar, entram em bola, no chão ou no ar (hitbox de 10×14 px).
Agachada, um novo toque de ↓ também entra em bola, sem pressa. Um toque no ar não faz nada. A bola não
atira e só gira enquanto se move. ↑ ou C desfaz a bola sem dar impulso de pulo;
no chão, volta para agachada se houver espaço. Outro toque de ↑ levanta. Segurar ↑
não conta como um segundo toque; em túneis que só comportam a bola, ela permanece bola.
As hitboxes seguem as dimensões medidas no original: 10×42 px em pé, 10×38 no pulo normal, 10×24 no giro e 10×32 agachada. A caixa só cresce quando há espaço.
A caminhada acelera 0,1875 px/tick por tick até 2,75 px/tick (11 ticks); soltar o direcional desliza
a 0,5 px/tick por tick e virar leva 7 ticks. A corrida acrescenta 0,0625 px/tick a cada tick
no chão, até +2 após 32 ticks (4,75 px/tick no total). O salto conserva o bônus;
parar, inverter, bater numa parede ou soltar B no chão reinicia a corrida.
No ar o pulo normal anda a 1,25 px/tick e para ao soltar o direcional; o giro anda a 1,375 e mantém a
inércia; a queda de uma borda anda a 1 px/tick; a bola rola a 3,25. Os valores foram medidos no Super
Metroid original no Mesen 2 (docs/FISICA.md).
Referência: disassembly de Super Metroid, banco 90,
rotina Handle_Samus_XExtraRunSpeed e tabela SamusXSpeedTable_Normal.
O Power Beam não consome munição, não carrega e mantém até três projéteis.
Sua velocidade base é 4 px/tick na horizontal/vertical e cerca de 2,668 por eixo
diagonal, acelerando 1/16 por eixo ativo a cada tick, como nas tabelas originais.
Há colisão com paredes e rampas, descarte ao sair da tela e o som de tiro original.
Mísseis e super mísseis entram como armas selecionáveis por START, com a arte original de 16×16
nas oito direções e paleta própria (a PAL3 do beam é trocada enquanto a arma está ativa). A ROM
começa com 5 mísseis e nenhum super, provisoriamente até os itens coletáveis. Um míssil abre porta azul, cinco (ou um super) abrem vermelha, e verde só aceita super.
A troca de arma espera o projétil e o impacto saírem da tela para não misturar as paletas, e o
impacto do míssil ainda usa o quadro do beam, sem arte própria nesta etapa.
Os efeitos sonoros do Super Metroid ficam em res/sound/Sound-Effects/; o tiro, o giro (em loop
enquanto a Samus gira) e o pouso já tocam. A música do Landing Site ("Arrival on Crateria") toca como
PCM, convertida dos MP3 de res/sound/musics/ por scripts/convert_music.py (ver a 8.1 em docs/PLANO.md).
As fases atuais ainda não têm entidades de inimigos nem blocos destrutíveis; as portas azuis
já abrem com o tiro. O valor de dano está preparado no projétil para a integração futura.
O sprite da Samus usa as poses originais do jogo (parada, andando, pulando, girando, agachando, em bola, mirando e atirando, cada uma com desenho próprio para a esquerda). Ver a etapa 3.2 em docs/PLANO.md.
O salto giratório só começa quando C é pressionado enquanto Samus já estava em movimento (andando ou deslizando). Direcionar depois de um salto parado move no ar sem iniciar o giro. Atirar no ar interrompe o giro e mostra a pose correspondente à direção do tiro.
Compilação com SGDK 2.11, Java e Python 3, a partir da raiz do projeto:
./scripts/build.ps1 -Sgdk D:/apps/sgdk -Java D:/apps/jre/bin/java.exeA ROM final é build.bin, com uma cópia em out/rom.bin. Os intermediários ficam em out/,
a pasta padrão do SGDK (a mesma do make -f %GDK%\makefile.gen, ver docs/BUILD.md), que não é versionada.
Para ver posição, velocidade, chão e tiles sob os pés na tela, gere a variante de
depuração. Ela vai para tests/out/variant.bin e não substitui build.bin:
./scripts/build.ps1 -Sgdk D:/apps/sgdk -Java D:/apps/jre/bin/java.exe -Define '-DMM_DEBUG_OVERLAY=1'O núcleo em src/core não depende do SGDK; src/game.c integra entrada,
renderização e áudio. Os projéteis usam um pool fixo, sem alocar durante o jogo.
Next things i plan to make.
- Crateria first scenario
- Sprite Animations
- Platform Collisions
- Slopes Collisions
Feel free to fork and contribute or just using for study this lil snippet code.