2d – modern techniques for drawing pixels?

How do game engines handle and draw pixels in a given display?

As a personal project / exercise I had started to develop a simple game engine written in Java, but I came up with the question of a way to efficiently and quickly update the pixels in the game window.

Since I had decided to model this engine on the NES model (which has a resolution of 256×240 at 60 Hz, if I remember rightly) 6502 chip, I quickly created an array of pixels with that resolution.

Although I already thought that traversing the array and drawing the pixels in that loop was not the best solution for this task, it turned out to be worse than I thought.

My method could only produce 100 frames per second at 30% CPU usage and 40% GPU.

How did the early programmers of the NES / 6502 chip manage to draw this ad, given the limited power of the systems, or is this really the most efficient way to tackle this problem?