SonMapED isn't really used for plane mappings (aka, the mapping type for the title screen logo in Sonic 1). There are other programs for this which I will now list for you: PlaneED (outdated, similarly to SonMapED): http://info.sonicretro.org/PlaneEd Captain PlaneED (updated PlaneED): https://forums.sonicretro.org/index.php?threads/captain-planeed.35372/ SonPLN (part of the SonLVL suite): http://sonicresearch.org/community/index.php?threads/sonpln.5734/ DON'T try to decompress the file if you are using the above tools, they will load the Enigma-compressed mappings. This is likely where you went wrong with PlaneED, or you failed to use it properly (don't blame you, OG PlaneED is cumbersome at times).
Thank you for replying, but that isn't what I wanted to do. I didn't want to edit mappings for the title screen, I wanted to change how distinct tiles look (draw something on the logo, basically), for which I need a decompressed mapping file, so I wouldn't have to edit each tile one-by-one. Is there a way I can get a regular mapping file for the title screen?
Okay, has anyone here experience fixing the vertical scrolling for Hidden Palace? I wanna get the slope working properly.
I did something like that in Knuckles' Emerald Hunt. What I did was when you reach the section with the wrapping, you turn off water and set the camera Y bounds to -$100 and $800, then when you leave, set everything back to normal. This code goes under LevEvents_HPZ: Code (Text): cmpi.w #$1900,(Camera_X_pos).w blo.s + cmpi.w #$1C00,(Camera_X_pos).w bhs.s + move.w #-$100,(Camera_Min_Y_pos).w move.w #$800,(Camera_Max_Y_pos).w move.w #$800,(Camera_Max_Y_pos_now).w move.b #0,(Water_flag).w andi.w #$3FF,(Camera_BG_Y_pos).w rts + clr.w (Camera_Min_Y_pos).w move.w #$720,(Camera_Max_Y_pos).w move.w #$720,(Camera_Max_Y_pos_now).w move.b #1,(Water_flag).w There's also an issue with the background scrolling not accommodating vertical wrapping, which required the whole routine to be rewritten: Code (Text): SwScrl_HPZ: move.w (Camera_X_pos_diff).w,d4 ext.l d4 asl.l #6,d4 moveq #2,d6 bsr.w SetHorizScrollFlagsBG move.w (Camera_Y_pos_diff).w,d5 ext.l d5 asl.l #7,d5 moveq #6,d6 bsr.w SetVertiScrollFlagsBG move.w (Camera_BG_Y_pos).w,(Vscroll_Factor_BG).w lea (TempArray_LayerDef).w,a1 move.w (Camera_X_pos).w,d2 neg.w d2 move.w d2,d0 asr.w #1,d0 move.w #7,d1 - move.w d0,(a1)+ dbf d1,- move.w d2,d0 asr.w #3,d0 sub.w d2,d0 ext.l d0 asl.l #3,d0 divs.w #8,d0 ext.l d0 asl.l #4,d0 asl.l #8,d0 moveq #0,d3 move.w d2,d3 asr.w #1,d3 lea (TempArray_LayerDef+$60).w,a2 swap d3 add.l d0,d3 swap d3 move.w d3,(a1)+ move.w d3,(a1)+ move.w d3,(a1)+ move.w d3,-(a2) move.w d3,-(a2) move.w d3,-(a2) swap d3 add.l d0,d3 swap d3 move.w d3,(a1)+ move.w d3,(a1)+ move.w d3,-(a2) move.w d3,-(a2) swap d3 add.l d0,d3 swap d3 move.w d3,(a1)+ move.w d3,-(a2) swap d3 add.l d0,d3 swap d3 move.w d3,(a1)+ move.w d3,-(a2) move.w (Camera_BG_X_pos).w,d0 neg.w d0 move.w #$19,d1 - move.w d0,(a1)+ dbf d1,- adda.w #$E,a1 move.w d2,d0 asr.w #1,d0 move.w #$17,d1 - move.w d0,(a1)+ dbf d1,- moveq #$7E,d3 lea (TempArray_LayerDef).w,a2 move.w (Camera_BG_Y_pos).w,d4 move.w d4,d2 lsr.w #3,d4 and.w d3,d4 lea (Horiz_Scroll_Buf).w,a1 move.w #bytesToXcnt(Horiz_Scroll_Buf_End-Horiz_Scroll_Buf,$40),d1 move.w #((Horiz_Scroll_Buf_End-Horiz_Scroll_Buf)/4)-$10,d5 move.w (Camera_X_pos).w,d0 neg.w d0 swap d0 andi.w #$F,d2 add.w d2,d5 add.w d2,d2 move.w (a2,d4.w),d0 addq.w #2,d4 and.w d3,d4 jmp +(pc,d2.w) ;---------------------------------------------------------------------------- - subi.w #$10,d5 move.w (a2,d4.w),d0 addq.w #2,d4 and.w d3,d4 + rept 16 move.l d0,(a1)+ endm dbf d1,- subq.w #1,d5 bcs.s + move.w (a2,d4.w),d0 - move.l d0,(a1)+ dbf d5,- + rts
What's BytesToXcnt? I can translate the others to raw entries for the Xenowhirl edit but I this seems to be new.
Still not recognised. I tried it's byte equivalent in Xenowhirl with (($400-Horiz_Scroll_Buf)/$40)-1 but it just froze the game upon loading the level.
Still just freezes the game. Hold on, is this right? Code (Text): ; =========================================================================== ; unused... ; loc_CBA0: SwScrl_HPZ: move.w ($FFFFEEB0).w,d4 ext.l d4 asl.l #6,d4 moveq #2,d6 bsr.w sub_D904 move.w ($FFFFEEB2).w,d5 ext.l d5 asl.l #7,d5 moveq #6,d6 bsr.w sub_D938 move.w ($FFFFEE0C).w,($FFFFF618).w lea ($FFFFA800).w,a1 move.w (Camera_X_pos).w,d2 neg.w d2 move.w d2,d0 asr.w #1,d0 move.w #7,d1 - move.w d0,(a1)+ dbf d1,- move.w d2,d0 asr.w #3,d0 sub.w d2,d0 ext.l d0 asl.l #3,d0 divs.w #8,d0 ext.l d0 asl.l #4,d0 asl.l #8,d0 moveq #0,d3 move.w d2,d3 asr.w #1,d3 lea ($FFFFA860).w,a2 swap d3 add.l d0,d3 swap d3 move.w d3,(a1)+ move.w d3,(a1)+ move.w d3,(a1)+ move.w d3,-(a2) move.w d3,-(a2) move.w d3,-(a2) swap d3 add.l d0,d3 swap d3 move.w d3,(a1)+ move.w d3,(a1)+ move.w d3,-(a2) move.w d3,-(a2) swap d3 add.l d0,d3 swap d3 move.w d3,(a1)+ move.w d3,-(a2) swap d3 add.l d0,d3 swap d3 move.w d3,(a1)+ move.w d3,-(a2) move.w ($FFFFEE08).w,d0 neg.w d0 move.w #$19,d1 - move.w d0,(a1)+ dbf d1,- adda.w #$E,a1 move.w d2,d0 asr.w #1,d0 move.w #$17,d1 - move.w d0,(a1)+ dbf d1,- moveq #$7E,d3 lea ($FFFFA800).w,a2 move.w ($FFFFEE0C).w,d4 move.w d4,d2 lsr.w #3,d4 and.w d3,d4 lea (Horiz_Scroll_Buf).w,a1 move.w #(($3F-Horiz_Scroll_Buf)/$40)-1,d1 move.w #(($3F-Horiz_Scroll_Buf)/4)-$10,d5 move.w (Camera_X_pos).w,d0 neg.w d0 swap d0 andi.w #$F,d2 add.w d2,d5 add.w d2,d2 move.w (a2,d4.w),d0 addq.w #2,d4 and.w d3,d4 jmp +(pc,d2.w) ;---------------------------------------------------------------------------- - subi.w #$10,d5 move.w (a2,d4.w),d0 addq.w #2,d4 and.w d3,d4 + rept 16 move.l d0,(a1)+ endm dbf d1,- subq.w #1,d5 bcs.s + move.w (a2,d4.w),d0 - move.l d0,(a1)+ dbf d5,- + rts ; =========================================================================== ; loc_CC66: SwScrl_OOZ: move.w ($FFFFEEB0).w,d0 ext.l d0
No, just replace Horiz_Scroll_Buf_End-Horiz_Scroll_Buf with $400 on both lines. I actually missed the second one there.
I think that got it working. Thanx. :D The background seems to cut off in places where it transitions, though since this is similar to a previous issue when going to far in the level, I take it it's a case of adding background chunks in plane B to loop it properly.
Hey guys, me again. You know how in Sonic Mania, when you go down a slope or round a loop, the sprites rotate real smoothly? I'm trying to replicate this in a hack, so is there a way I could replace separate tilted sprites with real-time rotation in game?
Extremely unlikely. The amount of processing power required to smoothly rotate sprites and convert them back into tiles is way too much for the CPU to also run the rest of the game.
You're probably right. Come to think O it, there's a tool called Rotsprite, which allows you to rotate sprites accurately. So, if I just create enough rotational sprites to make it seem smooth, that should be enough for Mania quality stuff.
Second question from me in a single fucking week: Remember that old engine Saxman made? The Boom Engine? Yeah, I wanna use that again, but the download link for the SonED2 files is gone. Anybody still got them files?