Atención paja mental sin conocer nada de programación de videojuegos (sí de programación, cosa a la que me dedico desde hace más de 15 años)
Pienso que básicamente, si los cálculos que necesitas hacer para mover los elementos de pantalla, llevan más del tiempo máximo para el frame (o el número de frames "usual" en que se mueve el objeto) el juego no podrá mover los elementos, por lo que veremos "las ralentizaciones". Es decir, pasan los frames y la CPU está ocupada intentando mover todo, sin ser capaz, por lo que cada elemento se mueve menos veces de las "normales" y por tanto, van mas despacio.
El tema de la memoria entiendo que en todo sistema cerrado se precalcula, es decir, se sabe de antemano cuantos elementos máximos caben en la memoria y no se "instancian" más, y si se hiciese, se sobrescribiría uno existente. En estos sistemas de 16 bits, se trabajaba con direcciones de memoria específicas, pues en general se programaba en ensamblador, que yo sepa.
Cuanto más compleja quieras hacer la IA, más ciclos de reloj necesitarás, y por tanto menos IA's a la vez podrás calcular. En un contexto de 16 bits, yo vería una bala que va recta como una ia, tienes que calcular donde se mueve cada frame, aunque sea en línea recta, en un sistema de 8 o 16 bits, no es baladí, y no puedes mover infinitas balas (aunque sí "muchas", claro) incluso en línea recta. Si tiene que hacer sinusoidales, etc, ya empiezas a necesitar más cálculos y/o memoria con precalculos, lo que limita el número máximo de balas.
Si le sumas que, pongamos como ejemoplo, la bala "explota" al acercarse al jugador, además tienes que comprobar si cada bala está cerca o no, y pese a que seas muy ingenioso al hacerlo, no va a ser gratis, limitando de nuevo el número máximo de balas antes de que la cpu no pueda calcular todo antes de pintar el siguiente frame.
Así lo entiendo yo.
Saludos