On most retro platforms (including the Neo-Geo), there is no hardware support for floating point operations. So they are done in software, and are a lot slower than usual integer operations. It's best to avoid floating point entirely if you need performance.
But there's a way to achieve what you're looking and still run fast. Basically, you use integers, but change the units. For example, instead of storing sprite coordinates in pixels, you could store them in units of 1/16 pixel. So to move the sprite left by half a pixel, you'd do x_pos = x_pos - 8
Of course, the Neo-Geo hardware expects coordinates in pixels, so when setting up the sprite position, you have to divide x_pos by 16.
A good choice for the scale is 1 / 2n
, i.e. 1/2, 1/4, 1/8, etc. With this, instead of having to multiply/divide by 2n
, you can do a left/right bit-shift by n
bits instead. On the 68000, this is much faster.
Keep in mind that this reduces the range of numbers that can be used. A 16-bit integer can go from -32768 to +32767, but if your scale is 1/16, it means your actual value will be between -2048 and 2047.9375.
If you need more details, search for "fixed-point arithmetic"