Jump to content
A 2021 backup has been restored. Forums are closed and work in progress. Join our Discord server for more updates! ×
SoaH City Message Board

The Taxman

Members
  • Posts

    90
  • Joined

  • Last visited

  • Days Won

    3

Everything posted by The Taxman

  1. Ok, someone pointed this topic out to me, and I checked every single point of contact I have. No messages from you ever mate. FYI : I designed Desert Dazzle and Final Fever during the Sonic CD (2011)'s development. That particular screenshot is property of SEGA as it was included in the final product. I will not give permission to use this, just as SEGA never gives you permission to use other graphics. Whether you choose to ignore intellectual property rights is your call. It would be a shame to have my work recognized by an inferior copy though. (less than half of the artwork is even visible to you, nor the actual level design). Why not spend some extra time and come up with your own desert level?
  2. Oh hey, people talking about me! I'm not involved in Sonic 4 iPhone or otherwise so uh... sorry? I am working on some awesome stuff though, which I can't discuss publicly (NDA) so sorry again? You should see at least one of the things I'm working on this year though so stay tuned.
  3. Either that, or Eggman turned to pushing some mad gear on the streets after "budget cuts"
  4. There's also GameSalad http://gamesalad.com/ It's free, so it can't hurt to give it a try.
  5. Here's a simple way to do boss collision if Player's CollisionBox Collides with the Boss' Collision Box: Player.XSpeed=(Player.XPos-Boss.XPos)*BounceBackStrength Player.YSpeed=(Player.YPos-Boss.YPos)*BounceBackStrength end if BounceBackStrength is usually a fractional value, since the speed would be too great otherwise. Play around with the value to get the optimum bouncing speed.
  6. The Polites are playing this friday with The Greasers at Royal Derby Hotel - 446 Brunswick Street actually heh
  7. Hey gang, I wasn't going to make this public for a little while, but given SEGA's latest blog post, and their upcoming discussions on wednesday it's time for some guerilla marketing! Recently, I've been in contact with SEGA in regards to doing an enhanced port of Sonic CD for the iPhone. I put together a proof of concept demo and video demonstrating the game fully functional on Apple's iDevice http://www.christianwhitehead.com/soniccd/view.html http://www.youtube.com/watch?v=4teDIp32mXI The question is, do YOU want it? Let SEGA know. This is more than just one of their crappy emulator ports, we're talking iPhone exclusive enhancements and features (I've got some cool plans) Discuss
  8. The Flash version of MMF, works on my mac though, so there isn't any Windows stuff going on here. Like I said, Clickteam most likely took the engine code of MMF and used alchemy to create a flash implementation of it. Then, they'd just have a template swf file that they could insert your mmf game data via the new swf export option. http://labs.adobe.com/technologies/alchemy/
  9. I'd say they're probably using Flash's Alchemy technology to run MMF inside flash. Alchemy allows C/C++ code to be compiled for the Flash JIT stuff. So instead of saving an exe file, the swf export option would generate a swf with the relevant code for Alchemy.
  10. It's being done by sumo digital, who also did that superstars tennis game
  11. Nah, the rotation is handled with sin and cos functions: //Draw the 4th Pair of Stars TempValue2=Object.Angle2 TempValue2+=116 Cos(TempValue0,TempValue2) Sin(TempValue1,TempValue2) TempValue0<<=11 TempValue1<<=11 ArrayPos0=1 TempValue0+=StarPos7[+ArrayPos0] ArrayPos0=2 TempValue1+=StarPos7[+ArrayPos0] DrawSpriteXY(Object.Stars4,TempValue0,TempValue1) TempValue2=Object.Angle2 TempValue2+=372 Cos(TempValue0,TempValue2) Sin(TempValue1,TempValue2) TempValue0<<=11 TempValue1<<=11 ArrayPos0=1 TempValue0+=StarPos7[+ArrayPos0] ArrayPos0=2 TempValue1+=StarPos7[+ArrayPos0] TempValue2=Object.Stars4 TempValue2+=3 DrawSpriteXY(TempValue2,TempValue0,TempValue1) //Draw the 3rd Pair of Stars Cos(TempValue0,Object.Angle2) Sin(TempValue1,Object.Angle2) TempValue0<<=11 TempValue1<<=11 ArrayPos0=1 TempValue0+=StarPos5[+ArrayPos0] ArrayPos0=2 TempValue1+=StarPos5[+ArrayPos0] DrawSpriteXY(Object.Stars3,TempValue0,TempValue1) TempValue2=Object.Angle2 TempValue2+=256 Cos(TempValue0,TempValue2) Sin(TempValue1,TempValue2) TempValue0<<=11 TempValue1<<=11 ArrayPos0=1 TempValue0+=StarPos5[+ArrayPos0] ArrayPos0=2 TempValue1+=StarPos5[+ArrayPos0] TempValue2=Object.Stars3 TempValue2+=5 DrawSpriteXY(TempValue2,TempValue0,TempValue1) //Draw the 2nd Pair of Stars TempValue2=Object.Angle2 TempValue2+=168 Cos(TempValue0,TempValue2) Sin(TempValue1,TempValue2) TempValue0<<=11 TempValue1<<=11 ArrayPos0=1 TempValue0+=StarPos3[+ArrayPos0] ArrayPos0=2 TempValue1+=StarPos3[+ArrayPos0] DrawSpriteXY(Object.Stars2,TempValue0,TempValue1) TempValue2=Object.Angle2 TempValue2+=424 Cos(TempValue0,TempValue2) Sin(TempValue1,TempValue2) TempValue0<<=11 TempValue1<<=11 ArrayPos0=1 TempValue0+=StarPos3[+ArrayPos0] ArrayPos0=2 TempValue1+=StarPos3[+ArrayPos0] TempValue2=Object.Stars2 TempValue2+=3 DrawSpriteXY(TempValue2,TempValue0,TempValue1) //Draw the 1st Pair of Stars Cos(TempValue0,Object.Angle1) Sin(TempValue1,Object.Angle1) TempValue0<<=11 TempValue1<<=11 TempValue0+=Player.XPos TempValue1+=Player.YPos DrawSpriteXY(Object.Stars1,TempValue0,TempValue1) TempValue2=Object.Angle1 TempValue2+=256 Cos(TempValue0,TempValue2) Sin(TempValue1,TempValue2) TempValue0<<=11 TempValue1<<=11 TempValue0+=Player.XPos TempValue1+=Player.YPos TempValue2=Object.Stars3 TempValue2+=5 DrawSpriteXY(Object.Stars1,TempValue0,TempValue1) [/CODE] The radius of the rotation stars is 16 pixels so in mmf it'd look more like this Star_XPosition = Star_CentreX + ( cos(RotationAngle) * 16 ) Star_YPosition = Star_CentreY + ( sin(RotationAngle) *16 ) Star_CentreX and Star_CentreY are the buffered positions of PlayerX and PlayerY. The older the buffer data, the more delayed the star trailing effect is
  12. Bulky? This one was a fairly basic sized script XD No you wouldn't be able to port that code directly, apart from the fact the script syntax is my own, the Retro Engine works very differently to the object system of MMF. For example, MMF would need each star twinkle to be a separate active object, where as using the manual drawing methods in the Retro Engine, the stars are drawn with one script. It should still be possible to duplicate the algorithm though. It's just not laid out in an obvious manner, so yeah sorry. I just can't be bothered going into mmf and dealing with it XD
  13. Here's the script file for how it's done in Retro-Sonic XG... bear in mind it's using fixed point math instead of floats hence the bit shifting in areas. It might be a little complex though so sorry if it's no help //---------Retro Sonic XG Invincibility Stars---------// //----Scripted by Christian Whitehead "The Taxman"----// //----Player Directions----// #alias 1 : FACING_LEFT #alias 0 : FACING_RIGHT #alias Object.Value0 : Object.Angle1 #alias Object.Value1 : Object.Angle2 #alias Object.Value2 : Object.Stars1 #alias Object.Value3 : Object.Stars2 #alias Object.Value4 : Object.Stars3 #alias Object.Value5 : Object.Stars4 #alias Object.Value0 : StarPos0 #alias Object.Value1 : StarPos1 #alias Object.Value2 : StarPos2 #alias Object.Value3 : StarPos3 #alias Object.Value4 : StarPos4 #alias Object.Value5 : StarPos5 #alias Object.Value6 : StarPos6 #alias Object.Value7 : StarPos7 sub ObjectMain if Object.State==0 //Set the Star Positions ArrayPos0=1 StarPos7[+ArrayPos0]=Player.XPos StarPos6[+ArrayPos0]=Player.XPos StarPos5[+ArrayPos0]=Player.XPos StarPos4[+ArrayPos0]=Player.XPos StarPos3[+ArrayPos0]=Player.XPos StarPos2[+ArrayPos0]=Player.XPos StarPos1[+ArrayPos0]=Player.XPos StarPos0[+ArrayPos0]=Player.XPos ArrayPos0=2 StarPos7[+ArrayPos0]=Player.YPos StarPos6[+ArrayPos0]=Player.YPos StarPos5[+ArrayPos0]=Player.YPos StarPos4[+ArrayPos0]=Player.YPos StarPos3[+ArrayPos0]=Player.YPos StarPos2[+ArrayPos0]=Player.YPos StarPos1[+ArrayPos0]=Player.YPos StarPos0[+ArrayPos0]=Player.YPos Object.Angle1=180 Object.Angle2=0 Object.Stars4=20 Object.Stars3=0 Object.Stars2=32 Object.Stars1=44 Object.State=1 end if end sub sub ObjectDraw //Update the Star Frames Object.Stars4++ if Object.Stars4==26 Object.Stars4=20 end if Object.Stars3++ if Object.Stars3==10 Object.Stars3=0 end if Object.Stars2++ if Object.Stars2==38 Object.Stars2=32 end if Object.Stars1++ if Object.Stars1==56 Object.Stars1=44 end if //Update the Star Positions ArrayPos0=1 StarPos7[+ArrayPos0]=StarPos6[+ArrayPos0] StarPos6[+ArrayPos0]=StarPos5[+ArrayPos0] StarPos5[+ArrayPos0]=StarPos4[+ArrayPos0] StarPos4[+ArrayPos0]=StarPos3[+ArrayPos0] StarPos3[+ArrayPos0]=StarPos2[+ArrayPos0] StarPos2[+ArrayPos0]=StarPos1[+ArrayPos0] StarPos1[+ArrayPos0]=StarPos0[+ArrayPos0] StarPos0[+ArrayPos0]=Player.XPos ArrayPos0=2 StarPos7[+ArrayPos0]=StarPos6[+ArrayPos0] StarPos6[+ArrayPos0]=StarPos5[+ArrayPos0] StarPos5[+ArrayPos0]=StarPos4[+ArrayPos0] StarPos4[+ArrayPos0]=StarPos3[+ArrayPos0] StarPos3[+ArrayPos0]=StarPos2[+ArrayPos0] StarPos2[+ArrayPos0]=StarPos1[+ArrayPos0] StarPos1[+ArrayPos0]=StarPos0[+ArrayPos0] StarPos0[+ArrayPos0]=Player.YPos if Player.Direction==FACING_RIGHT Object.Angle1+=144 if Object.Angle1>511 Object.Angle1-=512 end if Object.Angle2+=16 if Object.Angle2>511 Object.Angle2-=512 end if else Object.Angle1-=144 if Object.Angle1<0 Object.Angle1+=512 end if Object.Angle2-=16 if Object.Angle2<0 Object.Angle2+=512 end if end if //Draw the 4th Pair of Stars TempValue2=Object.Angle2 TempValue2+=116 Cos(TempValue0,TempValue2) Sin(TempValue1,TempValue2) TempValue0<<=11 TempValue1<<=11 ArrayPos0=1 TempValue0+=StarPos7[+ArrayPos0] ArrayPos0=2 TempValue1+=StarPos7[+ArrayPos0] DrawSpriteXY(Object.Stars4,TempValue0,TempValue1) TempValue2=Object.Angle2 TempValue2+=372 Cos(TempValue0,TempValue2) Sin(TempValue1,TempValue2) TempValue0<<=11 TempValue1<<=11 ArrayPos0=1 TempValue0+=StarPos7[+ArrayPos0] ArrayPos0=2 TempValue1+=StarPos7[+ArrayPos0] TempValue2=Object.Stars4 TempValue2+=3 DrawSpriteXY(TempValue2,TempValue0,TempValue1) //Draw the 3rd Pair of Stars Cos(TempValue0,Object.Angle2) Sin(TempValue1,Object.Angle2) TempValue0<<=11 TempValue1<<=11 ArrayPos0=1 TempValue0+=StarPos5[+ArrayPos0] ArrayPos0=2 TempValue1+=StarPos5[+ArrayPos0] DrawSpriteXY(Object.Stars3,TempValue0,TempValue1) TempValue2=Object.Angle2 TempValue2+=256 Cos(TempValue0,TempValue2) Sin(TempValue1,TempValue2) TempValue0<<=11 TempValue1<<=11 ArrayPos0=1 TempValue0+=StarPos5[+ArrayPos0] ArrayPos0=2 TempValue1+=StarPos5[+ArrayPos0] TempValue2=Object.Stars3 TempValue2+=5 DrawSpriteXY(TempValue2,TempValue0,TempValue1) //Draw the 2nd Pair of Stars TempValue2=Object.Angle2 TempValue2+=168 Cos(TempValue0,TempValue2) Sin(TempValue1,TempValue2) TempValue0<<=11 TempValue1<<=11 ArrayPos0=1 TempValue0+=StarPos3[+ArrayPos0] ArrayPos0=2 TempValue1+=StarPos3[+ArrayPos0] DrawSpriteXY(Object.Stars2,TempValue0,TempValue1) TempValue2=Object.Angle2 TempValue2+=424 Cos(TempValue0,TempValue2) Sin(TempValue1,TempValue2) TempValue0<<=11 TempValue1<<=11 ArrayPos0=1 TempValue0+=StarPos3[+ArrayPos0] ArrayPos0=2 TempValue1+=StarPos3[+ArrayPos0] TempValue2=Object.Stars2 TempValue2+=3 DrawSpriteXY(TempValue2,TempValue0,TempValue1) //Draw the 1st Pair of Stars Cos(TempValue0,Object.Angle1) Sin(TempValue1,Object.Angle1) TempValue0<<=11 TempValue1<<=11 TempValue0+=Player.XPos TempValue1+=Player.YPos DrawSpriteXY(Object.Stars1,TempValue0,TempValue1) TempValue2=Object.Angle1 TempValue2+=256 Cos(TempValue0,TempValue2) Sin(TempValue1,TempValue2) TempValue0<<=11 TempValue1<<=11 TempValue0+=Player.XPos TempValue1+=Player.YPos TempValue2=Object.Stars3 TempValue2+=5 DrawSpriteXY(Object.Stars1,TempValue0,TempValue1) end sub sub ObjectStartup LoadSpriteSheet("Global/Items.gif") //Invincibility Star Frames SpriteFrame(0,0,1,1,118,304) SpriteFrame(-1,-1,3,3,117,303) SpriteFrame(-3,-3,7,7,117,307) SpriteFrame(-7,-7,15,15,125,303) SpriteFrame(-10,-10,21,21,117,319) SpriteFrame(-15,-15,31,31,143,332) SpriteFrame(-10,-10,21,21,117,319) SpriteFrame(-7,-7,15,15,125,303) SpriteFrame(-3,-3,7,7,117,307) SpriteFrame(-1,-1,3,3,117,303) SpriteFrame(0,0,1,1,118,304) SpriteFrame(-1,-1,3,3,117,303) SpriteFrame(-3,-3,7,7,117,307) SpriteFrame(-7,-7,15,15,125,303) SpriteFrame(-10,-10,21,21,117,319) SpriteFrame(-15,-15,31,31,143,332) SpriteFrame(-10,-10,21,21,117,319) SpriteFrame(-7,-7,15,15,125,303) SpriteFrame(-3,-3,7,7,117,307) SpriteFrame(-1,-1,3,3,117,303) //Frame 20 SpriteFrame(0,0,1,1,118,304) SpriteFrame(-1,-1,3,3,117,303) SpriteFrame(-3,-3,7,7,117,307) SpriteFrame(-7,-7,15,15,125,303) SpriteFrame(-3,-3,7,7,117,307) SpriteFrame(-1,-1,3,3,117,303) SpriteFrame(0,0,1,1,118,304) SpriteFrame(-1,-1,3,3,117,303) SpriteFrame(-3,-3,7,7,117,307) SpriteFrame(-7,-7,15,15,125,303) SpriteFrame(-3,-3,7,7,117,307) SpriteFrame(-1,-1,3,3,117,303) //Frame 32 SpriteFrame(-3,-3,7,7,117,307) SpriteFrame(-7,-7,15,15,125,303) SpriteFrame(-10,-10,21,21,117,319) SpriteFrame(-15,-15,31,31,143,332) SpriteFrame(-10,-10,21,21,117,319) SpriteFrame(-7,-7,15,15,125,303) SpriteFrame(-3,-3,7,7,117,307) SpriteFrame(-7,-7,15,15,125,303) SpriteFrame(-10,-10,21,21,117,319) SpriteFrame(-15,-15,31,31,143,332) SpriteFrame(-10,-10,21,21,117,319) SpriteFrame(-7,-7,15,15,125,303) //Frame 44 SpriteFrame(-15,-15,31,31,143,332) SpriteFrame(-3,-3,7,7,117,307) SpriteFrame(-7,-7,15,15,125,303) SpriteFrame(-3,-3,7,7,117,307) SpriteFrame(-3,-3,7,7,117,307) SpriteFrame(-7,-7,15,15,125,303) SpriteFrame(-3,-3,7,7,117,307) SpriteFrame(-15,-15,31,31,143,332) SpriteFrame(-3,-3,7,7,117,307) SpriteFrame(-7,-7,15,15,125,303) SpriteFrame(-7,-7,15,15,125,303) SpriteFrame(-3,-3,7,7,117,307) end sub sub RSDK LoadSpriteSheet("Global/Items.gif") SetEditorIcon(Icon0,SingleIcon,-15,-15,31,31,143,332) end sub [/CODE]
  14. Actually, the trailing effect is achieved by having a buffer of x,y positions for the centre of the rotating circle of stars. Each frame, the x and y position of the player is copied to the next buffer position. Retro Sonic XG has the Sonic2/3 invincibility stars, I could post my script file for it, but you might have trouble reinterpreting it for mmf
  15. I'd disagree, but then I realized we're talking about MMF2 here I'd say go for larger tiles for the most part, and use a light sprinking of small ones where it's really needed
  16. Not going to happen sorry, the DS is a whole different kettle of fish. It'd require massive reworking to fit within how the DS does tiled modes etc, and I have no intention of doing that.
  17. It's funny, I play like that all time. I think it comes from testing stuff in my own games. Moving around, marveling at what's achieved on the screen type deal. Of course, it's usually after I've beaten a game for the first time Sonic Unleashed for example, I pretty much rushed to get the bare minimum of coins to complete the game, and now I find it's enjoyable just to pick any daytime level or hub even and just cruise around for novelty.
  18. Ok, for all the Dreamcast fans/nuts out there, I've decided to go ahead with a DC port for RSXG. It won't be out the same time as the PC/Mac/Wii version though since it requires more tweaking than a Vanilla port. As with the previous DC port, I have to retool the graphics to use hardware rendering instead of my own software library in order to get the full 60fps speed, and there will probably be minor graphics differences as a result. But hey think of it like Earthworm Jim 2, the graphics for that game looked different between Megadrive/Snes/Saturn etc.
  19. No worries, your screens look nice so far, I'm looking forward to see what you do with the Special Stage too!
  20. Hey mate, do you mind using a different lamppost sprite? Because that's the XG one and it was made specifically for our game.
  21. Out of the original Retro-Sonic, 3 and a half levels have made the merge. The 'half' is because Dust Hill zone is somewhat similar to XG's Desert Dash. The Retro-Sonic levels have been completely redesigned for XG though. As for the old Dreamcast demo, I don't have it on hand since I've just recently upgraded my desktop and only copied over stuff I wanted. I'd have to look on the old one to see if it's there. You can just use the files from the existing image though can't you?
  22. Yeah ok I may as well spill the beans... Retro Sonic is coming to the ColecoVision!
  23. What exactly do you mean by 'the basic Retro-Sonic'? If you're talking about the game it got merged with XG, they're one and the same now. If you're talking about the engine, It's always priority one, since I'm using it to make the game Don't you worry about ports though... way ahead of you. Although dreamcast is becoming less feasible, I'm pushing the capabilities of my software rendering library harder now, and since the DC is too slow to do software rendering at 60fps I'd have to go the hardware rendering route as I did with the last port. However, I don't want to compromise the neato effects that are in RSXG... so I think you'll most likely be playing it on a certain remote swingin' system
  24. Yeah, I wouldn't expect to see the RSDK around for a while. My focus is on RSXG, since I'm the leading man behind it now. Euan has actually stepped out, since he's too busy to work on it anymore (so it's actually the merger that saved XG from cancellation in a way ;P). Not that he hasn't already done his share already, with all the zone art that came with the merger. Also, there's no written documentation with the RSDK at this point. The Nexus gang have learnt it pretty much direct contact with me. Their testing has also given me feedback as to how I could make additions/improvements along the way. If I had to do the same with anyone that wanted to use it, I'd have no time whatsoever. So yeah, perhaps later on... but don't hold your breath for it just yet.
×
×
  • Create New...