Skip to content

TheBlad768/Sonic-Clean-Engine-S.C.E.-Extended-

Repository files navigation

SONIC-CLEAN-ENGINE-S.C.E.-EXTENDED-

Title

GitHub Release GitHub repo size GitHub Repo stars GitHub watchers GitHub forks GitHub commit activity GitHub Downloads (all assets, all releases)

Download

Disclaimer

Source code with the returned the Sonic & Tails, Tails and Knuckles characters, Life/Continue count, Continue screen, Super/Hyper transformation.

Cleaned up and optimized the source code of Sonic 3 & Knuckles. Free use. You use it at your own risk. All code is provided “as is”. This source code uses software from other authors. Check their licenses before using it. You assume any and all responsibility for using this content responsibly. I claims no responsibility or warranty. Commercial usage is expressly prohibited.

Additional links

If you are interested in the source code with the Z80 Sound Driver:

Main source code:

Sonic 1 in Sonic 3 & Knuckles (S.C.E. Version):

How to build the ROM

To build this, use build.bat if you're a Windows user, or build.sh if you're a Linux user. The built ROM will be called 'S3CE.gen'. Use build_debug for debug things. The built ROM will be called 'S3CE.Debug.gen'.

Quick start

Current issues

  1. S.C.E. uses Kosinski Plus algorithm, but Flex2 program does not support Kosinski Plus Module. Therefore, Flex2.json project file is partially useless. SonMapEd program does not support Kosinski Plus at all. You can only open uncompressed graphics.

Solution: Fork the program from Nichloya:

Alternative programs:

FAQ

How do I add levels from previous Sonic games?

How do I make different text for Title Card?

  • If you want to make a different text for Title Card, you need to create a file of letters from List.unc. This will be loaded before the level starts. You don't have to add the letters 'ENOZ' (ZONE) because those letters are already in VRAM. Then you have to create a mapping of your zone name in Map - Title Card.asm.

Where can I find other SMPS music?

Why don't mappings use MapMacros?

  • Unfortunately, not all programs support MapMacros, so I wanted to maintain compatibility with older programs. I don't want to just throw away SonMapEd. But there is support for MapMacros here, and you can use it if you want.

Why Macro Assembler AS?

Answer

AS

The Macro Assembler AS issues

Why does the ROM take so long to build?

  • The speed of the ROM build process depends entirely on the power of your computer. A high-performance machine will build the ROM quickly, while a slower one will take significantly more time. If you're a Linux user and you're using Wine and Windows batch script, that will affect build speed too.

  • Always specify jump sizes for instructions. Writing code without specifying jump sizes will significantly slow down the ROM build. The Macro Assembler AS will perform multiple passes until it can successfully build the ROM, which increases build time.

Example of problematic code:

		beq	sub_1234	; and any other branch instructions
		bsr	sub_1234
		bra	sub_1234
		jsr	sub_1234
		jmp	sub_1234
		lea	sub_1234,a1
		pea	sub_1234

Example of correct code:

		beq.s	sub_1234	; and any other branch instructions
		bsr.s	sub_1234
		bra.s	sub_1234
		jsr	(sub_1234).l
		jmp	(sub_1234).l
		lea	(sub_1234).l,a1
		pea	(sub_1234).l

Pay close attention to your code to avoid such issues.

Here you can find more information about Macro Assembler AS and errors:

For God's sake, always specify the jump sizes for instructions. Don't try to play around with Macro Assembler AS. Sometimes you may see random and meaningless errors just because you didn't specify the code size. You will try to fix something that wasn't actually broken, but these errors were caused only because you didn't specify the jump size in instruction.

Macro Assembler AS Passes

I've added console messages about Macro AS passes.

AS1

Try to keep 2 passes at all times. If you see 3, 4 or more passes, you should figure out what's causing the extra passes and try to fix it. This will save you a lot of time during the ROM build.

AS2

Credits

  • TheBlad768 — Project lead, sole programmer, S.C.E. Game Engine
  • Nichloya — Technical and other support.
  • pixelcat — New smooth ring graphics, act 3 and 4 numbers graphics.
  • FoxConED — Level Select font graphics.
  • Dolphman — Robotnik Head graphics.

Links

These projects are based on this source code

Check out the Sonic Retro source code